Determine precisely where interrupts came from
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sat, 1 Apr 2017 18:06:44 +0000 (11:06 -0700)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sat, 1 Apr 2017 18:06:44 +0000 (11:06 -0700)
romstage.c
start.s

index fd88544..d92b3ba 100644 (file)
@@ -158,6 +158,16 @@ void switch_vpu_to_pllc() {
        CM_TIMERCTL = CM_PASSWORD | CM_SRC_OSC | 0x10;\r
 }\r
 \r
+void set_interrupt(int intno, bool enable) {\r
+    int offset = 0x10 + ((intno >> 3) << 2);\r
+    uint32_t slot = 0xF << ((intno & 7) << 2);\r
+\r
+    uint32_t v = mmio_read32(IC0_BASE + offset) & ~slot;\r
+    mmio_write32(IC0_BASE + offset, enable ? v | slot : v);\r
+\r
+    printf("%d: %X\n", intno, mmio_read32(IC0_BASE + offset));\r
+}\r
+\r
 extern void sdram_init();\r
 extern void arm_init();\r
 extern void monitor_start();\r
@@ -170,9 +180,14 @@ void print_crap() {
 int _main(unsigned int cpuid, unsigned int load_address) {\r
        switch_vpu_to_pllc();\r
 \r
-       led_init();\r
        uart_init();\r
 \r
+       for(int i = 0; i < 64; ++i) {\r
+           set_interrupt(i, (i != (125 - 64)) && (i != (121 - 64)) && (i != (120 - 64)) && (i != (73 - 64)) && (i != (96 - 64)));\r
+       }\r
+\r
+       led_init();\r
+\r
        printf(\r
            "==================================================================\n"\r
            "::\n"\r
diff --git a/start.s b/start.s
index 2be74b2..57ab6fa 100644 (file)
--- a/start.s
+++ b/start.s
@@ -110,18 +110,18 @@ L_setup_hw_irq:
        mov r28, #0x1D000 
        mov sp, #0x1C000
 
-       /* unmask ARM interrupts */
+       /* mask interrupts */
        mov r0, #(IC0_BASE + 0x10)
        mov r1, #(IC1_BASE + 0x10)
-       mov r2, 0x11111111
-       mov r3, #(IC0_BASE + 0x10 + 0x10)
+       mov r2, 0x00000000
+       mov r3, #(IC0_BASE + 0x10 + 0x20)
 
-/*unmask_all:
+mask_all:
        st r2, (r0)
        st r2, (r1)
        add r0, 4
        add r1, 4
-       ble r0, r3, unmask_all*/
+       ble r0, r3, mask_all
  
        /* set interrupt vector bases */
        mov r3, #0x1B000
This page took 0.029053 seconds and 4 git commands to generate.