MicroBlaze supports reset, interrupt, user exception, break, and hardware exceptions. The following section describes the execution flow associated with each of these events.
The relative priority starting with the highest is:
- Reset
- Hardware Exception
- Non-maskable Break
- Break
- Interrupt
- User Vector (Exception)
The following table defines the memory address locations of the
associated vectors and the hardware enforced register file locations for return
addresses. Each vector allocates two addresses to allow full address range branching
(requires an IMM
followed by a BRAI
instruction). Normally the vectors start at address 0, but the
parameter C_BASE_VECTORS
can be used to locate them
anywhere in memory.
The address range 0x28 to 0x4F is reserved for future software support. Allocating these addresses for user applications is likely to conflict with future releases of support software.
Event | Vector Address | Register File Return Address |
---|---|---|
Reset |
C_BASE_VECTORS + 0x0 - C_BASE_VECTORS + 0x4 |
- |
User Vector (Exception) |
C_BASE_VECTORS + 0x8 - C_BASE_VECTORS + 0xC |
Rx |
Interrupt 1 |
C_BASE_VECTORS + 0x10 - C_BASE_VECTORS + 0x14 |
R14 |
Break: Non-maskable hardware |
C_BASE_VECTORS + 0x18 - C_BASE_VECTORS + 0x1C |
R16 |
Break: Hardware | ||
Break: Software | ||
Hardware Exception |
C_BASE_VECTORS + 0x20 - C_BASE_VECTORS + 0x24 |
R17 or BTR |
Reserved for future use |
C_BASE_VECTORS + 0x28 - C_BASE_VECTORS + 0x4F |
- |
|
All of these events will clear the reservation bit, used together with the LWX and SWX instructions to implement mutual exclusion, such as semaphores and spinlocks.