3.7.3. CPU interface summary

The CPU interface registers are described in this section. Table 3.42 shows the CPU interface registers and the following sections provide details about each individual register.

Table 3.42. CPU interface registers

NameOffsetTypeWidthResetDescription
Control0x000RW10x00000000Control register
PriorityMask0x004RW40x00000000Priority Mask register
BinaryPoint0x008RW30x00000003Binary Point register
IrqAck0x00CRO130x000003FFInterrupt Ack register
EndIrq0x010WO13-End of Interrupt (EIO) register
RunningPriority0x014RO40x000000FFRunning Rriority register
HighestPendingIrq0x018RO130x000003FFHighest Pending Interrupt register

Control register

Table 3.43 shows bit assignments for the CPU Interface Control register.

Table 3.43. CPU Interface Control register bit assignments

NameBitsTypeFunction
-31:1RWReserved. SBZ
Enable0RWEnable

Priority Mask register

Use the Priority Mask to prevent interrupts from being sent to the CPU. The CPU interface asserts an interrupt request to the CPU if, and only if, the priority of the highest pending interrupt sent by the interrupt distributor is strictly higher than the mask value set in the Priority Mask Register.

One consequence of the strict comparison is that lowest priority interrupt will never cause the assertion of interrupt request to the CPU. This allows an extra level of interrupt enabling. Although an interrupt can be pending, it will never be seen by the CPU. Table 3.44 shows bit assignments for the Priority Mask register.

Table 3.44. Priority Mask Register bit assignments

NameBitsTypeFunction
Priority Mask7:4RWUsed to determine if the CPU interface asserts an interrupt request to CPU, if and only if the priority of the highest pending interrupt sent by the interrupt distributor is strictly higher than the mask set in this register.

Binary Point register

Binary point register is used to specify a certain number of bits to ignore in the priority comparison made in the CPU interface for pre-emption stack. Table 3.45 shows bit assignments for the Binary Pointer register.

Table 3.45. Binary Pointer Register bit assignments

NameBitsTypeFunction
SBZ/UNP31:3RW-
Binary Point2:0If this is set, ignore bits in priority comparison made in CPU interface for pre-emption stack.

Table 3.46 shows the meanings for Binary Point values:

Table 3.46. Binary Point value meanings

ValueMeaning
000Bits [7:1] of the priority are used to determine pre-emption
001Bits [7:2] of the priority are compared for pre-emption.
010Bits [7:3] of the priority are compared for pre-emption.
011Bits [7:4] of the priority are compared for pre-emption.
100Bits [7:5] of the priority are compared for pre-emption.
101Bits [7:6] of the priority are compared for pre-emption.
110Bits [7:7] of the priority are compared for pre-emption.
111 No pre-emption is performed. All bits of the priority are used for prioritization.

You can restrict the lowest value to any value from 0 to 4. If you attempt to specify a value less than the set minimum, the minimum value is used. This value can be read back to enable software discovery. At reset, the register takes its minimum supported value.

Interrupt Acknowledge Register

The Interrupt Acknowledge Register is a read-only register used by the CPU to determine the ID of the interrupt asserted by the CPU interface. Table 3.47 shows bit assignments for the Interrupt Acknowledge Register.

Table 3.47. Interrupt Acknowledge Register bit assignments

NameBitsTypeFunction
SBZ/RAZ31:13RO-
CPU source ID12:10

CPU source ID value.

Depends on Interrupt ID field:

  • If Interrupt ID field is 0 to 15, contains ID of the CPU that requested the IPI.

  • In all other cases, CPU source ID field is read as zero. This can be ignored.

Interrupt ID9:0Interrupt identifier

End of Interrupt (EOI) Register

This write-only register is used when the software finishes handling an interrupt. Table 3.48 shows bit assignments for the EOI Register.

Table 3.48. End of Interrupt Register bit assignments

NameBitsTypeFunction
SBZ/RAZ31:13WO-
CPU source ID12:10

CPU source ID value.

Depends on Interrupt ID field:

  • If Interrupt ID field is 0 to 15, contains ID of the CPU that requested the IPI.

  • In all other cases, CPU source ID field is read as zero. This can be ignored.

Interrupt ID9:0Interrupt identifier

Running Interrupt Register

This read-only register contains the priority level of the currently running interrupts on the CPU. Table 3.49 shows bit assignments for the Running Interrupt Register.

Table 3.49. Running interrupt Register bit assignments

NameBitsTypeFunction
SBZ/UNP31:8RO-
Priority7:4Indicates priority level of the current running interrupt.
SBZ3:0-

When no interrupt is running, defined as acknowledged by reading acknowledge register but not ended by writing to EOI register, the priority value read is 0xFF.

Highest Pending Interrupt Register

The Highest Pending Interrupt Register contains the Interrupt ID and CPU ID of the Highest Pending Interrupt for this CPU. If no interrupt is pending, the Interrupt ID returned is 0x3FF. This indicates a spurious interrupt.

The format of the register is the same as the Interrupt Acknowledge Register. Table 3.50 shows bit assignments for the Highest Pending Interrupt Register.

Table 3.50. Highest Pending interrupt Register bit assignments

NameBitsTypeFunction
SBZ/RAZ31:13WO-
CPU Source ID12:10

CPU source ID value.

Depends on Interrupt ID field:

  • If Interrupt ID field is 0 to 15, contains ID of the CPU that requested the IPI.

  • In all other cases, CPU source ID field is read as zero. This can be ignored.

Interrupt ID9:0Interrupt identifier
Copyright © 2007 ARM Limited. All rights reserved.ARM DDI 0375A
Non-Confidential