Visible to Intel only — GUID: iga1409345575086
Ixiasoft
Visible to Intel only — GUID: iga1409345575086
Ixiasoft
4.3.3. Exception Checking
- Illegal instruction—When Illegal instruction is on, the processor generates an illegal instruction exception when an instruction with an undefined opcode or opcode-extension field is executed.
- Division error—Division error detection is only available for the Nios II/f core, and only then when Hardware divide on the Core Nios II tab is on. When divide instructions are not supported by hardware, the Division error setting is disabled.
When Division error is on, the processor generates a division error exception when it detects divide instructions that produce a result that cannot be represented in the destination register. This only happens in the following two cases:
- Divide by zero
- Divide overflow—A signed division that divides the largest negative number -2147483648 (0x80000000) by -1 (0xffffffff).
- Misaligned memory access—Misaligned memory access detection is only available for the Nios II/f core. When Misaligned memory access is on, the processor checks for misaligned memory accesses.
There are two misaligned memory address exceptions:
- Misaligned data address—Data addresses of load and store instructions are checked for misalignment. A data address is considered misaligned if the byte address is not a multiple of the data width of the load or store instruction (4 bytes for word, 2 bytes for half-word). Byte load and store instructions are always aligned so never generate a misaligned data address exception.
- Misaligned destination address—Destination instruction addresses of br, callr, jmp, ret, eret, and bret instructions are checked for misalignment. A destination instruction address is considered misaligned if the target byte address of the instruction is not a multiple of four.
- Extra exception information—When Extra exception information is on, nonbreak exceptions store a code in the CAUSE field of the exception control register to indicate the cause of the exception.
Your exception handler can use this code to quickly determine the proper action to take, rather than have to determine the cause of an exception through instruction decoding. Additionally, some exceptions also store the instruction or data address associated with the exception in the badaddr register.
For further descriptions of exceptions, exception handling, and control registers, refer to the Programming Model chapter of the Nios II Processor Reference Handbook.