diff options
Diffstat (limited to 'lib/ultralib/src/gio/giorawinterrupt.c')
| -rw-r--r-- | lib/ultralib/src/gio/giorawinterrupt.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/ultralib/src/gio/giorawinterrupt.c b/lib/ultralib/src/gio/giorawinterrupt.c new file mode 100644 index 0000000..64652d3 --- /dev/null +++ b/lib/ultralib/src/gio/giorawinterrupt.c @@ -0,0 +1,18 @@ +#include "PR/os_internal.h" +#include "PR/rcp.h" + +void __osGIORawInterrupt(s32 value) { + register u32 stat; + + stat = IO_READ(PI_STATUS_REG); + while (stat & (PI_STATUS_DMA_BUSY | PI_STATUS_IO_BUSY)) { + stat = IO_READ(PI_STATUS_REG); + } + + IO_WRITE(GIO_GIO_INTR_REG, value); + + stat = IO_READ(PI_STATUS_REG); + while (stat & (PI_STATUS_DMA_BUSY | PI_STATUS_IO_BUSY)) { + stat = IO_READ(PI_STATUS_REG); + } +} |
