reset interrupt will be thrown - hooray \o/
authortheStack <sebastian.falbesoner@gmail.com>
Mon, 31 Aug 2009 15:51:16 +0000 (17:51 +0200)
committertheStack <sebastian.falbesoner@gmail.com>
Mon, 31 Aug 2009 15:51:16 +0000 (17:51 +0200)
gecko.c
main.c

diff --git a/gecko.c b/gecko.c
index 49f57cfec7387c84e55f846ce687873a6c93836d..e4601abd93f76cc9ea7cd9bec54e13fbfd22c0b1 100644 (file)
--- a/gecko.c
+++ b/gecko.c
@@ -205,6 +205,7 @@ int printf(const char *fmt, ...) {
        if (!gecko_console_enabled)
                return 0;
 
+       udelay(100); // <- evil hack :)
        va_list args;
        char buffer[1024];
        int i;
diff --git a/main.c b/main.c
index acd97174cd0e328a07f8d60d821cfb1022430db7..4303241a7430baad434e3d21f297ed5b464043ab 100644 (file)
--- a/main.c
+++ b/main.c
@@ -115,6 +115,21 @@ int main(void)
 
        printf("bye, world!\n");
 
+       // enable RESET interrupt 
+       write32(0x0c003004, 1<<1);
+#define _CPU_ISR_Enable() \
+       { register u32 _val = 0; \
+         __asm__ __volatile__ ( \
+               "mfmsr %0\n" \
+               "ori %0,%0,0x8000\n" \
+               "mtmsr %0" \
+               : "=&r" ((_val)) : "0" ((_val)) \
+         ); \
+       }
+       _CPU_ISR_Enable()
+
+       while(1) {}
+
        return 0;
 }