S3: Use old heap during normal boot
During normal boot, the cbmem is uninitialized. So it is illegal to find the heap in cbmem. Change-Id: I8b5e1dbf1124819ed91693a86a6dbe41aea109e5 Signed-off-by: Zheng Bao <zheng.bao@amd.com> Signed-off-by: zbao <fishbaozi@gmail.com> Reviewed-on: http://review.coreboot.org/904 Tested-by: build bot (Jenkins) Reviewed-by: Marc Jones <marcj303@gmail.com>
This commit is contained in:
parent
899608dc5d
commit
3f788e1f70
|
@ -23,6 +23,7 @@
|
|||
#include "Porting.h"
|
||||
#include "AGESA.h"
|
||||
|
||||
#define BIOS_HEAP_START_ADDRESS 0x10000 /* HEAP during cold boot */
|
||||
#define BIOS_HEAP_SIZE 0x20000
|
||||
#define BSP_STACK_BASE_ADDR 0x30000
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include <arch/io.h>
|
||||
#include <cpu/amd/agesa/s3_resume.h>
|
||||
#include <cbmem.h>
|
||||
#include <arch/acpi.h>
|
||||
|
||||
#define FILECODE UNASSIGNED_FILE_FILECODE
|
||||
|
||||
|
@ -250,11 +251,15 @@ UINT32 GetHeapBase(
|
|||
AMD_CONFIG_PARAMS *StdHeader
|
||||
)
|
||||
{
|
||||
UINT32 high_heap;
|
||||
UINT32 heap;
|
||||
|
||||
high_heap = (UINT32)cbmem_find(CBMEM_ID_RESUME_SCRATCH) + (CONFIG_HIGH_SCRATCH_MEMORY_SIZE - BIOS_HEAP_SIZE); /* base + high_stack_size */
|
||||
/* Both romstage and ramstage has this S3 detect. */
|
||||
if (acpi_get_sleep_type() == 3)
|
||||
heap = (UINT32)cbmem_find(CBMEM_ID_RESUME_SCRATCH) + (CONFIG_HIGH_SCRATCH_MEMORY_SIZE - BIOS_HEAP_SIZE); /* himem_heap_base + high_stack_size */
|
||||
else
|
||||
heap = BIOS_HEAP_START_ADDRESS; /* low mem */
|
||||
|
||||
return high_heap;
|
||||
return heap;
|
||||
}
|
||||
|
||||
UINT32
|
||||
|
|
Loading…
Reference in New Issue