Latest News
!System updates

Development tools
C/C++ Tools

Writing 32-bit code
32-bit introduction
32-bit overview
32-bit technical
Memory issues
Developer tools
Paul Skirrow's Guide (PDF)
Download area

32-bit APIs
API changes
CallASWI
FileCore

RISC OS 5
Overview
BBC BASIC
CDFS driver
OS_ClaimDeviceVector behaviour
CDFS
Draw clipping
GraphicsV
HAL
Internet
UTF8 & Japanese support
International IME support
MIMEMap
Module PostInit/Final
PCI Manager
PDumper
Podules
Resource allocation
SCSI
Service Calls
UCS fonts
USB
WIMP API Changes
WIMP Flags

IYONIX pc
DDR memory
Help system
Keyboard layout
Miscellaneous
PCI slots

Opportunities

Iyonix Ltd
IYONIX home page
Contact details

   

New ClaimDeviceVector behaviour

R3 and R4 are meaningless, except for podule IRQ and FIQ-as-IRQ, which keep the same behaviour as previously. (This is currently done in the Kernel, but should be deferred to the Podule Manager).

For other claimants, if bit 31 of the R0 is set in the OS_ClaimDeviceVector call, the interrupt will be passed on to earlier claimants unless your routine claims the vector. This behaviour is then the same as IrqV claimants. It is up to you to determine whether your device has interrupted. If it has, you should service it, and claim the vector (by pulling the return address off the stack). If not, pass the vector along. If no handlers claim the vector, then the OS knows that there is no device driver able to handle the interrupt being asserted, so it will mask off that line.

If you do not claim the vector, you must preserve R0 and R3. R1,R2,R12 may be corrupted.

It is critical that your claiming or not is purely on the basis of whether your card is interrupting, and is accurate. Not claiming when your card is interrupting, or claiming when it isn't can both cause incorrect system behaviour.

© 2006 IYONIX Ltd 32-bit RISC OS