Each PLIC interrupt source can be assigned a priority by writing to its 32-bit memory-mapped
priority
register. The E31 Core Complex supports 7 levels of priority. A priority value of 0 is
reserved to mean "never interrupt" and effectively disables the interrupt. Priority 1 is the lowest
active priority, and priority 7 is the highest. Ties between global interrupts of the same priority
are broken by the Interrupt ID; interrupts with the lowest ID have the highest effective priority.
See Table 14 for the detailed register description.
PLIC Interrupt Priority Register (
priority
)
Base Address
0x0C0 4 × Interrupt ID
Bits
Field Name
Attr.
Rst.
Description
[2:0]
Priority
RW
X
Sets the priority for a given global inter-
rupt.
[31:3]
Reserved
RO
0
Table 14:
PLIC Interrupt Priority Registers
The current status of the interrupt source pending bits in the PLIC core can be read from the
pending array, organized as 4 words of 32 bits. The pending bit for interrupt ID
is stored in bit
of word
. As such, the E31 Core Complex has 4 interrupt pending regis-
ters. Bit 0 of word 0, which represents the non-existent interrupt source 0, is hardwired to zero.
A pending bit in the PLIC core can be cleared by setting the associated enable bit then perform-
ing a claim as described in Section 7.7.
PLIC Interrupt Pending Register 1 (
pending1
)
Base Address
0x0C00_1000
Bits
Field Name
Attr.
Rst.
Description
0
Interrupt 0 Pend-
ing
RO
0
Non-existent global interrupt 0 is hard-
wired to zero
1
Interrupt 1 Pend-
ing
RO
0
Pending bit for global interrupt 1
2
Interrupt 2 Pend-
ing
RO
0
Pending bit for global interrupt 2
…
31
Interrupt 31 Pend-
ing
RO
0
Pending bit for global interrupt 31
Table 15:
PLIC Interrupt Pending Register 1
Copyright © 2017–2018, SiFive Inc. All rights reserved.
26