From a826a645a67c2be3c7acb097c436c810da728ed7 Mon Sep 17 00:00:00 2001
From: Christian Cunningham <cc@localhost>
Date: Thu, 6 Jan 2022 00:28:22 -0800
Subject: Move irq enable/disable to handler

---
 src/boot.S    | 2 ++
 src/cpu/irq.c | 3 ---
 2 files changed, 2 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/boot.S b/src/boot.S
index f21c4fe..badb655 100644
--- a/src/boot.S
+++ b/src/boot.S
@@ -55,7 +55,9 @@ reset:
 
 irq:
 	push {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+	cpsid i
 	bl c_irq_handler
+	cpsie i
 	pop  {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
 	subs pc, lr, #4
 
diff --git a/src/cpu/irq.c b/src/cpu/irq.c
index 28ad886..0d6e9de 100644
--- a/src/cpu/irq.c
+++ b/src/cpu/irq.c
@@ -13,7 +13,6 @@ void localtest(void);
 
 void c_irq_handler(void)
 {
-	disableirq();
 	unsigned long source = load32(CORE0_IRQ_SOURCE);
 	if (source & (1 << 8)) {
 		if(load32(IRQ_PENDING2) & (1 << 25)) {
@@ -94,13 +93,11 @@ void c_irq_handler(void)
 				g_Drawer.y = 7;
 				write_string(&g_Drawer, "> ");
 				write_string(&g_Drawer, cmd);
-				enableirq();
 				return;
 			}
 		}
 	} else if (source & (1 << 3)) {
 		c_timer();
-		enableirq();
 		return;
 	}
 	return;
-- 
cgit v1.2.1