summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorLee Leahy <leroy.p.leahy@intel.com>2015-05-08 11:33:55 -0700
committerAaron Durbin <adurbin@chromium.org>2015-05-13 17:07:51 +0200
commit522149c310ad8885cd0b58a88cacac24852a541f (patch)
tree03e5a5c6231a741aa88e1c26b8392571b5eab35d /src/include
parent0a50d9b35334d03f13b38e21497ba0aae8b16712 (diff)
downloadcoreboot-522149c310ad8885cd0b58a88cacac24852a541f.tar.xz
cbmem: Add initial allocation support
Add support to allocate a region just below CBMEM root. This region is reserved for FSP 1.1 to use for its stack and variables. BRANCH=none BUG=None TEST=Build and run on Braswell Change-Id: I1d4b36ab366e6f8e036335c56c1756f2dfaab3f5 Signed-off-by: Lee Leahy <leroy.p.leahy@intel.com> Reviewed-on: http://review.coreboot.org/10148 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/cbmem.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/include/cbmem.h b/src/include/cbmem.h
index 07e5645397..08c1d647bd 100644
--- a/src/include/cbmem.h
+++ b/src/include/cbmem.h
@@ -146,12 +146,30 @@ struct cbmem_entry;
*/
#define DYN_CBMEM_ALIGN_SIZE (4096)
+#define CBMEM_ROOT_SIZE DYN_CBMEM_ALIGN_SIZE
+
+/* The root region is at least DYN_CBMEM_ALIGN_SIZE . */
+#define CBMEM_ROOT_MIN_SIZE DYN_CBMEM_ALIGN_SIZE
+#define CBMEM_LG_ALIGN CBMEM_ROOT_MIN_SIZE
+
+/* Small allocation parameters. */
+#define CBMEM_SM_ROOT_SIZE 1024
+#define CBMEM_SM_ALIGN 32
+
+/* Determine the size for CBMEM root and the small allocations */
+static inline size_t cbmem_overhead_size(void)
+{
+ return 2 * CBMEM_ROOT_MIN_SIZE;
+}
/* By default cbmem is attempted to be recovered. Returns 0 if cbmem was
* recovered or 1 if cbmem had to be reinitialized. */
int cbmem_initialize(void);
+int cbmem_initialize_id_size(u32 id, u64 size);
+
/* Initialize cbmem to be empty. */
void cbmem_initialize_empty(void);
+void cbmem_initialize_empty_id_size(u32 id, u64 size);
/* Return the top address for dynamic cbmem. The address returned needs to
* be consistent across romstage and ramstage, and it is required to be