IntrPriority (Compact 7)
This global variable array tells the MIPS kernel which interrupt should be given the highest priority when multiple interrupt requests are pending.
extern BYTE IntrPriority ;
Because there is no hard-coded priority scheme in MIPS architecture, the OAL uses two structures that provide information about nested interrupts: IntrPriority and IntrMask. In Windows Embedded Compact 7, both structures are part of the MIPS OAL and must be implemented by the OEM. The OEMInitGlobals function in oal.exe uses IntrPriority to set the pIntrPrio member of OEMGLOBAL. OEMInitGlobals sets the CPU-specific variables before OEMInit executes, so that the kernel can use them. Therefore, you must set pIntrPrio by using IntrPriority; do not set pIntrPrio directly.
The IntrPriority table determines, for a given combination of simultaneously pending interrupts, which interrupt is to be given the highest priority. The highest priority interrupt is then serviced first.
IntrPriority contains one entry for each combination of bits in the 6-bit interrupt field. The entry defines which interrupt to service next. The value is the bit number multiplied by four. Multiplying the bit number by four speeds indexing into the IntrMask array in the kernel code.
For example, if interrupts 1 and 3 are both pending, IntrPriority[0xA] = 1*4 indicates that interrupt 1 must be serviced first.