aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/exceptions/undefined.S3
-rw-r--r--src/sys/kernel.S22
2 files changed, 9 insertions, 16 deletions
diff --git a/src/exceptions/undefined.S b/src/exceptions/undefined.S
index b8eab29..ef00735 100644
--- a/src/exceptions/undefined.S
+++ b/src/exceptions/undefined.S
@@ -17,8 +17,7 @@ undefined:
ldr r2, =undefined_at
bl draw_string
// Output lr
- mov r1, #0x1000
- ldr r0, [r1, #-4]
+ ldr r0, [sp, #0x34]
sub r2, r0, #4
mov r0, #31
mov r1, #17
diff --git a/src/sys/kernel.S b/src/sys/kernel.S
index 93074b6..119a00d 100644
--- a/src/sys/kernel.S
+++ b/src/sys/kernel.S
@@ -3,20 +3,14 @@
.globl kernel_main
kernel_main:
bl sysinit
- // ///https://wiki.osdev.org/ARM_Paging
- // // Query the ID_MMFR0 register
- // mrc p15, 0, r0, c0, c1, 4
- // bl uart_hexn
- // // Switch to user mode
- // cps #0x10
- // // Intentional undefined instruction
- // //.word 0xf7f0a000
- // // This will fail in user mode
- // mrc p15, 3, r0, c15, c0, 0
- // // Supervisor Call #1 - Does nothing special
- // svc #1
- // mrs r0, cpsr
- // bl uart_hexn
+ ///https://wiki.osdev.org/ARM_Paging
+ // Query the ID_MMFR0 register
+ mrc p15, 0, r2, c0, c1, 4
+ mov r0, #0
+ mov r1, #7
+ bl draw_hex32
+ // Intentional undefined instruction
+ // .word 0xf7f0a000
cpsie aif, #0x10
svc #2 // Start scheduling!
1: