summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2013-03-20 13:49:27 -0500
committerRonald G. Minnich <rminnich@gmail.com>2013-03-20 21:48:32 +0100
commiteb06a4259b48128faed94b4ca3f8c64d3cd5a4c3 (patch)
treebd0f9ac205315f4443c35ea0c016e1da298f3885
parent1cc4737c3bc7e0b1e560f3d049f4edbef9340177 (diff)
downloadcoreboot-eb06a4259b48128faed94b4ca3f8c64d3cd5a4c3.tar.xz
x86: don't clear bss in ramstage entry
The cbfs stage loading routine already zeros out the full memory region that a stage will be loaded. Therefore, it is unnecessary to to clear the bss again after once ramstage starts. Change-Id: Icc7021329dbf59bef948a41606f56746f21b507f Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/2865 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
-rw-r--r--src/arch/x86/lib/c_start.S11
-rw-r--r--src/lib/cbfs.c1
2 files changed, 1 insertions, 11 deletions
diff --git a/src/arch/x86/lib/c_start.S b/src/arch/x86/lib/c_start.S
index 295283b24a..35bc26b789 100644
--- a/src/arch/x86/lib/c_start.S
+++ b/src/arch/x86/lib/c_start.S
@@ -29,17 +29,6 @@ _start:
cld
- /** clear bss, which unlike the stack is zero by definition */
- leal _bss, %edi
- movl $_ebss, %ecx
- subl %edi, %ecx
- jz .Lnobss
- shrl $2, %ecx /* it is 32 bit aligned, right? */
- xorl %eax, %eax
- rep
- stosl
-.Lnobss:
-
/** poison the stack. Code should not count on the
* stack being full of zeros. This stack poisoning
* recently uncovered a bug in the broadcast SIPI
diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c
index abb95abc3f..c56f550e17 100644
--- a/src/lib/cbfs.c
+++ b/src/lib/cbfs.c
@@ -129,6 +129,7 @@ void * cbfs_load_stage(struct cbfs_media *media, const char *name)
name,
(uint32_t) stage->load, stage->memlen,
stage->entry);
+ /* Stages rely the below clearing so that the bss is initialized. */
memset((void *) (uint32_t) stage->load, 0, stage->memlen);
if (cbfs_decompress(stage->compression,