diff options
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | src/boot.S | 11 | ||||
-rw-r--r-- | src/kernel.S | 20 |
3 files changed, 18 insertions, 17 deletions
@@ -1,4 +1,2 @@ -This simple example uart rx interrupt on QEMU raspi2 model. -This program only supports QEMU raspi2 model, and does not work on real hardware. - +https://datasheets.raspberrypi.com/bcm2835/bcm2835-peripherals.pdf @@ -59,6 +59,11 @@ irq: pop {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} subs pc, lr, #4 +fiq: + push {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} + pop {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} + subs pc, lr, #4 + .globl io_halt io_halt: wfi @@ -76,7 +81,7 @@ disable_irq: .globl enable_fiq enable_fiq: - cpsie i + cpsie f bx lr .globl disable_fiq @@ -102,9 +107,7 @@ prefetch_handler: .word io_halt 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 +fiq_handler: .word fiq .global a_irq_handler a_irq_handler: diff --git a/src/kernel.S b/src/kernel.S index f82d624..292fa84 100644 --- a/src/kernel.S +++ b/src/kernel.S @@ -7,16 +7,16 @@ kernel_main: bl enable_irq ldr r0, =os_info bl uart_string - mov r0, #0x00 -kernel_main.a: - cmp r0, #0x100 - beq kernel_main.b - bl uart_char - add r0, #1 - b kernel_main.a -kernel_main.b: - mov r0, #0x0A - bl uart_char +// mov r0, #0x00 +//kernel_main.a: +// cmp r0, #0x100 +// 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 |