aboutsummaryrefslogtreecommitdiff
path: root/sys/powerpc/aim/locore32.S
diff options
context:
space:
mode:
authorNathan Whitehorn <nwhitehorn@FreeBSD.org>2011-12-16 23:40:56 +0000
committerNathan Whitehorn <nwhitehorn@FreeBSD.org>2011-12-16 23:40:56 +0000
commitb059c637fb858da2bdac3774af4d90d66b2c753b (patch)
tree5f9c5feb3d8a959cf6c5a26d29cafd676207fd1e /sys/powerpc/aim/locore32.S
parentcf87966cfdcb678122b5e2b6b6448010e7cd6931 (diff)
downloadsrc-b059c637fb858da2bdac3774af4d90d66b2c753b.tar.gz
src-b059c637fb858da2bdac3774af4d90d66b2c753b.zip
Zero BSS on start, in case the ELF loader that started the kernel did not
do this for us. This can happen on some embedded systems. Submitted by: rpaulo
Notes
Notes: svn path=/head/; revision=228605
Diffstat (limited to 'sys/powerpc/aim/locore32.S')
-rw-r--r--sys/powerpc/aim/locore32.S11
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/powerpc/aim/locore32.S b/sys/powerpc/aim/locore32.S
index 020d22d4913d..9ad74fa49f5b 100644
--- a/sys/powerpc/aim/locore32.S
+++ b/sys/powerpc/aim/locore32.S
@@ -128,6 +128,17 @@ __start:
sync
isync
+ /* Zero bss, in case we were started by something unhelpful */
+ li 0,0
+ lis 8,_edata@ha
+ addi 8,8,_edata@l
+ lis 9,_end@ha
+ addi 9,9,_end@l
+2: stw 0,0(8)
+ addi 8,8,4
+ cmplw 8,9
+ blt 2b
+
/* Save the argument pointer and length */
mr 20,6
mr 21,7