diff options
-rw-r--r-- | src/boot.S | 14 | ||||
-rw-r--r-- | src/kernel.S | 5 |
2 files changed, 17 insertions, 2 deletions
@@ -14,7 +14,7 @@ reset: // set vector address. ldr r0, =vector - mcR P15, 0, r0, c12, c0, 0 + mcr p15, 0, r0, c12, c0, 0 // save cpsr. mrs r0, cpsr @@ -74,6 +74,16 @@ disable_irq: cpsid i bx lr +.globl enable_fiq +enable_fiq: + cpsie i + bx lr + +.globl disable_fiq +disable_fiq: + cpsid f + bx lr + .align 5 vector: ldr pc, reset_handler @@ -93,6 +103,8 @@ data_handler: .word io_halt unused_handler: .word io_halt irq_handler: .word irq fiq_handler: .word io_halt +//irq_handler: .word io_halt +//fiq_handler: .word irq .global a_irq_handler a_irq_handler: diff --git a/src/kernel.S b/src/kernel.S index 02894a6..f82d624 100644 --- a/src/kernel.S +++ b/src/kernel.S @@ -10,10 +10,13 @@ kernel_main: mov r0, #0x00 kernel_main.a: cmp r0, #0x100 - beq kernel_main.loop + beq kernel_main.b bl uart_char add r0, #1 b kernel_main.a +kernel_main.b: + mov r0, #0x0A + bl uart_char kernel_main.loop: bl io_halt b kernel_main.loop |