Update of /cvsroot/blob/blob/src
In directory usw-pr-cvs1:/tmp/cvs-serv12297
Modified Files:
start.S ledasm.S
Log Message:
cleanup LED blinker
all faults now let the LED blink
Index: start.S
===================================================================
RCS file: /cvsroot/blob/blob/src/start.S,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- start.S 2001/10/04 16:37:06 1.6
+++ start.S 2001/10/07 14:51:46 1.7
@@ -111,7 +111,6 @@
/* setup memory */
bl memsetup
-
/* check if this is a wake-up from sleep */
ldr r0, RST_BASE
ldr r1, [r0, #RCSR]
@@ -203,33 +202,31 @@
badram:
- b blinky
+ mov r6, #2
+ b endless_blink
-
-
-blinky:
- /* This is test code to blink the LED
- very useful if nothing else works */
- bl led_on
- bl wait_loop
- bl led_off
- bl wait_loop
- b blinky
-wait_loop:
+endless_blink:
+ bl wait
+ mov r0, r6
+ bl led_blink
+ b endless_blink
+
+wait:
/* busy wait loop*/
- mov r2, #0x1000000
-wait_loop1:
- subs r2, r2, #1
- bne wait_loop1
+ mov r5, #0x1000000
+wait0:
+ subs r5, r5, #1
+ bne wait0
mov pc, lr
undefined_instruction:
- b blinky
+ mov r6, #3
+ b endless_blink
@@ -240,34 +237,42 @@
* problem is in the kernel: you should *disable* CONFIG_ANGELBOOT
* simply because blob is not angel. -- Erik
*/
- b blinky
+ mov r6, #4
+ b endless_blink
+
prefetch_abort:
- b blinky
+ mov r6, #5
+ b endless_blink
data_abort:
- b blinky
+ mov r6, #6
+ b endless_blink
not_used:
- b blinky
+ /* we *should* never reach this */
+ mov r6, #7
+ b endless_blink
irq:
- b blinky
+ mov r6, #8
+ b endless_blink
fiq:
- b blinky
+ mov r6, #9
+ b endless_blink
Index: ledasm.S
===================================================================
RCS file: /cvsroot/blob/blob/src/ledasm.S,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ledasm.S 2001/10/04 12:17:37 1.3
+++ ledasm.S 2001/10/07 14:51:46 1.4
@@ -74,39 +74,43 @@
.globl led_off
- /* turn LED off. clobbers r0 and r1 */
+ /* turn LED off. clobbers r0 - r2 */
led_off:
ldr r0, GPIO_BASE
ldr r1, LED
str r1, [r0, #GPCR]
mov pc, lr
-.globl led_blink
- /* blinks LED r2 times. clobbers r0 and r1, changes r2 */
-led_blink:
-loop0:
- /* led off */
- ldr r0, GPIO_BASE
- ldr r1, LED
- str r1, [r0, #GPSR]
- mov r0, #0x20000
-wloop1:
- subs r0, r0, #1
- bne wloop1
+ /* busy wait loop. clobbers r0 */
+wait_loop:
+ mov r0, #0x400000
+wait_loop1:
+ subs r0, r0, #1
+ bne wait_loop1
+ mov pc, lr
- /* led on */
- ldr r0, GPIO_BASE
- ldr r1, LED
- str r1, [r0, #GPCR]
+
+blinky:
+ /* blink LED. clobbers r0 and r1 */
+ mov r2, lr
+ bl led_off
+ bl wait_loop
+ bl led_on
+ bl wait_loop
+ mov pc, r2
- mov r0, #0x20000
-wloop2:
- subs r0, r0, #1
- bne wloop2
- subs r2, r2, #1
- bne loop0
+.globl led_blink
+ /* blinks LED r0 times */
+ /* clobbers r0 - r4 */
+led_blink:
+ mov r4, lr
+ mov r3, r0
- mov pc, lr
+blink0:
+ bl blinky
+ subs r3, r3, #1
+ bne blink0
+ mov pc, r4
|