aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Cunningham <cc@localhost>2021-11-13 00:12:01 -0700
committerChristian Cunningham <cc@localhost>2021-11-13 00:12:01 -0700
commit524649007feb5f978fca83b5c885cd58481e0969 (patch)
treefe08358f843aec9fbc86cc0e709a57cba5d599cd
parent5dd65b890ff476617869d2164bc2d652c6f68d2e (diff)
Fixed FIQ
-rw-r--r--README.md4
-rw-r--r--src/boot.S11
-rw-r--r--src/kernel.S20
3 files changed, 18 insertions, 17 deletions
diff --git a/README.md b/README.md
index c48b8c5..76ef104 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/src/boot.S b/src/boot.S
index 17cc794..89a99cc 100644
--- a/src/boot.S
+++ b/src/boot.S
@@ -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