diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/boot.S | 27 |
1 files changed, 18 insertions, 9 deletions
@@ -9,8 +9,12 @@ reset: // disable core0,1,2. mrc p15, #0, r1, c0, c0, #5 and r1, r1, #3 - cmp r1, #0 - bne io_halt + cmp r1, #1 + beq core1run + cmp r1, #2 + beq core2run + cmp r1, #3 + bge core3run // set vector address. ldr r0, =vector @@ -82,6 +86,9 @@ irq: pop {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} subs pc, lr, #4 +core1run: +core2run: +core3run: .globl io_halt io_halt: wfi @@ -101,6 +108,7 @@ undefined: // Output lr mov r1, #0x1000 ldr r0, [r1, #-4] + sub r0, #4 bl uart_hexn // Skip instruction for now // In future, @@ -144,12 +152,13 @@ io_halt_data: sub r0, #8 bl uart_hexn ldmfd sp!, {r0-r12,pc}^ -io_halt_fiq: - ldr r0, =fiq_msg - push {lr} - bl uart_string - pop {lr} - b io_halt +fiq: + stmfd sp!, {r0-r12,lr} + //ldr r0, =fiq_msg + //bl uart_string + bl c_fiq_handler + ldmfd sp!, {r0-r12,lr} + subs pc, lr, #4 .align 5 vector: @@ -169,7 +178,7 @@ prefetch_handler: .word io_halt_prefetch data_handler: .word io_halt_data unused_handler: .word io_halt irq_handler: .word irq -fiq_handler: .word io_halt_fiq +fiq_handler: .word fiq .section .data undefined_msg: .asciz "Undefined Handler\nUNDEF " |