AGESA: Split S3 backup in CBMEM
Use separate CBMEM allocations for stack and heap on S3 resume path. The allocation of HIGH_SCRATCH_MEMORY is specific to AGESA and is moved out of globals and ACPI. This region is a replacement for BIOS_HEAP_SIZE used on non-resume paths. Change-Id: I6658ce1c06964de5cf13b4e3c84d571f46ce76f3 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/10316 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
@@ -25,7 +25,6 @@
|
||||
#include <cpu/x86/cache.h>
|
||||
#include <cbmem.h>
|
||||
#include <string.h>
|
||||
#include <northbridge/amd/agesa/BiosCallOuts.h>
|
||||
#include <halt.h>
|
||||
#include "s3_resume.h"
|
||||
|
||||
@@ -51,12 +50,12 @@ static void *backup_resume(void)
|
||||
|
||||
static void move_stack_high_mem(void)
|
||||
{
|
||||
void *high_stack;
|
||||
void *high_stack = cbmem_find(CBMEM_ID_ROMSTAGE_RAM_STACK);
|
||||
|
||||
high_stack = cbmem_find(CBMEM_ID_RESUME_SCRATCH);
|
||||
memcpy(high_stack, (void *)BSP_STACK_BASE_ADDR,
|
||||
(CONFIG_HIGH_SCRATCH_MEMORY_SIZE - BIOS_HEAP_SIZE));
|
||||
/* TODO: Make the switch with empty stack instead. */
|
||||
memcpy(high_stack, (void *)BSP_STACK_BASE_ADDR, HIGH_ROMSTAGE_STACK_SIZE);
|
||||
|
||||
/* TODO: We only switch stack on BSP. */
|
||||
__asm__
|
||||
volatile ("add %0, %%esp; add %0, %%ebp; invd"::"g"
|
||||
(high_stack - BSP_STACK_BASE_ADDR)
|
||||
@@ -95,7 +94,6 @@ void prepare_for_resume(void)
|
||||
post_code(0x62);
|
||||
printk(BIOS_DEBUG, "Move CAR stack.\n");
|
||||
move_stack_high_mem();
|
||||
printk(BIOS_DEBUG, "stack moved to: 0x%x\n", (u32) (resume_backup_memory + HIGH_MEMORY_SAVE));
|
||||
|
||||
post_code(0x63);
|
||||
disable_cache_as_ram();
|
||||
|
Reference in New Issue
Block a user