summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/apollolake/bootblock/bootblock.c10
-rw-r--r--src/soc/intel/apollolake/include/soc/cpu.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/src/soc/intel/apollolake/bootblock/bootblock.c b/src/soc/intel/apollolake/bootblock/bootblock.c
index d3a78e106f..500761315b 100644
--- a/src/soc/intel/apollolake/bootblock/bootblock.c
+++ b/src/soc/intel/apollolake/bootblock/bootblock.c
@@ -12,7 +12,9 @@
#include <arch/cpu.h>
#include <bootblock_common.h>
#include <device/pci.h>
+#include <program_loading.h>
#include <soc/bootblock.h>
+#include <soc/cpu.h>
#include <soc/northbridge.h>
#include <soc/pci_devs.h>
@@ -32,3 +34,11 @@ void asmlinkage bootblock_c_entry(void)
/* Call lib/bootblock.c main */
main();
}
+
+void platform_prog_run(struct prog *prog)
+{
+ /* Flush L1D cache to L2 */
+ msr_t msr = rdmsr(MSR_POWER_MISC);
+ msr.lo |= (1 << 8);
+ wrmsr(MSR_POWER_MISC, msr);
+}
diff --git a/src/soc/intel/apollolake/include/soc/cpu.h b/src/soc/intel/apollolake/include/soc/cpu.h
index bee58b206e..870f474c87 100644
--- a/src/soc/intel/apollolake/include/soc/cpu.h
+++ b/src/soc/intel/apollolake/include/soc/cpu.h
@@ -18,6 +18,7 @@
#define CPUID_APOLLOLAKE_A0 0x506c8
#define MSR_PLATFORM_INFO 0xce
+#define MSR_POWER_MISC 0x120
#define BASE_CLOCK_MHZ 100