![Intel IXP45X Developer'S Manual Download Page 179](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092179.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
August 2006
Developer’s Manual
Order Number: 306262-004US
179
Intel XScale
®
Processor—Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
Imprecise Data Aborts
• A data cache parity error is imprecise; the extended Status field of the Fault Status
Register is set to 0xb11000.
• All external data aborts except for those generated on a data MMU translation are
imprecise.
The Fault Address Register for all imprecise data aborts is undefined and R14_ABORT is
the address of the next instruction to e 4, which is the same for both Intel
®
StrongARM
*
and Thumb mode.
Although the Intel XScale processor guarantees the Base Restored Abort Model for
precise aborts, it cannot do so in the case of imprecise aborts. A Data Abort handler
may encounter an updated base register if it is invoked because of an imprecise abort.
Imprecise data aborts may create scenarios that are difficult for an abort handler to
recover. Both external data aborts and data cache parity errors may result in corrupted
data in the targeted registers. Because these faults are imprecise, it is possible that the
corrupted data will have been used before the Data Abort fault handler is invoked.
Because of this, software should treat imprecise data aborts as unrecoverable.
Note that even memory accesses marked as “stall until complete” (see
Cache and Write Buffer Behavior” on page 71
) can result in imprecise data aborts. For
these types of accesses, the fault is somewhat less imprecise than the general case: it
is guaranteed to be raised within three instructions of the instruction that caused it. In
other words, if a “stall until complete” LD or ST instruction triggers an imprecise fault,
then that fault will be seen by the program within three instructions.
With this knowledge, it is possible to write code that accesses “stall until complete”
memory with impunity. Simply place several NOP instructions after such an access. If
an imprecise fault occurs, it will do so during the NOPs; the data abort handler will see
identical register and memory state as it would with a precise exception, and so should
be able to recover. An example of this is shown in
Table 78.
Intel XScale
®
Processor Encoding of Fault Status for Data Aborts
Priorit
y
Sources
FS[10,3:0]
Domain
FAR
Highest
Alignment
0b000x1
invalid
valid
External Abort on Translation
First level
Second level
0b01100
0b01110
invalid
valid
valid
valid
Translation
Section
Page
0b00101
0b00111
invalid
valid
valid
valid
Domain
Section
Page
0b01001
0b01011
valid
valid
valid
valid
Permission
Section
Page
0b01101
0b01111
valid
valid
valid
valid
Lock Abort
This data abort occurs on an MMU lock operation (data or
instruction TLB) or on an Instruction Cache lock operation.
0b10100
invalid
invalid
Imprecise External Data Abort
0b10110
invalid
invalid
Lowest
Data Cache Parity Error Exception
0b11000
invalid
invalid
†
All other encodings not listed in the table are reserved.