aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/irq.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/irq.S')
-rw-r--r--src/cpu/irq.S82
1 files changed, 0 insertions, 82 deletions
diff --git a/src/cpu/irq.S b/src/cpu/irq.S
deleted file mode 100644
index fbb6ab7..0000000
--- a/src/cpu/irq.S
+++ /dev/null
@@ -1,82 +0,0 @@
-a_irq_handler:
- push {lr}
- cpsid i // Disable IRQ
- // r2 = CORE0_INTERRUPT_SOURCE
- // if r2 & 0b100000000
- mov r2, #0x40000000
- ldr r3, [r2, #0x60]
- tst r3, #256
- beq a_irq_handler.timer
- // r2 = IRQ_PEND2
- // r2 & 1 << 25
- mov r2, #0xB208
- movt r2, #0x3F00
- ldr r3, [r2]
- tst r3, #0x2000000
- beq a_irq_handler.exit
- mov r2, #0x1040
- movt r2, #0x3F20
- ldr r3, [r2]
- tst r3, #16
- beq a_irq_handler.exit
- mov r2, #0x1000
- movt r2, #0x3F20
- ldrb r0, [r2]
- push {r0}
-
- // If 't' was pressed
- // disable timer
- cmp r0, #0x74
- bne a_irq_handler.ttimer
- mrc p15, #0, r0, c14, c3, #1
- cmp r0, #0
- beq a_irq_handler.etimer
- // Disable
- mov r0, #0
- mcr p15, 0, r0, c14, c3, 1
- b a_irq_handler.ttimer
-a_irq_handler.etimer:
- // Enable
- ldr r0, =cntfrq
- bl write_cntv_tval
- mov r0, #1
- mcr p15, 0, r0, c14, c3, 1
- // Otherwise continue
-a_irq_handler.ttimer:
- pop {r0}
- bl uart_char
- ldr r0, =imsg
- bl uart_string
- cpsie i // Enable IRQ
- pop {pc}
-a_irq_handler.timer:
-
- // r2 = CORE0_INTERRUPT_SOURCE
- // if r2 & 0b1000
- mov r2, #0x40000000
- ldr r3, [r2, #0x60]
- tst r3, #8
- beq a_irq_handler.exit
- bl c_timer
- //ldr r0, =imsg
- //bl uart_string
-a_irq_handler.exit:
- cpsie i // Enable IRQ
- pop {pc}
-
-.globl a_fiq_handler
-a_fiq_handler:
- push {lr}
- cpsie f // Disable FIQ
- bl c_timer
- ldr r0, =fmsg
- bl uart_string
-a_fiq_handler.exit:
- cpsie f // Enable FIQ
- pop {pc}
-
-.section ".data"
-imsg:
- .asciz " asm_irq_handler\n"
-fmsg:
- .asciz " asm_fiq_handler\n"