This document is intended only to assist the reader in the use of the product. ARM Limited shall not be liable for any loss or damage arising from the use of any information in this document, or any error or omission in such information, or any incorrect use of the product.
Page 17
Processor core register set showing banked registers ............. 2-21 Figure 2-8 Register organization in Thumb state ..................2-22 Figure 2-9 ARM state and Thumb state registers relationship ..............2-23 Figure 2-10 Program status register ......................2-24 Figure 2-11 LDREXB instruction ........................2-30 Figure 2-12 STREXB instructions ........................
Preface About this book This book is for ARM1176JZF-S processor. In this manual the generic term processor means the ARM1176JZF-S processor. Product revision status The rnpn identifier indicates the revision status of the product described in this book, where: Identifies the major revision of the product.
Page 23
Appendix A Signal Descriptions Read this for a description of the processor signals. Appendix B Summary of ARM1136JF-S and ARM1176JZF-S Processor Differences Read this for a summary of the differences between the ARM1136JF-S ™ ARM1176JZF-S processors.
• ARM Architecture Reference Manual (ARM DDI 0406) Note The ARM DDI 0406 edition of the ARM Architecture Reference Manual (the ARM ARM) incorporates the supplements to the previous ARM ARM, including the Security Extensions supplement. •...
Preface Feedback ARM welcomes feedback on this product and its documentation. Feedback on this product If you have any comments or suggestions about this product, contact your supplier and give: • The product name. • The product revision or version.
Page 27
Chapter 1 Introduction This chapter introduces the ARM1176JZF-S processor and its features. It contains the following sections: • About the processor on page 1-2 • Extensions to ARMv6 on page 1-3 • TrustZone security extensions on page 1-4 • ARM1176JZF-S architecture with Jazelle technology on page 1-6 •...
Introduction About the processor The ARM1176JZF-S processor incorporates an integer core that implements the ARM11 ARM ™ architecture v6. It supports the ARM and Thumb instruction sets, Jazelle technology to enable direct execution of Java bytecodes, and a range of SIMD DSP instructions that operate on 16-bit or 8-bit data values in 32-bit registers.
CP15 Register 1. • Revised use of AP bits. In the ARM1176JZF-S processor the APX and AP[1:0] encoding b111 is Privileged or User mode read only access. AP[0] indicates an abort type, Access Bit fault, when CP15 c1[29] is 1.
The ARM1176JZF-S processor supports TrustZone security extensions to provide a secure environment for software. This section summarizes processor elements that TrustZone uses. For details of TrustZone, see the ARM Architecture Reference Manual.
• the 8-bit Java bytecodes used in Jazelle state. For details of both the ARM and Thumb instruction sets, see the ARM Architecture Reference Manual. For full details of the ARM1176JZF-S Java instruction set, see the Jazelle V1 Architecture Reference Manual.
Page 33
Software execution Bytecodes that are too complex to execute directly in hardware are executed in software. An ARM register is used to access a table of exception handlers to handle these particular bytecodes. A complete list of the ARM1176JZF-S processor-supported Java bytecodes and their corresponding hardware or software instructions is in the Jazelle V1 Architecture Reference Manual.
Figure 1-1 ARM1176JZF-S processor block diagram 1.5.1 Integer core The ARM1176JZF-S processor is built around the ARM11 integer core. It is an implementation of the ARMv6 architecture, that runs the ARM, Thumb, and Java instruction sets. The processor ™ contains EmbeddedICE-RT logic and a JTAG debug interface to enable hardware debuggers to communicate with the processor.
Only load, store, and swap instructions can access data from memory. Conditional execution The processor conditionally executes nearly all ARM instructions. You can decide if the condition code flags, Negative, Zero, Carry, and Overflow, are updated according to their result.
Page 36
Introduction • Secure Monitor. Thumb instruction set The Thumb instruction set contains a subset of the most commonly-used 32-bit ARM instructions encoded into 16-bit wide opcodes. This reduces the amount of memory required for instruction storage. DSP instructions The DSP extensions to the ARM instruction set provide: •...
So, for example, if you configure an ITCM size of 16KB you get two ITCMs, each of size 8KB. Table 1-1 lists all possible TCM configurations. See Configurable options on page 1-25 for more information about configuring your ARM1176JZF-S implementation. Table 1-1 TCM configurations Configured TCM size...
The MMU includes a 4KB page mapping size to enable a smaller RAM and ROM footprint for embedded systems and operating systems such as WindowsCE that have many small mapped objects. The ARM1176JZF-S processor implements the Fast Context Switch Extension (FCSE) and high vectors extension that are required to run Microsoft WindowsCE.
Accesses to these memory regions are routed to the peripheral port instead of to the data read-write ports. See Chapter 8 Level Two Interface for more details. 1.5.6 Coprocessor interface The ARM1176JZF-S processor connects to external coprocessors through the coprocessor interface. This interface supports all ARM coprocessor instructions: • • LDCL •...
Page 45
The VFP coprocessor supports floating point arithmetic operations and is a functional block within the ARM1176JZF-S processor. The VFP coprocessor is mapped as coprocessor numbers 10 and 11. Software can determine whether the VFP is present by the use of the Coprocessor Access Control Register.
Page 47
Vectored Interrupt Controller port The core has a dedicated port that enables an external interrupt controller, such as the ARM Vectored Interrupt Controller (VIC), to supply a vector address along with an interrupt request (IRQ) signal.
Extensive use of gated clocks and gates to disable inputs to unused functional blocks. Because of this, only the logic actively in use to perform a calculation consumes any dynamic power. • Optionally supports IEM. The ARM1176JZF-S is separated into three different blocks to support three different power domains: — all the RAMS the core logic that is clocked by CLKIN and FREECLKIN —...
Number of TCM blocks depends only on the size of the TCM RAM. In addition, the form of the BIST solution for the RAM blocks in the ARM1176JZF-S design is determined when the processor is implemented. For details, see the ARM11 Memory Built-In Self Test Controller Technical Reference Manual.
Second stage of data cache access. WBls Write back of data from the Load Store Unit. By overlapping the various stages of operation, the ARM1176JZF-S processor maximizes the clock rate achievable to execute each instruction. It delivers a throughput approaching one instruction for each cycle.
Table 1-6 lists a key to the ARM and Thumb instruction set tables. The ARM1176JZF-S processor implements the ARM architecture v6 with ARM Jazelle technology. For a description of the ARM and Thumb instruction sets, see the ARM Architecture Reference Manual. Contact ARM Limited for complete descriptions of all instruction sets.
0 to 31. • must be in the range 1 to 32. ASR #N 1.10.1 Extended ARM instruction set summary Table 1-7 summarizes the extended ARM instruction set. Table 1-7 ARM instruction set summary Operation Assembler Arithmetic ADD{cond}{S} <Rd>, <Rn>, <operand2>...
IEM. See Intelligent Energy Management on page 10-7. • The architectural clock gating scheme for the generation of clock dedicated to the RAMs has been changed. For more information see the description of the RAM interface implementation in the ARM1176JZF-S ™ ARM1176JZ-S ™...
The architecture includes the 32-bit ARM instruction set, 16-bit Thumb instruction set, and the 8-bit Java instruction set. For details of both the ARM and Thumb instruction sets, see the ARM Architecture Reference Manual. For the Java instruction set see the Jazelle V1 Architecture Reference Manual.
• TrustZone model • How the Secure model works on page 2-4. For more details on TrustZone and the ARM architecture, see the ARM Architecture Reference Manual. 2.2.1 TrustZone model The basis of the TrustZone model is that the computing environment splits into two isolated worlds, the Secure world and the Non-secure world, with no leakage of Secure data to the Non-secure world.
Page 77
NS bit, it is strongly recommended that you only use the Secure Monitor to change the NS bit. See the ARM Architecture Reference Manual for more information. A Secure Monitor Call (SMC) is used to enter the Secure Monitor mode and perform a Secure Monitor kernel service call.
Page 78
Programmer’s Model Execute a MOVS, SUBS or RFE. All ARM implementations ensure that the processor can not execute the prefetched instructions that follow MOVS, SUBS, or equivalents, with Secure access permissions. It is strongly recommended that you do not use an MSR instruction to switch from the Secure to the Non-secure world.
Switching state You can switch the operating state of the processor between: • ARM state and Thumb state using the BX and BLX instructions, and loads to the PC. The ARM Architecture Reference Manual describes the switching state. • ARM state and Jazelle state using the BXJ instruction.
Operating modes In all states there are eight modes of operation: • User mode is the usual ARM program execution state, and is used for executing most application programs • Fast interrupt (FIQ) mode is used for handling fast interrupts •...
2.9.1 The ARM state core register set In ARM state, 16 general registers and one or two status registers are accessible at any time. In privileged modes, mode-specific banked registers become available. Figure 2-6 on page 2-20 shows the registers that are available in each mode.
Figure 2-7 Processor core register set showing banked registers 2.9.2 The Thumb state core register set The Thumb state core register set is a subset of the ARM state set. The programmer has direct access to: • eight general registers, R0–R7. For details of high register access in Thumb state see Accessing high registers in Thumb state on page 2-22 •...
R0–R7, to a high register, and from a high register to a low register. The CMP instruction enables you to compare high register values with low register values. The ADD instruction enables you to add high register values to low register values. For more details, see the ARM Architecture Reference Manual.
MSR and LDM instructions. The processor tests these flags to determine whether to execute an instruction. In ARM state, most instructions can execute conditionally on the state of the N, Z, C, and V bits. The exceptions are: •...
Page 98
Thumb-aware processor. That is, the next instruction executed causes entry to the Undefined Instruction exception. Entry to the exception handler causes the processor to re-enter ARM state, and the handler can detect that this was the cause of the exception because J and T are both set in SPSR_und.
Note • For unsigned operations, the GE bits are determined by the usual ARM rules for carries out of unsigned additions and subtractions, and so are carry-out bits. • For signed operations, the rules for setting the GE bits are chosen so that they have the same sort of greater than or equal functionality as for unsigned operations.
Page 100
• when the T bit is set, the processor is executing in Thumb state • when the T bit is clear, the processor is executing in ARM state, or Jazelle state depending on the J bit. Note Never use an MSR instruction to force a change to the state of the T bit in the CPSR. If an MSR instruction does try to modify this bit the result is architecturally Unpredictable.
In previous architecture versions, MSR instructions can modify the flags byte, bits [31:24], of the CPSR in any mode, but the other three bytes are only modifiable in privileged modes. After the introduction of ARM architecture v6, however, each CPSR bit falls into one of the following categories: •...
Programmer’s Model 2.11 Additional instructions To support extensions to ARMv6, the ARM1176JZF-S processor includes these instructions in addition to those in the ARMv6 and TrustZone architectures: • Load Register Exclusive instructions, see LDREXB, LDREXH on page 2-31, and LDREXD on page 2-33 •...
The operands are considered as two words, that load or store to consecutive word-addressed locations in memory. • Register restrictions are the same as LDRD and STRD. For STRD in ARM state, the registers Rm and R(m+1) provide the value that is stored, where m is an even number. •...
== 0x1: the instruction is YIELD For all other values, RESERVED, the instruction behaves like NOP. The true NOP for ARM state is equivalent to an MSR to the CPSR with the immed_value redefined as the hint field and no bytes selected. The instruction is fully architecturally defined, with all encodings assigned.
The addressing mode used is a version of an ARM addressing mode, modified to assume a {R14,SPSR} register list rather than using a list specified by a bit mask in the instruction. For more information see the ARM Architecture Reference Manual.
This instruction loads the PC and CPSR from sequential addresses. This is used to return from an exception that has had its return state saved using the SRS instruction, see Store Return State (SRS) on page 2-36, and again uses a version of an ARM addressing mode, modified to assume a {PC,CPSR} register list.
Page 111
Exceptions are always entered, handled, and exited in ARM state. When the processor is in Thumb state or Jazelle state and an exception occurs, the switch to ARM state takes place automatically when the exception vector address is loaded into the PC.
Page 112
It is the output of this register that is used by the processor control logic. Irrespective of whether exception entry is from ARM state, Thumb state, or Jazelle state, an FIQ handler returns from the interrupt by executing: SUBS PC,R14_fiq,#4 You can disable FIQ exceptions within a privileged mode by setting the CPSR F flag.
Page 113
The instructions that this rule currently applies to are: • ARM instructions LDC, all forms of LDM, LDRD, STC, all forms of STM, STRD, and unaligned LDR, STR, LDRH, and STRH •...
Page 115
FIQ entry sequence executed, updating R14_fiq, SPSR_fiq, PC, and CPSR. FIQ handler executes to completion and returns. Data Abort handler executes to completion and returns. For more information see the ARM Architecture Reference Manual. Stack and register usage is: •...
Page 119
This removes the requirement for the Data Abort handler to unwind any base register update, that might have been specified by the aborted instruction. This simplifies the software Data Abort handler. See ARM Architecture Reference Manual for more details.
When an instruction is encountered that neither the processor, nor any coprocessor in the system, can handle the processor takes the undefined instruction trap. Software can use this mechanism to extend the ARM instruction set by emulating undefined coprocessor instructions. After emulating the failed instruction, the trap handler executes the following instruction,...
Page 122
SPSR_svc = UNPREDICTABLE value CPSR [4:0] = 0b10011 /* Enter supervisor mode */ CPSR [5] = 0 /* Execute in ARM state */ CPSR [6] = 1 /* Disable fast interrupts */ CPSR [7] = 1 /* Disable interrupts */...
Page 123
SPSR_mon = CPSR CPSR [4:0] = 0b10110 /* Enter Secure Monitor mode */ CPSR [5] = 0 /* Execute in ARM state */ CPSR [6] = 1 /* Disable fast interrupts */ CPSR [7] = 1 /* Disable interrupts */...
Page 124
Programmer’s Model CPSR [5] = 0 /* Execute in ARM state */ CPSR [6] = 1 /* Disable fast interrupts */ CPSR [7] = 1 /* Disable interrupts */ CPSR [8] = 1 /* Disable imprecise aborts */ CPSR [9] = Secure EE-bit /* store value of secure Ctrl Reg bit[25] */...
Page 125
Programmer’s Model CPSR [4:0] = 0b10010 /* Enter IRQ mode */ CPSR [5] = 0 /* Execute in ARM state */ CPSR [7] = 1 /* Disable interrupts */ If SCR[5]=1 (bit AW) CPSR [8] = 1 /* Disable imprecise aborts */...
Page 126
SPSR_mon = CPSR CPSR [4:0] = 0b10110 /* Enter Secure Monitor mode */ CPSR [5] = 0 /* Execute in ARM state */ CPSR [6] = 1 /* Disable fast interrupts */ CPSR [7] = 1 /* Disable interrupts */...
Page 127
SPSR_und = CPSR CPSR [4:0] = 0b11011 /* Enter undefined Instruction mode */ CPSR [5] = 0 /* Execute in ARM state */ CPSR [7] = 1 /* Disable interrupts */ CPSR [9] = Secure EE-bit /* store value of secure Control Reg[25] */...
Page 128
R14_abt = address of the aborted instruction + 4 SPSR_abt = CPSR CPSR [4:0] = 0b10111 /* Enter abort mode */ CPSR [5] = 0 /* Execute in ARM state */ CPSR [7] = 1 /* Disable interrupts */ CPSR [8] = 1 /* Disable imprecise aborts */...
Page 129
SPSR_mon = CPSR CPSR [4:0] = 0b10110 /* Enter Secure Monitor mode */ CPSR [5] = 0 /* Execute in ARM state */ CPSR [6] = 1 /* Disable fast interrupts */ CPSR [7] = 1 /* Disable interrupts */...
System control processor registers on page 3-13. The purpose of the system control coprocessor, CP15, is to control and provide status information for the functions implemented in the ARM1176JZF-S processor. The main functions of the system control coprocessor are: •...
Field name Function [31:29] [28:25] Ctype The Cache type and Separate bits provide information about the cache architecture. b1110, indicates that the ARM1176JZF-S processor supports: • write back cache • Format C cache lockdown • Register 7 cache cleaning operations.
Page 154
The P, Page, bit indicates restrictions on page allocation for bits [13:12] of the VA For ARM1176JZF-S processors, the P bit is set if the cache size is greater than 16KB. For more details see Restrictions on page table mappings page coloring on page 6-41.
CRm set to c0 • Opcode_2 set to 1. For example: MRC p15,0,<Rd>,c0,c0,1; returns cache details Table 3-8, for example, lists the Cache Type Register values for an ARM1176JZF-S processor with: • separate instruction and data caches • cache size = 16KB •...
Data TCMs available in the processor. Table 3-9 lists the purposes of the individual bits in the TCM Status Register. Note In the ARM1176JZF-S processor there is a maximum of two Instruction TCMs and two Data TCMs. The TCM Status Register is: •...
DLsize Data lockable size specifies the number of unified or data TLB lockable entries 0x08 , indicates the ARM1176JZF-S processors has 8 unified TLB lockable entries [7:1] UNP/SBZ Unified specifies if the TLB is unified, 0, or if there are separate instruction and data TLBs, 1.
, ARM1176JZF-S processors support Java. [7:4] State1 Indicates type of Thumb encoding that the processor supports. , ARM1176JZF-S processors support Thumb-1 but do not support Thumb-2. [3:0] State0 Indicates support for 32-bit ARM instruction set. , ARM1176JZF-S processors support 32-bit ARM instructions.
[19:16] Reserved. RAZ. [15:12] Reserved. RAZ. [11:8] Microcontroller programmer’s model Indicates support for the ARM microcontroller programmer’s model. , Not supported by ARM1176JZF-S processors. [7:4] Security extension Indicates support for Security Extensions Architecture v1. , ARM1176JZF-S processors support Security Extensions Architecture v1, TrustZone.
, ARM1176JZF-S processors do not support this debug model. [7:4] Indicates the type of Secure debug model that the processor supports. , ARM1176JZF-S processors support the v6.1 Secure debug architecture based model. [3:0] Indicates the type of applications processor debug model that the processor supports.
[3:0] Implementation Defined. The contents of the Auxiliary Feature Register 0 [31:16] are Reserved. The contents of the Auxiliary Feature Register 0 [15:0] are Implementation Defined. In the ARM1176JZF-S processor, the Auxiliary Feature Register 0 reads as 0x00000000 Table 3-19 lists the results of attempted access for each mode.
Indicates support for FCSE. , ARM1176JZF-S processors support FCSE. [23:20] Indicates support for the ARMv6 Auxiliary Control Register. , ARM1176JZF-S processors support the Auxiliary Control Register. [19:16] Indicates support for TCM and associated DMA. , ARM1176JZF-S processors support ARMv6 TCM and DMA.
[31:28] Indicates support for branch target buffer. , ARM1176JZF-S processors require flushing of branch predictor on VA change. [27:24] Indicates support for test and clean operations on data cache, Harvard or unified architecture. , no support in ARM1176JZF-S processors.
Indicates support for a Hardware access flag. , no support in ARM1176JZF-S processors. [27:24] Indicates support for Wait For Interrupt stalling. , ARM1176JZF-S processors support Wait For Interrupt. [23:20] Indicates support for memory barrier operations. , ARM1176JZF-S processors support: •...
, ARM1176JZF-S processors support CLZ. [3:0] Indicates support for atomic load and store instructions. , ARM1176JZF-S processors support SWP and SWPB. Table 3-29 lists the results of attempted access for each mode. Table 3-29 Results of access to the Instruction Set Attributes Register 0...
Table 3-30 Instruction Set Attributes Register 1 bit functions Bits Field name Function [31:28] Indicates support for Java instructions. , ARM1176JZF-S processors support BXJ and J bit in PSRs. [27:24] Indicates support for interworking instructions. , ARM1176JZF-S processors support: • BX, and T bit in PSRs •...
Indicates support for reversal instructions. , ARM1176JZF-S processors support REV, REV16, and REVSH. [27:24] Indicates support for PSR instructions. , ARM1176JZF-S processors support MRS and MSR exception return instructions for data-processing. [23:20] Indicates support for advanced unsigned multiply instructions. , ARM1176JZF-S processors support: •...
Field Bits Function name [11:8] Indicates support for multi-access interruptible instructions. , ARM1176JZF-S processors support restartable LDM and STM. [7:4] Indicates support for memory hint instructions. , ARM1176JZF-S processors support PLD. [3:0] Indicates support for load and store instructions. , ARM1176JZF-S processors support LDRD and STRD.
, ARM1176JZF-S processors support NOP and the capability for additional NOP compatible hints. ARM1176JZF-S processors do not support NOP16. [23:20] Indicates support for Thumb copy instructions. , ARM1176JZF-S processors support Thumb MOV(3) low register ⇒ low register, and the CPY alias for Thumb MOV(3). [19:16] Indicates support for table branch instructions.
, ARM1176JZF-S processors support all synchronization primitive instructions. See Table 3-34 on page 3-41. [19:16] Indicates support for barrier instructions. , None. ARM1176JZF-S processors support only the CP15 barrier operations. [15:12] Indicates support for SMC instructions. , ARM1176JZF-S processors support SMC.
The contents of the Instruction Set Attributes Register 5 are implementation defined. In the ARM1176JZF-S processor, Instruction Set Attributes Register 5 is read as 0x00000000 Table 3-38 lists the results of attempted access for each mode.
Page 178
Function redundant in ARMv6. [15] L4 bit Secure Determines if the T bit is set for PC load instructions. For more details see the ARM modify Architecture Reference Manual. only 0 = Loads to PC set the T bit, reset value.
In ARMv6, the TCM blocks have individual enables that apply to each block. As a result, this bit is now redundant and Should Be One. See c9, Data TCM Region Register on page 3-89 for a description of the ARM1176JZF-S TCM enables. IT bit This bit is used in ARM946 and ARM966 processors to enable the Instruction TCM.
Function [31:7] UNP/SBZ. The Early Termination bit is not implemented in ARM1176JZF-S processors. UNP/SBZ. Determines if the A bit in the CPSR can be modified when in the Non-secure world: 0 = Disable modification of the A bit in the CPSR in the Non-secure world, reset value 1 = Enable modification of the A bit in the CPSR in the Non-secure world.
NS bit. However, Monitor mode code can access nonsecure banked copies of registers if the NS bit is set to 1. See the ARM Architecture Reference Manual for information on the effect of the Security Extensions on the CP15 registers.
= Write-back, No Allocate on Write. If the processor supports ECC, it indicates to the memory controller it is enabled or disabled. For ARM1176JZF-S processors this is 0: 0 = Error-Correcting Code (ECC) is disabled, reset value 1 = ECC is enabled.
; Write Translation Table Base Register 0 Note The ARM1176JZF-S processor cannot page table walk from level one cache. Therefore, if C is set to 1, to ensure coherency, you must either store page tables in Inner write-through memory or, if in Inner write-back, you must clean the appropriate cache entries after modification so that the mechanism for the hardware page table walks sees them.
; Write Translation Table Base Register 1 Note The ARM1176JZF-S processor cannot page table walk from level one cache. Therefore, if C is set to 1, to ensure coherency, you must either store page tables in Inner write-through memory or, if in Inner write-back, you must clean the appropriate cache entries after modification so that the mechanism for the hardware page table walks sees them.
Register 0, otherwise use Translation Table Base Register 1. N must be in the range 0-7. Note The ARM1176JZF-S processor cannot page table walk from level one cache. Therefore, if C is set to 1, to ensure coherency, you must either store page tables in Inner write-through memory or, if in Inner write-back, you must clean the appropriate cache entries after modification so that the mechanism for the hardware page table walks sees them.
A write to this register sets the FAR to the value of the data written. This is useful for a debugger to restore the value of the FAR. The ARM1176JZF-S processor also updates the FAR on debug exception entry because of watchpoints, see Effect of a debug event on CP15 registers on page 13-34 for more details.
— MCR p15,0,<Rd>,c7,c15,{0-7} • In the ARM1176JZF-S processor, reading from c7, except for reads from the Cache Dirty Status Register or PA Register, causes an Undefined instruction trap. • Writes to the Cache Dirty Status Register cause an Undefined exception.
The terms used to describe the invalidate, clean, and prefetch operations are as defined in the Caches and Write Buffers chapter of the ARM Architecture Reference Manual. For details of the behavior of c7 in the Secure and Non-secure worlds, see TrustZone behavior on page 3-77.
If the Start Address is greater than the End Address the effect is architecturally Unpredictable. The ARM1176JZF-S processor does not perform cache operations in this case. All block transfers are interruptible. When Block transfers are interrupted, the R14 value that is captured is the address of the instruction that launched the block operation + 4.
For more details, see Explicit Memory Barriers on page 6-25. Note The W bit that usually enables the Write Buffer is not implemented in ARM1176JZF-S processors, see c1, Control Register on page 3-44. This instruction acts as an explicit memory barrier. This instruction completes when all explicit memory transactions occurring in program order before this instruction are completed.
Data TLB • Unified TLB. Note The ARM1176JZF-S processor has a unified TLB. Any TLB operations specified for the Instruction or Data TLB perform the equivalent operation on the unified TLB. The TLB Operations Register is: • in CP15 c8 •...
While the channel has the status of Running or Queued, any attempt to write to the DMA Control Register results in architecturally Unpredictable behavior. For ARM1176JZF-S processors writes to the DMA Control Register have no effect when the DMA channel is running or queued.
128 x 32MB processes to be mapped. Note If ProcID is 0, as it is on Reset, then there is a flat mapping between the ARM1176JZF-S processor and the MMU. Figure 3-69 shows how addresses are mapped using the FCSE PID Register.
A byte-invariant addressing scheme to support fine-grain big-endian and little-endian shared data structures, to conform to a shared memory standard. The original ARM architecture was designed as little-endian. This provides a consistent address ordering of bits, bytes, words, cache lines, and pages, and is assumed by the documentation of instruction set encoding and memory and register bit significance.
4.2.1 Legacy support For ARM architectures prior to ARM architecture v6, data access to non-aligned word and halfword data was treated as aligned from the memory interface perspective. That is, the address is treated as truncated with Address[1:0], treated as zero for word accesses, and Address[0] treated as zero for halfword accesses.
Word access Memory interface uses Address [31:2]. Address [1:0] asserted as 0. — ARM load data rotates the aligned read data and rotates this right by the byte-offset denoted by Address [1:0], see the ARM Architecture Reference Manual. — ARM and Thumb load-multiple accesses always treated as aligned. No rotation of read data.
The addressed byte-pair is loaded from memory into the low 16-bits of the general-purpose register, so that the most significant addressed byte in memory appears in bits [15:8] of the ARM register and bits [31:16] replicate the sign bit in bit 15, as Figure 4-7 on page 4-9 shows.
Abort is generated and the MMU returns a Misaligned fault in the Fault Status Register. 4.3.12 Store word, little-endian The 32-bit general-purpose register is stored to four bytes in memory where bits [7:0] of the ARM register are transferred to the least-significant addressed byte in memory, as Figure 4-12 shows. Register Memory...
Page 301
Unpredictable regardless of alignment if the PC is specified as their destination register. The exceptions are ARM LDM and RFE instructions, and Thumbs POP instruction. If the instruction for them is Addr[1:0] != b00, the effective address of the transfer has its two least significant bits forced to 0 if A is set 0 and U is set to 0.
ARMv6 support for mixed-endian data • Instructions to change the CPSR E bit on page 4-21. For more information, see The ARM Architecture Reference Manual. 4.5.1 Legacy fixed instruction and data endianness Prior to ARMv6 the endianness of both instructions and data are locked together, and the configuration of the processor and the external memory system must either be hard-wired or programmed in the first few instructions of the bootstrap code.
• Reverse packed halfwords in a register for transforming big- and little-endian 16-bit representations. ARM1176JZF-S instruction set summary on page 1-32 describes these instructions. 4.6.1 All load and store operations All load and store instructions take account of the CPSR E bit. Data is transferred directly to registers when E = 0, and byte reversed if E = 1 for halfword, word, or multiple word transfers.
Unaligned and Mixed-endian Data Access Support Instructions to change the CPSR E bit ARM and Thumb instructions are provided to set and clear the E-bit efficiently: Sets the CPSR E bit SETEND BE SETEND LE Resets the CPSR E bit.
Page 309
The PU prefetches all instruction types regardless of the state of the integer core. That is, it performs prefetches in ARM state, Thumb state, and Jazelle state. However the rate at which the PU is drained is state-dependent, and the functioning of the branch prediction hardware is a function of the state.
Branch prediction In ARM processors that have no PU, the target of a branch is not known until the end of the Execute stage. At the Execute stage it is known whether or not the branch is taken. The best performance is obtained by predicting all branches as not taken and filling the pipeline with the instructions that follow the branch in the current sequential path.
Page 311
The SBP looks at the MSB of the branch offset to determine the branch direction. Statically predicted taken branches incur a one-cycle delay before the target instructions start refilling the pipeline. The SBP works in both ARM and Thumb states. The SBP does not function in Jazelle state.
The ARMv6 architecture mandates three explicit barrier instructions in the System Control Coprocessor to support the memory order model, see the ARM Architecture Reference Manual, and requires these instructions to be available in both Privileged and User modes: •...
Page 315
IMB_Range(unsigned long start_addr, unsigned long end_addr); Where the address range runs from start_addr (inclusive) end_addr (exclusive) . When the standard ARM Procedure Call Standard is used, this means that is passed in R0 and start_addr in R1. end_addr The execution time cost of an IMB can be very large, many thousands of clock cycles, even when a small address range is specified.
ARM1176JZF-S processors. Future processors might implement the IMBRange instruction in a more efficient and faster manner, and code migrated from the ARM1176JZF-S core is likely to benefit when executed on these processors. • ARM1176JZF-S processors implement a Flush Prefetch Buffer operation that is user-accessible and acts as an IMB.
The virtual addresses held in the MicroTLB include the FCSE translation from Virtual Address (VA) to Modified Virtual Address (MVA). For more information see the ARM Architecture Reference Manual. The process of loading the MicroTLB from the main TLB includes the FCSE translation if appropriate.
Page 322
Main TLB misses Main TLB misses are handled in hardware by the two level page table walk mechanism, as used on previous ARM processors. See c8, TLB Operations Register on page 3-86. Note Automatic page table walks might be disabled by PD0 and PD1 bits in the TTB Control register.
6.5.1 Domains A domain is a collection of memory regions. In compliance with the ARM Architecture and the TrustZone Security Extensions, the ARM1176JZF-S supports 16 Domains in the Secure world and 16 Domains in the Non-secure world. Domains provide support for multi-user operating systems.
CSPR. This requirement exists only for backwards compatibility with previous versions of the ARM architecture, and the behavior is deprecated in ARMv6. Programs must not rely on this behavior, but instead include an explicit Memory Barrier between the memory access and the following instruction.
Page 342
These operations are implemented by writing to the CP15 Cache operation register c7. For details on how to use this register see c7, Cache operations on page 3-69. For more information on explicit memory barriers, see the ARM Architecture Reference Manual. Data Memory Barrier This memory barrier ensures that all explicit memory transactions occurring in program order before this instruction are completed.
Page 349
Access Bit records recent TLB access to a page, or section, and the OS can use this to optimize memory managements algorithms. In the ARM1176JZF-S processor the Access Bit must be managed by the software. Reading a page table entry into the TLB when the Access Bit is 0 causes an Access Bit fault.
Software can use bits [31:2] for its own purposes in such a descriptor, because they are ignored by the hardware. Where appropriate, ARM Limited recommends that bits [31:2] continue to hold valid access permissions for the descriptor.
Figure 6-4 Backwards-compatible first-level descriptor format If the P bit is supported and set for the memory region, it indicates to the system memory controller that this memory region has ECC enabled. ARM1176JZF-S processors do not support the P bit.
16 consecutive page table locations • the first description must occur on a 16-word boundary For more information see the ARM Architecture Reference Manual. Figure 6-6 shows an overview of the section, supersection, and page translation process using backwards-compatible descriptors.
If the P bit is supported and set for the memory region, it indicates to the system memory controller that this memory region has ECC enabled. ARM1176JZF-S processors do not support the P bit. In addition to the invalid translation, bits [1:0] = b00, translations for the reserved entry, bits [1:0] = b11, result in a translation fault.
Page 377
Cache miss handling when all ways are locked down The ARM architecture describes the behavior of the cache as being Unpredictable when all ways in the cache are locked down. However, for ARM1176JZF-S processors a cache miss is serviced as if Way 0 is not locked.
CP15 register c9. The disabling of a TCM invalidates the base address, so there is no unexpected hit behavior for the TCM. The timing of a TCM access is the same as for a cache access. The ARM1176JZF-S processor does not support wait states on the TCM interfaces.
RAMs are different sizes, the regions in physical memory of the two RAMs must not be overlapped. This is because the resulting behavior is architecturally Unpredictable. In these cases, you must not rely on the behavior of ARM1176JZF-S processor for code that is intended to be ported to other ARM platforms.
It is a key feature in ensuring high system performance, providing a higher bandwidth mechanism for filling the caches in a cache miss than has existed on previous ARM processors. The processor level two interconnect system uses the following 64-bit wide AXI interfaces: •...
Page 391
The Peripheral Interface is a bidirectional AXI interface that services peripheral devices. In ARM1176JZF-S processors, the Peripheral Interface is used for peripherals that are private to the processor, such as the Vectored Interrupt Controller or Watchdog Timer. Accesses to regions of memory that are marked as Device and Non-Shared are routed to the Peripheral Interface in preference to the Data Read/Write Interface.
SWP and SWPB instructions. These support basic busy and free semaphore mechanisms. For details of the swap instructions, and how to use them to implement semaphores, see the ARM Architecture Reference Manual.
Bytes in transfer b000 b001 b010 b011 AxBURST[1:0] The AxBURST[1:0] signals indicate a fixed, incrementing or wrapping burst. Table 8-4 shows the burst types that the ARM1176JZF-S processor supports. Table 8-4 AxBURST[1:0] encoding AxBURST[2:0] Burst type Description Fixed Fixed address burst...
Inner write-back, no allocate on write b1111 Inner write-back, write allocate a. The ARM1176JZF-S processor does not support write allocate. Table 8-9 shows the correspondence between the ARSIDEBANDI[4:1] encoding and the TLB cacheable attributes for the Instruction port. Table 8-9 ARSIDEBANDI[4:1] encoding...
Level Two Interface Endianness ARM1176JZF-S processors can be configured in one of three endianness modes of operation using the U, B, and E bits of the CP15 c1 Control Register, see Mixed-endian access support on page 4-17. BE-8 refers to byte-invariant big-endian configuration on 16-bit, halfword, and 32-bit, word, quantities only.
For ARM1176JZF-S processors, this implies that, in the case of an abort received on the read part of a SWP instruction, the Peripheral port or Data port issues a dummy write access with all byte strobes LOW at the same address as the read access and with AWLOCK = 00, normal transaction.
Figure 9-6 Power-on reset It is recommended that you assert the reset signals for at least three CLKIN cycles to ensure correct reset behavior. Adopting a three-cycle reset eases the integration of other ARM parts into the system, for example, ARM9TDMI-based designs.
Page 437
9.4.3 Processor reset A processor or warm reset initializes the majority of the ARM1176JZF-S processor, excluding the ARM1176JZF-S DBGTAP controller and the EmbeddedICE-RT logic. Processor reset is typically used for resetting a system that has been operating for some time, for example, watchdog reset.
Page 441
Basic clamps are instantiated in the placeholder. They can be changed to explicit gates in the RAM power domain, or pull-down transistors that clamp the values when the core is powered down. For implementation details, see the ARM1176JZF-S and ARM1176JZ-S Implementation Guide.
Page 442
Strongly-Ordered accesses. The STANDBYWFI signal can also be used to signal to the Power Management Controller that the ARM1176JZF-S processor is ready to have its power state changed. STANDBYWFI is asserted in response to a Wait For Interrupt operation. Note The Power Management Controller must not power down any of the processor power domains unless STANDBYWFI is asserted.
Power Control 10.3 VFP shutdown The blocks in the top level of the ARM1176JZF-S are: • A1176RAM , that includes all the RAMs • when you have an IEM implementation: — the four IEM register slices — placeholders for level shifters and clamps between all the blocks •...
Use of IEM on page 10-8 Note The ARM1176JZF-S processor is IEM enabled but the level of support for the technology depends on the specific implementation. For information on clocks and resets with IEM, see Clocking and resets with IEM on page 9-5.
Page 446
Chapter 11 Coprocessor Interface This chapter describes the coprocessor interface of the ARM1176JZF-S processor. It contains the following sections: • About the coprocessor interface on page 11-2 • Coprocessor pipeline on page 11-3 • Token queue management on page 11-9 •...
The processor supports the connection of on-chip coprocessors through an external coprocessor interface. All types of coprocessor instruction are supported. The ARM instruction set supports the connection of 16 coprocessors, numbered 0-15, to an ARM processor. In the processor, the following coprocessor numbers are reserved:...
Coprocessors reject those instructions they cannot handle. Table 11-1 lists all the coprocessor instructions supported by the processor and gives a brief description of each. For more details of coprocessor instructions, see the ARM Architecture Reference Manual. Table 11-1 Coprocessor instructions...
The state of the processor is preserved in the same manner as all ARM exceptions. See the ARM Architecture Reference Manual on exceptions and exception priorities. The debug monitor target communicates with the debugger to access processor and coprocessor state, and to access memory contents and input/output peripherals.
Page 478
Virtual addresses and debug Unless otherwise stated, all addresses in this chapter are Modified Virtual Addresses (MVA) as the ARM Architecture Reference Manual describes. For example, the Breakpoint Value Registers (BVR) and Watchpoint Value Registers (WVR) must be programmed with MVAs.
= 1 WRP b0001 = 2 WRPs … b1111 = 16 WRPs. For the ARM1176JZF-S processor these bits are b0001 (2 WRPs). [27: 24] Number of Breakpoint Register Pairs: b0000 = Reserved. The minimum number of BRPs is 2.
Page 483
0 = Disabled 1 = Enabled. If this bit is set, the core can be forced to execute ARM instructions in Debug state using the Debug Test Access Port. If this bit is set when the core is not in Debug state, the behavior of the processor is architecturally Unpredictable.
Page 484
This flag is meant to detect Data Aborts generated by instructions issued to the processor using the Debug Test Access Port. Therefore, if the DSCR[13] execute ARM instruction enable bit is a 0, the value of the sticky precise Data Abort bit is architecturally Unpredictable.
• accessible in privileged modes only. When a watchpoint occurs in: • ARM state, the WFAR contains the address of the instruction causing it plus • Thumb state, the WFAR contains the address of the instruction causing it plus •...
Linked BRP number. The binary number encoded here indicates another BRP to link this one with. If a BRP is linked with itself, it is architecturally Unpredictable if a breakpoint debug event is generated. For ARM1176JZF-S processors the breakpoint debug event is not generated.
If a BRP, holding an IMVA, is linked with one that is not configured for context ID comparison and linking, it is architecturally Unpredictable whether a breakpoint debug event is generated or not. For ARM1176JZF-S processors the breakpoint debug event is not generated. BCR[22:20] fields of the second BRP must be set to b011.
BRP must be set to b011. • If a WRP is linked with a BRP that is not implemented, it is architecturally Unpredictable if a watchpoint debug event is generated or not. For ARM1176JZF-S processors the watchpoint debug event is not generated. •...
112-127 MRC p14, 0, <Rd>, c0, cy, 7 MCR p14, 0, <Rd>, c0, cy, 7 a. <Rd> is any of R0-R14 ARM registers. b. y is the decimal representation for the binary number CRm. In Table 13-19, refer to the rDTR MRC p14,0,<Rd>,c0,c5,0...
ARM state instruction. This mechanism is enabled using DSCR[13] execute ARM instruction enable bit. • The core executes the instruction as if it is in ARM state, regardless of the actual value of the T and J bits of the CPSR. •...
However, the CPSR has to be set to the return ARM, Thumb, or Jazelle state before the PC is written to, otherwise the processor behavior is Unpredictable.
• The mechanism for forcing the core to execute ARM instructions, when the core is in Debug state. For details see Executing instructions in Debug state on page 14-21. At the core side, the debug communications channel resources are: •...
Page 525
Note A DBGTAP debugger can access the CP14 debug registers whether the processor is in Debug state or not, so these debug events can be programmed while the processor is in ARM, Thumb, or Jazelle state. Setting software breakpoints (BKPT) To set a software breakpoint, the DBGTAP debugger must perform the same steps as the debug monitor target.
14.2 Synchronizing RealView ICE The system and test clocks are synchronized internally to the macrocell. The ARM RealView ICE debug agent directly supports one or more cores within an ASIC design. The off-chip device, for example, RealView ICE, issues a TCK signal and waits for the RTCK, Returned TCK, signal to come back.
ID fields are routed to the edge of the chip so that partners can create their own Device ID numbers by tying the pins to HIGH or LOW values. The default manufacturer ID for the ARM1176JZF-S processor is b11110000111. The part number field is hard-wired inside the ARM1176JZF-S to...
Debug Test Access Port All ARM semiconductor partner-specific devices must be identified by manufacturer ID numbers of the form shown in c0, Main ID Register on page 3-20. Length 32 bits. Operating mode When the ID code instruction is current, the shift section of the device ID register is selected as the serial path between DBGTDI and DBGTDO.
This field is hardwired to 0x41 , the implementor code for ARM Limited, as specified in the ARM Architecture Reference Manual. This register is read-only. Therefore, EXTEST has the same effect as INTEST. Order Figure 14-7 shows the order of bits in scan chain 0.
Page 538
DSCR[6] Sticky precise Data Abort flag. If the core is in Debug state and the DSCR[13] execute ARM instruction enable bit is HIGH, then this flag is set on precise Data Aborts. See CP14 c1, Debug Status and Control Register (DSCR) on page 13-7.
• The processor must be in Debug state. • The DSCR[13] execute ARM instruction enable bit must be set. For details of the DSCR see CP14 c1, Debug Status and Control Register (DSCR) on page 13-7. •...
Page 540
DBGTAP debugger must set up the data in the rDTR before issuing the coprocessor instruction to the core. See Scan chain 5 on page 14-15. • Setting DSCR[13] the execute ARM instruction enable bit when the core is not in Debug state leads to Unpredictable behavior. •...
Page 542
InstCompl flags when the core changes state is as follows: • The DSCR[13] execute ARM instruction enable bit must be clear when the core is not in Debug state. Otherwise, the behavior of the rDTR and wDTR registers, and the flags, is Unpredictable.
Debug Test Access Port • The InstCompl flag must be set when the DSCR[13] execute ARM instruction enable bit is changed from 1 to 0. Otherwise, the behavior of the core is Unpredictable. If the DSCR[13] flag is cleared correctly, none of the registers and flags are altered.
Page 546
• If a read request to the PC completes and Data[1:0] equals b00, the read value corresponds to an ARM state instruction whose 30 most significant bits of the offset address, instruction address + 8, are given in Data[31:2]. •...
14.7.2 Executing instructions in Debug state When the processor is in Debug state, it can be forced to execute ARM state instructions using the DBGTAP. Two registers are used for this purpose, the Instruction Transfer Register (ITR) and the Data Transfer Register (DTR). The ITR is used to insert an instruction into the processor pipeline.
Figure 14-14 Behavior of the ITRsel IR instruction Consider for example the preceding sequence to store out the contents of ARM register R0. This is the same sequence using the ITRsel instruction: Scan_N into the IR. 1 into the SCREG.
Page 551
14-21 describes in addition to scan chain 5. You must ensure that the DSCR[13] execute ARM instruction enable bit is set for the instruction execution mechanism to work. When it is set, the interface for the DBGTAP debugger consists of the following: •...
Page 552
Target to host transfer The DBGTAP debugger can use the following sequence for reading data from the processor memory system. The sequence assumes that the ARM register R0 contains a pointer to the address of memory where the read has to start: Scan_N into the IR.
Page 553
Host to target transfer The DBGTAP debugger can use the following sequence for writing data to the processor memory system. The sequence assumes that the ARM register R0 contains a pointer to the address of memory where the write has to start: Scan_N into the IR.
Go to the DBGTAP controller Run-Test/Idle state so that the processor exits Debug state. INST <instr> [stateout] Go through Capture-DR, go to Shift-DR, scan in an ARM instruction to be read and executed by the core and scan out the Ready flag, go through Update-DR. The ITR, scan chain 4, and EXTEST must be selected when using this macro.
Page 556
• The contents of wDTR[31:0], to be stored in dataout. • If the DSCR[13] execute ARM instruction enable bit is set, the value of the Ready flag is stored in stateout. • If the DSCR[13] execute ARM instruction enable bit is clear, the nRetry or Valid flag, depending on whether EXTEST or INTEST is selected, is stored in stateout.
Page 557
; select DTR INTEST DATA 0x00000000 Valid wDTR If Valid==1 then Save value in wDTR Set the DSCR[13] execute ARM instruction enable bit, so instructions can be issued to the core from now: SCAN_N 1 ; select DSCR EXTEST DATA modifiedDSCR ;...
Page 558
; clears DSCR[7] Store out R0. It is going to be used to save the rDTR. Use the standard sequence of Reading a current mode ARM register in the range R0-R14 on page 14-34. Scan chain 5 and INTEST are now selected.
Page 559
R0 as a temporary register, in two steps. Load the saved wDTR contents into R0 using the standard sequence of Writing a current mode ARM register in the range R0-R14 on page 14-34. Now scan chain 5 and EXTEST are selected...
Page 560
Debug Test Access Port 14.8.6 Reading a current mode ARM register in the range R0-R14 Use the following sequence to read a current mode ARM register in the range R0-R14: SCAN_N ; select DTR ITRSEL ; select the ITR and EXTEST...
Page 561
UNTIL Ready==1 ; wait until the instruction ends Perform the read of R0 using the standard sequence that Reading a current mode ARM register in the range R0-R14 on page 14-34 describes. Scan chain 5 and ITRsel are already selected.
Page 562
Here R0 is used as a temporary register: Load R0 with the address to resume using the standard sequence that Writing a current mode ARM register in the range R0-R14 on page 14-34 describes. Now scan chain 5 and EXTEST are selected.
Page 564
Two operations are required to complete a halfword or byte transfer, from memory to ARM register and from ARM register to CP14 debug register. Therefore, performance is decreased because the load instruction cannot be kept in the ITR. This sequence assumes that R0 has been set to the address to load data from prior to running the sequence.
Page 565
INST 0x00000000 Ready UNTIL Ready==1 ; wait until instruction ends Use the standard sequence that Reading a current mode ARM register in the range R0-R14 on page 14-34 describes. 14.8.19 Writing coprocessor registers Write the value onto R0, using the standard sequence. See Writing a current mode ARM register in the range R0-R14 on page 14-34 for more details.
15.1 About the ETM interface The processor trace interface port enables connection of an ETM to the processor. The ARM Embedded Trace Macrocell (ETM) provides instruction and data trace for the ARM11 family of processors. For more details on how the ETM interface connects to an ARM11 processor, see the CoreSight ETM11 Technical Reference Manual.
The exception signals become valid when the core takes the exception and remain valid until the next instruction is seen at the exception vector. Exception reporting The ARM1176JZF-S Trace Interface Port is designed for ETMs that support ETMv3.2 or above. ETMv3.2 permits the determination of each type of exception without reference to the destination address in the branch packet.
The data transfer is a CPRT. DASwizzle DASlot != 00 [14] Words must be byte swizzled for ARM big-endian mode. During an unaligned access, this signal is only valid on the first transfer of the access. DARot DASlot != 00 [13:12] Number of bytes to rotate right each word by.
Chapter 16 Cycle Timings and Interlock Behavior This chapter describes the cycle timings and interlock behavior of integer instructions on the ARM1176JZF-S processor. This chapter contains the following sections: • About cycle timings and interlock behavior on page 16-2 •...
Cycle Timings and Interlock Behavior 16.18 Thumb instructions The cycle timing behavior for Thumb instructions follow the ARM equivalent instruction cycle timing behavior. Thumb BL instructions that are encoded as two Thumb instructions, can be dynamically predicted. The predictions occurs on the second part of the BL pair, consequently a correct prediction takes two cycles.
• low power consumption, small die size, and reduced kernel code. The VFP11 coprocessor is an ARM enhanced numeric coprocessor that provides operations that are compatible with the IEEE 754 standard. Designed for the ARM11 family of cores, the VFP11 coprocessor fully supports single-precision and double-precision add, subtract, multiply, divide, multiply and accumulate, and square root operations.
The VFP11 coprocessor provides the ability to execute several floating-point operations in parallel, while the ARM11 processor is executing ARM instructions. While a short vector operation executes for a number of cycles in the VFP11 coprocessor, it appears to the ARM11 processor as a single-cycle instruction and is retired in the ARM11 processor before it completes execution in the VFP11 coprocessor.
However, to ensure compatibility with future VFP implementations, use FLDMX/FSTMX instructions when saving context and restoring VFP11 registers. See section C5 of the ARM Architecture Reference Manual for more information. It is the responsibility of the programmer to be aware of the data type in each register. The hardware does not perform any checking of the agreement between the data type in the source registers and the data type expected by the instruction.
M, N, and D bit corresponding to a double-precision access must be zero. Figure 19-3 shows the register file. See the ARM Architecture Reference Manual for instruction formats and the positions of these bits.
19.6 Data transfer between memory and VFP11 registers The B bit in the CP15 c1 Control Register, see Section B2 of the ARM Architecture Reference Manual, determines whether access to stored memory is little-endian or big-endian. The ARM11 processor supports both little-endian and big-endian access formats in memory.
CDP instructions access the banks in a circular manner. Load and store multiple instructions do not access the registers in a circular manner but treat the register file as a linearly ordered structure. See ARM Architecture Reference Manual, Part C for more information on VFP addressing modes. Bank 0...
The VFPv2 architecture adds the following features and enhancements to the VFPv1 architecture: • The ARM v5TE instruction set. This includes the MRRC and MCRR instructions to transfer 64-bit data between the ARM11 processor and the VFP11 coprocessor. These instructions enable the transfer of a double-precision register or two consecutively numbered single-precision registers to or from a pair of ARM11 registers.
• hardware and software components • software-based components and their availability. Also see Section C1 of the ARM Architecture Reference Manual for information about VFP architecture compliance with the IEEE 754 standard. 20.2.1 An IEEE 754 standard-compliant implementation The VFP11 hardware and support code together provide VFPv2 floating-point instruction implementations that are compliant with the IEEE 754 standard.
If IOE is not set, a default QNaN is written to the destination register. The rules for cases involving multiple NaN operands are in the ARM Architecture Reference Manual. Processing of input NaNs for ARM floating-point coprocessors and libraries is defined as follows: •...
See the ARM Architecture Reference Manual for mapping of IEEE 754 standard predicates to ARM conditions. The condition code flags used are chosen so that subsequent conditional execution of ARM instructions can test the predicates defined in the IEEE 754 standard.
Page 648
UFC flag, FPSCR[3], is set. Support code is not involved. See Part C of the ARM Architecture Reference Manual for information on flush-to-zero mode. When the VFP11 coprocessor is not in flush-to-zero mode, any operation with a risk of producing a tiny result bounces to support code.
Also, the FPEXC register contains additional bits to support exceptional conditions. These registers are designed to be used with the support code software available from ARM Limited. As a result, this document does not fully specify exception handling in all cases.
[31:28] Indicates the VFP hardware support level when user traps are disabled. , In ARM1176JZF-S processors when Flush-to-Zero and Default_NaN and Round-to-Nearest are all selected in FPSCR, the coprocessor does not require support code. Otherwise floating point support code is required.
Chapter 21 VFP Instruction Execution This chapter describes the VFP11 instruction pipeline and its relationship with the ARM processor instruction pipeline. It contains the following sections: • About instruction execution on page 21-2 • Serializing instructions on page 21-3 •...
In general, an access to a VFP11 control or status register is a serializing instruction. The serializing instructions are FMRX and FMXR, including the FMSTAT instruction. Serializing instructions stall the VFP11 coprocessor in the Issue stage and the ARM processor in the Execute 2 stage until: •...
21.3 Interrupting the VFP11 coprocessor Instructions are issued to the VFP11 coprocessor directly from the ARM prefetch unit. The VFP11 coprocessor has no external interface beyond the ARM processor and cannot be separately interrupted by external sources. Any interrupt that causes a change of flow in the ARM11 processor is also reflected to the VFP11 coprocessor.
Normally, the VFP11 hardware executes floating-point instructions completely in hardware. However, the VFP11 coprocessor can, under certain circumstances, refuse to accept a floating-point instruction, causing the ARM Undefined Instruction exception. This is known as bouncing the instruction. There are three reasons for bouncing an instruction: •...
See Application Note 98, VFP Support Code for details of support code. Support code is provided with the RealView Compilation Tools, or for the ARM Developer Suite as an add-on downloadable from the ARM web site.
Page 689
If and when it returns, it causes the illegal instruction to be retried and the sequence of events that the paragraph above describes occurs. The following instruction types are architecturally Undefined. See ARM Architecture Reference Manual, Rev E, Part C: •...
Appendix B Summary of ARM1136JF-S and ARM1176JZF-S Processor Differences This appendix describes the main differences between the ARM1136JF-S and ARM1176JZF-S processors. It contains these sections: • About the differences between the ARM1136JF-S and ARM1176JZF-S processors on page B-2 • Summary of differences on page B-3.
Summary of ARM1136JF-S and ARM1176JZF-S Processor Differences About the differences between the ARM1136JF-S and ARM1176JZF-S processors The ARM11 family of high performance processors implements the ARMv6 architecture and includes the ARM1136JF-S and ARM1176JZF-S processors. These have: • an integer core •...
The ARM1176JZF-S processor fully implements the TrustZone architecture for OS security enhancements. This leads to numerous differences between ARM1136JF-S and ARM1176JZF-S processors in the core and the Level 1 Memory System, see also Debug on page B-10. The ARM1176JZF-S processor embodies, for TrustZone: •...
CP15 register 15. By moving one entry in the ARM1176JZF-S processor TEX CB encoding table, with an alias for compatibility, TEX[2:1] is freed for use as two OS managed page table bits. Because binary compatibility is important with existing ARMv6 ports of OSs, this change consists of a separate mode of operation of the MMU.
Page 731
SmartCache feature for the Tightly-Coupled Memories. As a consequence, the TCMs in ARM1176JZF-S processors always behave as local RAMs and the SC bit, bit [1], of each TCM Region Register is Read As Zero and Ignored on writes. The SmartCache dedicated valid and dirty RAMs are not implemented in the ARM1176JZF-S processor.
• 64KB. The ARM1176JZF-S processor implements zero, one or two Tightly Coupled Memories on each side. For each side, the two TCMs are physically located within one RAM. Table B-1 lists the possible configurations for ARM1176JZF-S Tightly-Coupled Memories for each side:...
Page 733
This new IFAR is updated on prefetch aborts and contains the faulty instruction address. Note In Jazelle state, the IFAR is not as accurate as in ARM and Thumb states. In Jazelle state the IFAR does not contain the address of the faulty bytecode but only the address of the word or double-word that includes the faulty bytecode.
Summary of ARM1136JF-S and ARM1176JZF-S Processor Differences Table B-2 lists the CP15 c15 registers and operations common to both ARM1176JZF-S and ARM1136JF-S processors. Table B-2 CP15 c15 features common to ARM1136JF-S and ARM1176JZF-S processors Opcode_1 Opcode_2 Register Function Peripheral Memory Remap...
Main TLB Valid Cache Debug Control TLB Debug Control a. In the ARM1136JF-S processor is possible to read and write all TLB entries. In ARM1176JZF-S processor you can only read or write the lockdown entries. B.2.12 DMA The ARM1176JZF-S processor transfers all data as part of the DMA transfer from TCM to external memory.
Page 736
ETM11 macrocell supports both the ARM1136JF-S and ARM1176JZF-S processors. System metrics In Debug state the system metrics counters are disabled in the ARM1176JZF-S processor. B.2.14 Level two interface The external interfaces of the two processors are different to this extent: •...
Page 740
See also Data Abort, External Abort and Prefetch Abort. Abort model An abort model is the defined behavior of an ARM processor in response to a Data Abort exception. Different abort models behave differently with regard to load and store instructions that specify base register write-back.
Page 741
A family of protocol specifications that describe a strategy for the interconnect. AMBA is the ARM open standard for on-chip buses. It is an on-chip bus specification that details a strategy for the interconnection and management of functional blocks that make up a System-on-Chip (SoC).
Page 742
Any VFPv2 Coprocessor Data Processing (CDP) instruction except FCPY, FABS, and FNEG. See also CDP instruction. ARM instruction A word that specifies an operation for an ARM processor to perform. ARM instructions must be word-aligned. ARM state A processor that is executing ARM (32-bit) word-aligned instructions is operating in ARM state.
Page 745
The VFP coprocessor bounces an instruction when it fails to signal the acceptance of a valid VFP instruction to the ARM processor. This action initiates Undefined instruction processing by the ARM processor. The VFP support code is called to complete the instruction that was found to be exceptional or unsupported by the VFP coprocessor.
Page 746
The ARM architecture supports byte-invariant systems in ARMv6 and later versions. When byte-invariant support is selected, unaligned halfword and word memory accesses are also supported.
Page 747
Otherwise, the instruction does nothing. Context The environment that each process operates in for a multitasking operating system. In ARM processors, this is limited to mean the Physical Address range that it can access in memory and the associated memory access permissions.
Page 748
JTAG boundary-scan architecture. The mandatory terminals are DBGTDI, DBGTDO, DBGTMS, and TCK. The optional terminal is TRST. This signal is mandatory in ARM cores because it is used to reset the debug logic. Default NaN mode A mode in which all operations that result in a NaN return the default NaN, regardless of the cause of the NaN result.
Page 749
A data item having a memory address that is divisible by eight. EmbeddedICE logic An on-chip logic block that provides TAP-based debug support for ARM processor cores. It is accessed through the TAP controller on the ARM core using the JTAG interface.
Page 750
In ARM processors, a fast context switch is caused by the selection of a non-zero PID value to switch the context to that of the next process. A fast context switch causes each Virtual Address for a memory access, generated by the ARM processor, to produce a Modified Virtual Address which is sent to the rest of the memory system to be used in place of a normal Virtual Address.
For example, after a cache flush all lines are invalid. Jazelle architecture The ARM Jazelle architecture extends the Thumb and ARM operating states by adding a Jazelle state to the processor. Instruction set support for entering and exiting Java applications, real-time interrupt handling, and debug support for mixed Java/ARM applications is present.
Page 753
See Memory Management Unit. Modified Virtual Address (MVA) A Virtual Address produced by the ARM processor can be changed by the current Process ID to provide a Modified Virtual Address (MVA) for the MMUs and caches. See also Fast Context Switch Extension.
Page 754
See also Fast Context Switch Extension. Read Reads are defined as memory operations that have the semantics of a load. That is, the ARM instructions LDM, LDRD, LDC, LDR, LDRT, LDRSH, LDRH, LDRSB, LDRB, LDRBT, LDREX, RFE, STREX, SWP, and SWPB, and the Thumb instructions LDM, LDR, LDRSH, LDRH, LDRSB, LDRB, and POP.
Page 755
Processors can contain several shift registers to enable you to access selected parts of the device. SCREG The currently selected scan chain number in an ARM TAP controller. See Cache set. Set-associative cache In a set-associative cache, lines can only be placed in the cache in locations that correspond to the modulo division of the memory address by the number of sets.
Page 756
The collection of four mandatory and one optional terminals that form the input/output and control interface to a JTAG boundary-scan architecture. The mandatory terminals are TDI, TDO, TMS, and TCK. The optional terminal is TRST. This signal is mandatory in ARM cores because it is used to reset the debug logic.
Page 757
See also Bounce, Potentially exceptional instruction, and Exceptional state. Undefined Indicates an instruction that generates an Undefined instruction trap. See the ARM Architecture Reference Manual for more details on ARM exceptions. See Unpredictable.
Page 758
See also Byte-invariant. Write Writes are defined as operations that have the semantics of a store. That is, the ARM instructions SRS, STM, STRD, STC, STRT, STRH, STRB, STRBT, STREX, SWP, and SWPB, and the Thumb instructions STM, STR, STRH, STRB, and PUSH. Java instructions that are accelerated by hardware can cause a number of writes to occur, according to the state of the Java stack and the implementation of the Java hardware acceleration.
Need help?
Do you have a question about the ARM1176JZF-S and is the answer not in the manual?
Questions and answers