Visible to Intel only — GUID: mwh1416946893914
Ixiasoft
Visible to Intel only — GUID: mwh1416946893914
Ixiasoft
8.2.3.3. Managing Pre-Emption
The HAL enhanced interrupt API supports interrupt pre-emption. When pre-emption is enabled, a higher-level interrupt can take control even if an ISR is already running. A device driver must be specifically written to function correctly under pre-emption. When a device driver supports pre-emption, it publishes this capability through the isr_preemption_supported driver setting. When constructing the BSP, the SBT checks each device driver to determine whether it supports pre-emption. If all drivers in the BSP support pre-emption, it is enabled.
Legacy device drivers do not publish the isr_preemption_supported property. Therefore the SBT assumes that they do not support pre-emption. If your legacy custom driver supports pre-emption, and you want to allow pre-emption in the BSP, you must update the driver to use the enhanced interrupt API.
For more information and details about the isr_preemption_supported driver setting, refer to the set_sw_property command in the “Software Build Tools Tcl Commands” section of the "Nios II Software Build Tools Reference" chapter.
Operating systems can also publish the isr_preemption_supported property.
The HAL enhanced interrupt API supports automatic pre-emption. Automatic pre-emption means that maskable exceptions remain enabled when the processor accepts the hardware interrupt. This means that your ISR can immediately be pre-empted by a higher-level ISR, without any need to execute the eret instruction.
Automatic pre-emption can only take place when the pre-empting hardware interrupt uses a different register set from the interrupt being pre-empted.
Automatic pre-emption is only available if you enable it in the BSP settings.