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>
This commit is contained in:
parent
1cc4737c3b
commit
eb06a4259b
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue