This set of registers is mainly used to set the interrupt priority. Each register can set four interrupt priorities, each of which corresponds to eight bits, the maximum value of each interrupt priority is 255, and the minimum value is 0. The smaller the value, the higher the interrupt priority. The offset range of the register relative to the distributor base address is 0x400-0x7f8;
The number of registers in this group is determined by the value of gicd_typer.itlinesnumber, which is (8 * (gicd_typer.itlinesnumber + 1). The four fields divided by each register are:
[31: 24] Priority, byte offset 3
[23: 16] Priority, byte offset 2
[15:8] Priority, byte offset 1
[7:0] Priority, byte offset 0
The calculation method of the register for which each interrupt operation sets its own interrupt priority and the domain of each register is as follows:
For interrupt IDM, When Div and MoD are the integer division and modulo operations:
The corresponding gicd_ipriorityrnnumber,N, Is givenN=MDiv 4
The offset of the required gicd_ipriorityrnis (0x400 + (4 *N))
The Byte offset of the required priority field in this register isMMoD 4, where:
-Byte offset 0 refers to register bits [7:0]
-Byte offset 1 refers to register bits []
-Byte offset 2 refers to register bits [23: 16]
-Byte offset 3 refers to register bits [31: 24].
interrupt priority registers and gicd_ipriorityrn of distributor