aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/amd/common/block/include/amdblocks/BiosCallOuts.h9
-rw-r--r--src/soc/amd/common/block/include/amdblocks/s3_resume.h21
-rw-r--r--src/soc/amd/common/block/pi/heapmanager.c5
3 files changed, 33 insertions, 2 deletions
diff --git a/src/soc/amd/common/block/include/amdblocks/BiosCallOuts.h b/src/soc/amd/common/block/include/amdblocks/BiosCallOuts.h
index 2302889e6b..8a9474eb0d 100644
--- a/src/soc/amd/common/block/include/amdblocks/BiosCallOuts.h
+++ b/src/soc/amd/common/block/include/amdblocks/BiosCallOuts.h
@@ -18,11 +18,18 @@
#define __CALLOUTS_AMD_AGESA_H__
#include <amdblocks/agesawrapper.h>
+#include <amdblocks/s3_resume.h>
-#define BIOS_HEAP_START_ADDRESS 0x010000000
#define BIOS_HEAP_SIZE 0x30000
#define BSP_STACK_BASE_ADDR 0x30000
+struct cbmem_usage {
+ uint8_t heap_base[BIOS_HEAP_SIZE];
+#if IS_ENABLED(CONFIG_HAVE_ACPI_RESUME)
+ uint8_t s3_vol_data[S3_VOLATILE_SIZE];
+#endif
+};
+
typedef struct _BIOS_HEAP_MANAGER {
UINT32 StartOfAllocatedNodes;
UINT32 StartOfFreedNodes;
diff --git a/src/soc/amd/common/block/include/amdblocks/s3_resume.h b/src/soc/amd/common/block/include/amdblocks/s3_resume.h
new file mode 100644
index 0000000000..567b0a8c40
--- /dev/null
+++ b/src/soc/amd/common/block/include/amdblocks/s3_resume.h
@@ -0,0 +1,21 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2017 Advanced Micro Devices, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __AMD_S3_RESUME_H__
+#define __AMD_S3_RESUME_H__
+
+#define S3_VOLATILE_SIZE 0x6000
+
+#endif /* __AMD_S3_RESUME_H__ */
diff --git a/src/soc/amd/common/block/pi/heapmanager.c b/src/soc/amd/common/block/pi/heapmanager.c
index 862ba3d524..f139a7fcb6 100644
--- a/src/soc/amd/common/block/pi/heapmanager.c
+++ b/src/soc/amd/common/block/pi/heapmanager.c
@@ -21,7 +21,10 @@
static void *GetHeapBase(void)
{
- return cbmem_add(CBMEM_ID_RESUME_SCRATCH, BIOS_HEAP_SIZE);
+ struct cbmem_usage *heap;
+ heap = (struct cbmem_usage *)cbmem_add(CBMEM_ID_RESUME_SCRATCH,
+ sizeof(struct cbmem_usage));
+ return &heap->heap_base;
}
static void EmptyHeap(int unused)