From: Erik M. <er...@us...> - 2001-10-07 14:51:50
|
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 |