nios2: consolidate reset initialization
authorThomas Chou <thomas@wytron.com.tw>
Tue, 20 Apr 2010 03:01:11 +0000 (11:01 +0800)
committerScott McNutt <smcnutt@psyent.com>
Sat, 24 Apr 2010 22:21:23 +0000 (18:21 -0400)
Global interrupt should be disabled from the beginning.

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
Signed-off-by: Scott McNutt <smcnutt@psyent.com>
arch/nios2/cpu/start.S

index 31cd5b004a0502d4ef38e6faa0ab3c4f86162aa0..d1016ea718370edf951299759895614b8af43854 100644 (file)
@@ -34,6 +34,7 @@
        .global _start
 
 _start:
+       wrctl   status, r0              /* Disable interrupts */
        /* ICACHE INIT -- only the icache line at the reset address
         * is invalidated at reset. So the init must stay within
         * the cache line size (8 words). If GERMS is used, we'll
@@ -43,10 +44,9 @@ _start:
        ori     r4, r0, %lo(CONFIG_SYS_ICACHELINE_SIZE)
        movhi   r5, %hi(CONFIG_SYS_ICACHE_SIZE)
        ori     r5, r5, %lo(CONFIG_SYS_ICACHE_SIZE)
-       mov     r6, r0
-0:     initi   r6
-       add     r6, r6, r4
-       bltu    r6, r5, 0b
+0:     initi   r5
+       sub     r5, r5, r4
+       bgt     r5, r0, 0b
        br      _except_end     /* Skip the tramp */
 
        /* EXCEPTION TRAMPOLINE -- the following gets copied
@@ -62,7 +62,6 @@ _except_end:
        /* INTERRUPTS -- for now, all interrupts masked and globally
         * disabled.
         */
-       wrctl   status, r0              /* Disable interrupts */
        wrctl   ienable, r0             /* All disabled */
 
        /* DCACHE INIT -- if dcache not implemented, initd behaves as