summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/x86/entry16.S14
-rw-r--r--src/include/cpu/intel/msr.h10
2 files changed, 24 insertions, 0 deletions
diff --git a/src/cpu/x86/entry16.S b/src/cpu/x86/entry16.S
index e1bfbf145d..147906fe4d 100644
--- a/src/cpu/x86/entry16.S
+++ b/src/cpu/x86/entry16.S
@@ -115,10 +115,24 @@ _start16bit:
subw %ax, %bx
lgdtl %cs:(%bx)
+#if CONFIG(INTEL_CBNT_SUPPORT)
+#include <cpu/intel/msr.h>
+ movl $MSR_BOOT_GUARD_SACM_INFO, %ecx
+ rdmsr
+ andl $B_BOOT_GUARD_SACM_INFO_NEM_ENABLED, %eax
+ jz 1f
+ movl %cr0, %eax
+ andl $0x7FFAFFD1, %eax /* PG,AM,WP,NE,TS,EM,MP = 0 */
+ orl $0x01, %eax /* PE = 1 */
+ movl %eax, %cr0
+ jmp 2f
+#endif
+1:
movl %cr0, %eax
andl $0x7FFAFFD1, %eax /* PG,AM,WP,NE,TS,EM,MP = 0 */
orl $0x60000001, %eax /* CD, NW, PE = 1 */
movl %eax, %cr0
+2:
/* Restore BIST to %eax */
movl %ebp, %eax
diff --git a/src/include/cpu/intel/msr.h b/src/include/cpu/intel/msr.h
index 935ac30096..9126ccd825 100644
--- a/src/include/cpu/intel/msr.h
+++ b/src/include/cpu/intel/msr.h
@@ -14,6 +14,16 @@
#define MSR_PLATFORM_INFO 0xce
+#define MSR_BOOT_GUARD_SACM_INFO 0x13a
+#define V_TPM_PRESENT_MASK 0x06
+#define B_BOOT_GUARD_SACM_INFO_NEM_ENABLED (1 << 0)
+#define B_BOOT_GUARD_SACM_INFO_TPM_SUCCESS (1 << 3)
+#define B_BOOT_GUARD_SACM_INFO_MEASURED_BOOT (1 << 5)
+#define B_BOOT_GUARD_SACM_INFO_VERIFIED_BOOT (1 << 6)
+#define B_BOOT_GUARD_SACM_INFO_REVOKED (1 << 7)
+#define B_BOOT_GUARD_SACM_INFO_BTG_CAPABILITY (1ull << 32)
+#define B_BOOT_GUARD_SACM_INFO_TXT_CAPABILITY (1ull << 34)
+
#define MSR_PKG_C10_RESIDENCY 0x632
#endif /* CPU_INTEL_MSR_H */