diff options
author | Mike Frysinger <vapier@gentoo.org> | 2008-06-01 01:23:48 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2008-10-23 05:03:50 -0400 |
commit | 70c4c032ea112cc42aa1ce959c33fc4825eaef95 (patch) | |
tree | 669f0ec58f6d51698ae9e21f4544a34438ad319a | |
parent | 39782727e185860faa4884c2b04e84cb33d1c6cf (diff) |
Blackfin: enable support for nested interrupts
During cpu init, make sure we initialize the CEC properly so that
interrupts can fire and be handled while U-Boot is running.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r-- | cpu/blackfin/start.S | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/cpu/blackfin/start.S b/cpu/blackfin/start.S index 8303292a5..c4d52b485 100644 --- a/cpu/blackfin/start.S +++ b/cpu/blackfin/start.S @@ -75,7 +75,7 @@ ENTRY(_start) serial_early_puts("Init Registers"); - /* Disable nested interrupts and enable CYCLES for udelay() */ + /* Disable self-nested interrupts and enable CYCLES for udelay() */ R0 = CCEN | 0x30; SYSCFG = R0; @@ -180,7 +180,7 @@ ENTRY(_start) /* Now lower ourselves from the highest interrupt level to * the lowest. We do this by masking all interrupts but 15, - * setting the 15 handler to "board_init_f", raising the 15 + * setting the 15 handler to ".Lenable_nested", raising the 15 * interrupt, and then returning from the highest interrupt * level to the dummy "jump" until the interrupt controller * services the pending 15 interrupt. @@ -190,8 +190,8 @@ ENTRY(_start) r1 = r6; p0.l = LO(EVT15); p0.h = HI(EVT15); - p1.l = _cpu_init_f; - p1.h = _cpu_init_f; + p1.l = .Lenable_nested; + p1.h = .Lenable_nested; [p0] = p1; p2.l = LO(IMASK); p2.h = HI(IMASK); @@ -204,6 +204,12 @@ ENTRY(_start) reti = p4; rti; + /* Enable nested interrupts before continuing with cpu init */ +.Lenable_nested: + cli r7; + [--sp] = reti; + jump.l _cpu_init_f; + .LWAIT_HERE: jump .LWAIT_HERE; ENDPROC(_start) |