summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2019-08-16 20:34:25 +0300
committerKyösti Mälkki <kyosti.malkki@gmail.com>2019-08-22 02:50:35 +0000
commita963acdcc70747911981afcd1474d39d75ca8804 (patch)
tree57f67998627e588d8523497172512dba7b0032fb /src/arch
parent9ede2ffee845d243d8e1515effbc206152fbc7fd (diff)
arch/x86: Add <arch/romstage.h>
Start with moving all postcar_frame related function declarations here from <arch/cpu.h>. Change-Id: I9aeef07f9009e44cc08927c85fe1862edf5c70dc Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34911 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: HAOUAS Elyes <ehaouas@noos.fr> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/include/arch/cpu.h63
-rw-r--r--src/arch/x86/include/arch/romstage.h81
-rw-r--r--src/arch/x86/postcar.c2
-rw-r--r--src/arch/x86/postcar_loader.c2
4 files changed, 84 insertions, 64 deletions
diff --git a/src/arch/x86/include/arch/cpu.h b/src/arch/x86/include/arch/cpu.h
index 9aa446ec0a..263b734529 100644
--- a/src/arch/x86/include/arch/cpu.h
+++ b/src/arch/x86/include/arch/cpu.h
@@ -279,11 +279,10 @@ static inline void get_fms(struct cpuinfo_x86 *c, uint32_t tfms)
c->x86_model += ((tfms >> 16) & 0xF) << 4;
}
-#endif
+/* romcc does not understand regparm. */
#define asmlinkage __attribute__((regparm(0)))
-#ifndef __ROMCC__
/*
* When using CONFIG_C_ENVIRONMENT_BOOTBLOCK the car_stage_entry()
* is the symbol jumped to for each stage after bootblock using
@@ -291,66 +290,6 @@ static inline void get_fms(struct cpuinfo_x86 *c, uint32_t tfms)
*/
asmlinkage void car_stage_entry(void);
-/*
- * Support setting up a stack frame consisting of MTRR information
- * for use in bootstrapping the caching attributes after cache-as-ram
- * is torn down.
- */
-
-struct postcar_frame {
- uintptr_t stack;
- uint32_t upper_mask;
- int max_var_mtrrs;
- int num_var_mtrrs;
- int skip_common_mtrr;
-};
-
-/*
- * Initialize postcar_frame object allocating stack from cbmem,
- * with stack_size == 0, default 4 KiB is allocated.
- * Returns 0 on success, < 0 on error.
- */
-int postcar_frame_init(struct postcar_frame *pcf, size_t stack_size);
-
-/*
- * Add variable MTRR covering the provided range with MTRR type.
- */
-void postcar_frame_add_mtrr(struct postcar_frame *pcf,
- uintptr_t addr, size_t size, int type);
-
-/*
- * Add variable MTRR covering the memory-mapped ROM with given MTRR type.
- */
-void postcar_frame_add_romcache(struct postcar_frame *pcf, int type);
-
-/*
- * Add a common MTRR setup most platforms will have as a subset.
- */
-void postcar_frame_common_mtrrs(struct postcar_frame *pcf);
-
-/*
- * Push used MTRR and Max MTRRs on to the stack
- * and return pointer to stack top.
- */
-void *postcar_commit_mtrrs(struct postcar_frame *pcf);
-
-/*
- * Load and run a program that takes control of execution that
- * tears down CAR and loads ramstage. The postcar_frame object
- * indicates how to set up the frame. If caching is enabled at
- * the time of the call it is up to the platform code to handle
- * coherency with dirty lines in the cache using some mechansim
- * such as platform_prog_run() because run_postcar_phase()
- * utilizes prog_run() internally.
- */
-void run_postcar_phase(struct postcar_frame *pcf);
-
-/*
- * Systems without a native coreboot cache-as-ram teardown may implement
- * this to use an alternate method.
- */
-void late_car_teardown(void);
-
#endif
/*
diff --git a/src/arch/x86/include/arch/romstage.h b/src/arch/x86/include/arch/romstage.h
new file mode 100644
index 0000000000..42c9fbb6cd
--- /dev/null
+++ b/src/arch/x86/include/arch/romstage.h
@@ -0,0 +1,81 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * 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 __ARCH_ROMSTAGE_H__
+#define __ARCH_ROMSTAGE_H__
+
+#include <arch/cpu.h>
+#include <stddef.h>
+#include <stdint.h>
+
+/*
+ * Support setting up a stack frame consisting of MTRR information
+ * for use in bootstrapping the caching attributes after cache-as-ram
+ * is torn down.
+ */
+
+struct postcar_frame {
+ uintptr_t stack;
+ uint32_t upper_mask;
+ int max_var_mtrrs;
+ int num_var_mtrrs;
+ int skip_common_mtrr;
+};
+
+/*
+ * Initialize postcar_frame object allocating stack from cbmem,
+ * with stack_size == 0, default 4 KiB is allocated.
+ * Returns 0 on success, < 0 on error.
+ */
+int postcar_frame_init(struct postcar_frame *pcf, size_t stack_size);
+
+/*
+ * Add variable MTRR covering the provided range with MTRR type.
+ */
+void postcar_frame_add_mtrr(struct postcar_frame *pcf,
+ uintptr_t addr, size_t size, int type);
+
+/*
+ * Add variable MTRR covering the memory-mapped ROM with given MTRR type.
+ */
+void postcar_frame_add_romcache(struct postcar_frame *pcf, int type);
+
+/*
+ * Add a common MTRR setup most platforms will have as a subset.
+ */
+void postcar_frame_common_mtrrs(struct postcar_frame *pcf);
+
+/*
+ * Push used MTRR and Max MTRRs on to the stack
+ * and return pointer to stack top.
+ */
+void *postcar_commit_mtrrs(struct postcar_frame *pcf);
+
+/*
+ * Load and run a program that takes control of execution that
+ * tears down CAR and loads ramstage. The postcar_frame object
+ * indicates how to set up the frame. If caching is enabled at
+ * the time of the call it is up to the platform code to handle
+ * coherency with dirty lines in the cache using some mechansim
+ * such as platform_prog_run() because run_postcar_phase()
+ * utilizes prog_run() internally.
+ */
+void run_postcar_phase(struct postcar_frame *pcf);
+
+/*
+ * Systems without a native coreboot cache-as-ram teardown may implement
+ * this to use an alternate method.
+ */
+void late_car_teardown(void);
+
+#endif /* __ARCH_ROMSTAGE_H__ */
diff --git a/src/arch/x86/postcar.c b/src/arch/x86/postcar.c
index b4efc949b4..e082596656 100644
--- a/src/arch/x86/postcar.c
+++ b/src/arch/x86/postcar.c
@@ -13,7 +13,7 @@
* GNU General Public License for more details.
*/
-#include <arch/cpu.h>
+#include <arch/romstage.h>
#include <cbmem.h>
#include <console/console.h>
#include <cpu/x86/mtrr.h>
diff --git a/src/arch/x86/postcar_loader.c b/src/arch/x86/postcar_loader.c
index b1b2da0540..816f41e412 100644
--- a/src/arch/x86/postcar_loader.c
+++ b/src/arch/x86/postcar_loader.c
@@ -13,7 +13,7 @@
* GNU General Public License for more details.
*/
-#include <arch/cpu.h>
+#include <arch/romstage.h>
#include <cbmem.h>
#include <console/console.h>
#include <cpu/cpu.h>