Professional Documents
Culture Documents
CoProcessor Specification
All registers are RW except where otherwise noted (RO or WO). Items in italics are indicated and are provided as placeholders only and are not implemented. Items in italic-bold indicate that they are only implemented in the software simulator. Red indicates not implemented yet. Blue indicates implemented, but not verified. Green indicates implemented with test-code. White indicates un-implemented, and should respond as a bounced coprocessor instruction. Table 1: CoProcessor Register Summary R# 0 1 CoProcessor 13 Access Cycle Count (RO) CoProcessor 14 Real Time Counter Low (RO) Real Time Counter High (RO) Timer Interrupt Interrupt Suspend Internal Dynamic Clock Speed External Pin Control Hw. Control Tweaks Instruction Count (RO) CoProcessor 15 MMU ID (RO) System Control Translation Table Base Domain Access Control Fault Status Fault Address Cache Operations (WO) TLB Operations
Idle Cycle Count (RO) 2 Sleep Cycle Count (RO) 3 Wait Cycles (RO) 4 Hit Count (RO) 5 Cached Miss Count (RO) 6 Cache Writeback Count (RO) 7 Uncached Access Count (RO) 8 External Idle Count (RO) 9 External Address Count (RO) 10 External Data Count (RO) 11 External Wait Count (RO) 12 External Other Count (RO) 13 14 15
Register 13.13 - 13.15: Unused Register 14.0: Real Time Timer Low
This read-only register returns the lower 32 bits of the 64-bit real-time counter. This counter is independent of the current processor operating speed and is driven by the external reference clock. The time returned is in the time in 1 us increments since processor startup. NOTE: A read of this register MAY be garbage due to asynchronous clock signals. Back-toback reads may be recommended to ensure proper reading.
NOTE: The suspend instruction MUST be followed by 2 null coproc writes. MCR p14, 0, X, c5, X
A read from this register returns the current sampled processor speed (not necessarily the same value written). NOTE: To ensure a read of the correct value after a speed change, wait for two clock-ticks of the real-time counter before reading out the new value.
A read from this register returns the current sampled processor speed (not necessairly the same value written).
Table 6: Bus Clock Ratio Settings bits 6:5 00 01 10 11 bus clock ratio 8x 4x 2x not used (same as 2x)
Bits 4:0 are used to tune the exact frequency of the VCO. The bits all set to one gives approximately 1/2 x nominal frequency. All zero gives approximately 1 1/2 x nominal frequency. Upon reset, the internal state of the VCO will come up in a 60% nominal designed frequency. (but will still lock to the value in Register 13.4... that is, it will run at a higher than designed to supply voltage)
Alignment Fault Enable Cache Enable Write-buffer Enable Big Endian Select (else Little Endian) Branch Prediction Enable Enable different clock speed for FIQ (set with C14R4). Enable different clock speed for IRQ (set with C14R4).
The C and W bits are combined with the address bits 26 & 27 as described below to define the cache and write-buffer behaviour for the access. The cacheable, not-writebufferable region is useless from an application point of view, but is included for symmetry and failure-mode (i.e. if the write-buffer is faulty); the implication is that lines ejected from the cache due to the writeback nature are NOT passed through the write-buffer, and instead cause lengthy wait states while the line is written out. Table 8: Address Bit <27:26> Access Encodings Binary Value Description (27:26) 00 Cacheable and Write-bufferable (subject to the C and W bits above). 01 Cacheable, not write-bufferable 10 Write-bufferable, not cacheable 11 Neither cacheable or write-bufferable
(SBZ = Should Be Zero, VA = Virtual Address) NOTE: For Clean ID single entry... Rd of BOTH instructions MUST BE THE SAME.
13
14
15
na WO
To Be Added: 26.