Nios II Classic Processor Reference Guide

ID 683620
Date 10/28/2016
Public
Document Table of Contents

4.3.3. Exception Checking

The Exception Checking settings provide the following options:
  • 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.
Note: When your system contains an MMU or MPU, the processor automatically generates illegal instruction exceptions. Therefore, the Illegal instruction setting is always disabled when the Core Nios II tab Include MMU or Include MPU are on.
  • 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.
Note: When your system contains an MMU or MPU, the processor automatically generates misaligned memory access exceptions. Therefore, the Misaligned memory access check box is always disabled when Include MMU or Include MPU on the Core Nios II tab are on.

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.
Note: When your system contains an MMU or MPU, the processor automatically generates extra exception information. Therefore, the Extra exception information setting is always disabled when the Core Nios II tab Include MMU or Include MPU are on.

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.