diff options
Diffstat (limited to 'src/irs.s')
-rw-r--r-- | src/irs.s | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -17,7 +17,7 @@ irs_main: | |||
17 | 17 | ||
18 | @ r0 = irs_table address pointer | 18 | @ r0 = irs_table address pointer |
19 | @ r2 = tmp | 19 | @ r2 = tmp |
20 | @ r3 = 0 (for r3; r3 < 14; r3++) | 20 | @ r3 = 0 (for r3; r3 < 14; r3++) |
21 | ldr r0, = irs_table | 21 | ldr r0, = irs_table |
22 | irs_main_fp_search: | 22 | irs_main_fp_search: |
23 | @ Check that the current index is an active IRQ. | 23 | @ Check that the current index is an active IRQ. |
@@ -47,9 +47,8 @@ irs_main_handle_irs: | |||
47 | mov r0, #1 | 47 | mov r0, #1 |
48 | lsl r0, r0, r3 | 48 | lsl r0, r0, r3 |
49 | strh r0, [ip, #2] | 49 | strh r0, [ip, #2] |
50 | ldr r1, [ip, #-0x208] | 50 | ldr r1, mem_irq_ack_bios @ r1 = IRQ_ACK_BIOS |
51 | orr r1, r1, r0 | 51 | str r0, [r1] |
52 | str r1, [ip, #-0x208] | ||
53 | 52 | ||
54 | @ Store the SPSR in one of the free registers and save it along with the | 53 | @ Store the SPSR in one of the free registers and save it along with the |
55 | @ return pointer. | 54 | @ return pointer. |
@@ -86,3 +85,5 @@ irs_main_exit: | |||
86 | 85 | ||
87 | mem_irq_base_reg: | 86 | mem_irq_base_reg: |
88 | .word 0x04000200 @ IRQ_ENABLE | 87 | .word 0x04000200 @ IRQ_ENABLE |
88 | mem_irq_ack_bios: | ||
89 | .word 0x03007FF8 @ IRQ_ACK_BIOS | ||