Entry | |
---|---|
R0 | Device number * flag in bit31 |
R1 | Address of device driver routine |
R2 | Value to be passed in R12 when driver is called |
R3 | Address of interrupt status if R0 = podule “IRQ” or “FIQ as IRQ” on entry |
R4 | Interrupt mask to use, if R0 = podule “IRQ” or “FIQ as IRQ” on entry |
Exit | |
---|---|
R0 | Preserved |
R1 | Preserved |
R2 | Preserved |
R3 | Preserved |
R4 | Preserved |
The purpose of this call is to claim a device vector.
This installs the device driver. If the same driver has already been installed on the vector then the old copy is removed from the vector. This does not enable interrupts from the device. The previous driver is added to the list of earlier claimants. Your driver is called if the IO controller receives an interrupt from the appropriate device, the corresponding interrupt mask bit is set, and your driver was the last to claim the vector.
When your code is being called, you’ll find the following entry conditions:
Your routine should:
MOV PC, R14
You should ensure: