summaryrefslogtreecommitdiff
path: root/cpu/xscale/start.S
diff options
context:
space:
mode:
authorwdenk <wdenk>2003-03-06 13:39:27 +0000
committerwdenk <wdenk>2003-03-06 13:39:27 +0000
commit47cd00fa707af9de76408b69d3e911717dbbfab1 (patch)
treedd887729a4eaf11e7a225563f4c604ef4b7d695b /cpu/xscale/start.S
parentdb2f721ffcf9693086a7e5c6c7015f2019e7f52e (diff)
downloadu-boot-imx-47cd00fa707af9de76408b69d3e911717dbbfab1.zip
u-boot-imx-47cd00fa707af9de76408b69d3e911717dbbfab1.tar.gz
u-boot-imx-47cd00fa707af9de76408b69d3e911717dbbfab1.tar.bz2
* Patches by Robert Schwebel, 06 Mar 2003:
- fix bug in BOOTP code (must use NetCopyIP) - update of CSB226 port - clear BSS segment on XScale - added support for i2c_init_board() function - update to the Innokom plattform * Extend support for redundand environments for configurations where environment size < sector size
Diffstat (limited to 'cpu/xscale/start.S')
-rw-r--r--cpu/xscale/start.S26
1 files changed, 25 insertions, 1 deletions
diff --git a/cpu/xscale/start.S b/cpu/xscale/start.S
index e63fece..3d9784e 100644
--- a/cpu/xscale/start.S
+++ b/cpu/xscale/start.S
@@ -84,6 +84,17 @@ _armboot_end:
.word armboot_end
/*
+ * This is defined in the board specific linker script
+ */
+.globl _bss_start
+_bss_start:
+ .word bss_start
+
+.globl _bss_end
+_bss_end:
+ .word bss_end
+
+/*
* _armboot_real_end is the first usable RAM address behind armboot
* and the various stacks
*/
@@ -143,7 +154,20 @@ copy_loop:
ldr r0, _uboot_reloc /* upper 128 KiB: relocated uboot */
sub r0, r0, #CFG_MALLOC_LEN /* malloc area */
/* FIXME: bdinfo should be here */
- sub sp, r0, #12 /* leave 3 words for abort-stack */
+ sub sp, r0, #12 /* leave 3 words for abort-stack */
+
+clear_bss:
+
+ ldr r0, _bss_start /* find start of bss segment */
+ add r0, r0, #4 /* start at first byte of bss */
+ ldr r1, _bss_end /* stop here */
+ mov r2, #0x00000000 /* clear */
+
+clbss_l:str r2, [r0] /* clear loop... */
+ add r0, r0, #4
+ cmp r0, r1
+ bne clbss_l
+
ldr pc, _start_armboot