summaryrefslogtreecommitdiff
path: root/ReferenceCode/Haswell/Include/Txt.inc
diff options
context:
space:
mode:
Diffstat (limited to 'ReferenceCode/Haswell/Include/Txt.inc')
-rw-r--r--ReferenceCode/Haswell/Include/Txt.inc442
1 files changed, 442 insertions, 0 deletions
diff --git a/ReferenceCode/Haswell/Include/Txt.inc b/ReferenceCode/Haswell/Include/Txt.inc
new file mode 100644
index 0000000..4cd76fe
--- /dev/null
+++ b/ReferenceCode/Haswell/Include/Txt.inc
@@ -0,0 +1,442 @@
+;@file
+; This file contains definitions used in Txtpeibsp and txtpeiap.asm
+;
+;@copyright
+; Copyright (c) 1999 - 2012 Intel Corporation. All rights reserved
+; This software and associated documentation (if any) is furnished
+; under a license and may only be used or copied in accordance
+; with the terms of the license. Except as permitted by such
+; license, no part of this software or documentation may be
+; reproduced, stored in a retrieval system, or transmitted in any
+; form or by any means without the express written consent of
+; Intel Corporation.
+;
+; This file contains an 'Intel Peripheral Driver' and uniquely
+; identified as "Intel Reference Module" and is
+; licensed for Intel CPUs and chipsets under the terms of your
+; license agreement with Intel or your vendor. This file may
+; be modified by the user, subject to additional terms of the
+; license agreement
+;
+
+;-----------------------------------------------------------------------------
+; Common equates
+;
+
+UINT32 TYPEDEF DWORD
+UINT64 TYPEDEF QWORD
+
+;-----------------------------------------------------------------------------
+; Bit definitions
+;
+BIT31 EQU (1 SHL 31)
+BIT30 EQU (1 SHL 30)
+BIT29 EQU (1 SHL 29)
+BIT28 EQU (1 SHL 28)
+BIT27 EQU (1 SHL 27)
+BIT26 EQU (1 SHL 26)
+BIT25 EQU (1 SHL 25)
+BIT24 EQU (1 SHL 24)
+BIT23 EQU (1 SHL 23)
+BIT22 EQU (1 SHL 22)
+BIT21 EQU (1 SHL 21)
+BIT20 EQU (1 SHL 20)
+BIT19 EQU (1 SHL 19)
+BIT18 EQU (1 SHL 18)
+BIT17 EQU (1 SHL 17)
+BIT16 EQU (1 SHL 16)
+BIT15 EQU (1 SHL 15)
+BIT14 EQU (1 SHL 14)
+BIT13 EQU (1 SHL 13)
+BIT12 EQU (1 SHL 12)
+BIT11 EQU (1 SHL 11)
+BIT10 EQU (1 SHL 10)
+BIT9 EQU (1 SHL 9)
+BIT8 EQU (1 SHL 8)
+BIT7 EQU (1 SHL 7)
+BIT6 EQU (1 SHL 6)
+BIT5 EQU (1 SHL 5)
+BIT4 EQU (1 SHL 4)
+BIT3 EQU (1 SHL 3)
+BIT2 EQU (1 SHL 2)
+BIT1 EQU (1 SHL 1)
+BIT0 EQU (1 SHL 0)
+
+PORTB EQU 061h
+PORTBMASK EQU (1 shl 4)
+;
+; BIOS ACM functions
+;
+TXT_LAUNCH_SCLEAN EQU 00h
+TXT_RESET_EST_BIT EQU 01h
+TXT_RESET_AUX EQU 02h
+TXT_LAUNCH_SCHECK EQU 04h
+
+PORT80_CODE_PREFIX EQU 0A0h
+
+;
+; EDI parameter sent to SCHECK function
+;
+COLD_BOOT_PATH EQU 0
+S3_RESUME_PATH EQU BIT1
+;----------------------------------------------------------------------------
+; Common stackless calling macros
+;
+CALL_NS MACRO lbl
+ local retaddr
+ if @WordSize EQ 2
+ mov sp, retaddr
+ else
+ mov esp, retaddr
+ endif
+
+ pslldq xmm4, 4
+ pinsrw xmm4, esp, 0
+ rol esp, 10h
+ pinsrw xmm4, esp, 1
+
+ jmp lbl
+
+retaddr:
+ENDM
+
+RET_NS MACRO
+ movd esp, xmm4
+ psrldq xmm4, 4
+
+ if @WordSize EQ 2
+ jmp sp
+ else
+ jmp esp
+ endif
+ENDM
+
+;-----------------------------------------------------------------------------
+; AC Module header
+;
+ACM_HEADER STRUCT
+ ORG 24
+ AcmSize dd ? ; // 24 4 Module size (in multiples of four bytes)
+ACM_HEADER ENDS
+
+;-----------------------------------------------------------------------------
+; TXT enabling and execution
+;
+
+CAPABILITIES EQU 00h
+ENTERACCS EQU 02h
+
+CR0_NE_MASK EQU (1 SHL 5)
+CR0_NW_MASK EQU (1 SHL 29)
+CR0_CD_MASK EQU (1 SHL 30)
+CR0_PG_MASK EQU (1 SHL 31)
+
+CR4_VME EQU (1 SHL 0)
+CR4_PVI EQU (1 SHL 1)
+CR4_TSD EQU (1 SHL 2)
+CR4_DE EQU (1 SHL 3)
+CR4_PSE EQU (1 SHL 4)
+CR4_PAE EQU (1 SHL 5)
+CR4_MSE EQU (1 SHL 6)
+CR4_PGE EQU (1 SHL 7)
+CR4_PCE EQU (1 SHL 8)
+CR4_OSFXSR EQU (1 SHL 9)
+CR4_VMXE EQU (1 SHL 13)
+CR4_SMXE EQU (1 SHL 14)
+
+_GETSEC EQU db 0fh, 37h
+
+;----------------------------------------------------------------------------
+; DescriptorAccess Rights Definitions
+;
+PAGEGRANULARITY EQU 01H ; Page Granularity
+BYTEGRANULARITY EQU 00H ; Byte Granularity
+BIGSEGMENT EQU 01H ; Big Segment 32 bit
+SMALLSEGMENT EQU 00H ; Small Segment 16 bit
+SEG_PRESENT EQU 01H ; Segment Present
+SEG_NOTPRESENT EQU 00H ; Segment Not Present
+APPLSEGMENT EQU 01H ; Application Segment
+SYSTEMSEGMENT EQU 00H ; System Segment
+
+DATATYPE EQU 03H ; Read, Write, accessed
+STACKTYPE EQU 03H ; Read, Write, accessed
+CODETYPE EQU 0BH ; Execute, Read, accessed
+
+;----------------------------------------------------------------------------
+;Descritor table structures and records
+;
+
+R_AR0_7 RECORD P:1=0, DPL:2=0, D_T:1=0, sType:4=0
+
+; P - Segment present
+; 0=NOTPRESENT
+; 1=PRESENT
+; DPL - Descriptor priviledge level
+; D_T - Descriptor type
+; 0=SYSTEMSEGMENT
+; 1=APPLSEGMENT
+; sType - Segment Type
+; For Application segment:
+; 03h - DATATYPE (Read/Write/Accessed)
+; 07h - STACKTYPE (Expand Down/Read/Write/Accessed)
+; 0Fh - CODETYPE (Execute/Conforming/Read/Accessed)
+;
+; For System segment:
+; 01h - Available 16 bit TSS
+; 02h - LDT
+; 03h - Active 16 bit TSS
+; 04h - 16 bit call gate
+; 05h - 16 + 32 bit task gate
+; 06h - 16 bit interrupt gate
+; 07h - 16 bit trap gate
+; 09h - Available 32 bit TSS
+; 0Bh - Active 32 bit TSS
+; 0Ch - 32 bit call gate
+; 0Eh - 32 bit interrupt gate
+; 0Fh - 32 bit trap gate
+
+R_LAR16_23 RECORD G:1=0, D_B:1=0, L:1=0, Avl:1=0, Lim:4=0
+
+; G - Granularity
+; 0=BYTEGRANULARITY
+; 1=PAGEGRANULARITY
+; D_B - Segment size
+; 0=SMALLSEGMENT
+; 1=BIGSEGMENT
+; Res - Reserved
+; Avl - Available for OS (Not used)
+; Lim - Limit bits 16-19
+
+SEG_DESCRIPTOR STRUCT 4
+ Limit0_15 DW 0000 ; Limit Bits 0-15
+ Base0_15 DW 0000 ; Base address Bits 0-15
+ Base16_23 DB 00 ; Base address Bits 16-23
+ AR0_7 R_AR0_7 <> ; Access Rights 0-7
+ LAR16_23 R_LAR16_23 <> ; Limit Bits 16-19 and Access Bits 8-11
+ Base24_31 DB 00 ; Base address Bits 24-31
+SEG_DESCRIPTOR ENDS
+
+;-----------------------------------------------------------------------------
+; Machine Check register definitions
+;
+MCG_CAP EQU 179h
+
+MC0_STATUS EQU 401h
+
+;-----------------------------------------------------------------------------
+; TXT register space definitiions
+;
+TXT_PRIVATE_BASE EQU 0FED20000h
+TXT_PUBLIC_BASE EQU 0FED30000h
+TXT_REGISTER_SPACE_LENGTH EQU 070000h
+
+TXT_STS EQU 0000h
+ TXT_STS_SENTER_DONE_MASK EQU BIT0
+ TXT_STS_SEXIT_DONE_MASK EQU BIT1
+ TXT_STS_MEM_UNLOCK_STS_MASK EQU BIT4
+ TXT_STS_NODMAEN_MASK EQU BIT5
+ TXT_STS_MEMCONFIGLOCK_STS_MASK EQU BIT6
+ TXT_STS_PRIVATEOPEN_STS_MASK EQU BIT7
+ TXT_STS_BLOCKMAP_STS_MASK EQU BIT8
+ TXT_STS_NODMACACHE_STS_MASK EQU BIT9
+ TXT_STS_NODMATABLEPROTECT_STS_MASK EQU BIT10
+ TXT_ESTS EQU 0008h
+ TXT_WAKE_ERROR_STS EQU BIT6
+
+TXT_THREADS_EXIST EQU 0010h
+TXT_THREADS_JOIN EQU 0020h
+TXT_CRASH EQU 0030h
+TXT_CMD_SYS_RESET EQU 0038h
+TXT_CMD_OPEN_PRIVATE EQU 0040h
+TXT_CMD_CLOSE_PRIVATE EQU 0048h
+TXT_POISON EQU 00B0h
+TXT_VER_DID EQU 0110h
+TXT_VER_EID EQU 0118h
+TXT_VER_MIF EQU 0200h
+TXT_CMD_LOCK_MEM_CONFIG EQU 0210h
+TXT_CMD_UNLOCK_MEM_CONFIG EQU 0218h
+TXT_CMD_UNLOCK_MEMORY EQU 0220h
+TXT_CMD_NODMA_EN EQU 0230h
+TXT_CMD_NODMA_DIS EQU 0238h
+TXT_SINIT_BASE EQU 0270h
+TXT_SINIT_SIZE EQU 0278h
+TXT_SINIT_SIZE2 EQU 027Ch
+TXT_SVMM_JOIN EQU 0290h
+TXT_SVMM_JOIN2 EQU 0294h
+TXT_HEAP_BASE EQU 0300h
+TXT_HEAP_SIZE EQU 0308h
+TXT_MSEG_BASE EQU 0310h
+TXT_MSEG_SIZE EQU 0318h
+TXT_SCRATCHPAD EQU 0320h
+TXT_SCRATCHPAD2 EQU 0324h
+TXT_SCRATCHPAD3 EQU 0328h
+TXT_SCRATCHPAD4 EQU 032Ch
+TXT_DPR EQU 0330h
+TXT_CMD_OPEN_LOCALITY1 EQU 0380h
+TXT_CMD_CLOSE_LOCALITY1 EQU 0388h
+TXT_CMD_OPEN_LOCALITY3 EQU 03a0h
+TXT_CMD_CLOSE_LOCALITY3 EQU 03a8h
+TXT_PUBLIC_KEY EQU 0400h
+TXT_TGFX_CMD EQU 0504h
+TXT_TGA_BASE EQU 0510h
+TXT_TGR_BASE EQU 0518h
+TXT_TGTT_BASE EQU 0520h
+TXT_TMSAC EQU 0540h
+ TGTT_128MB EQU BIT0
+ TGTT_256MB EQU BIT1
+ TGTT_512MB EQU BIT1+BIT0
+TXT_VER_FTIF EQU 0800h
+TXT_PCH_DIDVID EQU 0810h
+TXT_CMD_SECRETS EQU 08E0h
+TXT_CMD_NO_SECRETS EQU 08E8h
+TXT_E2STS EQU 08F0h
+ TXT_BLOCK_MEM_STS EQU BIT2
+ TXT_SECRETS_STS EQU BIT1
+ TXT_SLP_ENTRY_ERROR_STS EQU BIT0
+
+MCU_MAX_SIZE EQU 10000h ; 64KB max size per MCU
+MCU_SLOT_SZ_BITS EQU 11 ; 2KB MCU slot size
+MCU_SLOT_SZ EQU 1 SHL MCU_SLOT_SZ_BITS
+
+;-----------------------------------------------------------------------------
+;
+; MCU Constants
+;
+MCU_HEADER_VER EQU 1
+MCU_LOADER_REV EQU 1
+;
+; ProcessorMSR Equates
+;
+PLAT_ID_MSR EQU 17h ; Platform ID
+MCU_LOAD_MSR EQU 79h ; Trigger to load MCU
+MCU_REV_MSR EQU 8Bh ; MCU Revision register
+;
+PLAT_ID_BIT EQU 50 ; Bits 52:50 has the Platform ID
+PLAT_ID_BITMASK EQU 07h ; Bits 52:50 has the Platform ID
+
+EFI_MSR_IA32_THERM_INTERRUPT EQU 019Bh
+;
+; Microcode Update (MCU) Header
+;
+MCU STRUCT
+ headerVer DD ? ; MCU Header Version ( = 00000001h )
+ revision DD ? ; MCU Revision
+ date DD ? ; MCU Date
+ signature DD ? ; MCU Processor Signature
+ checksum DD ? ; MCU Main checksum
+ loaderRev DD ? ; MCU Loader Revision
+ procFlags DD ? ; MCU Processor Flags (Platform ID)
+ dataSize DD ? ; MCU Data Size
+ totalSize DD ? ; MCU Total Size
+ reserved DD 3 dup(?)
+MCU ENDS
+;
+; Extended Signature Table (EST)
+;
+EST STRUCT
+ count DD ? ; EST Count
+ checksum DD ? ; EST Checksum
+ reserved DD 3 dup(?)
+EST ENDS
+;
+; Processor Signature Structure (PSS)
+;
+PSS STRUCT
+ signature DD ? ; PSS Processor Signature
+ procFlags DD ? ; PSS Processor Flags (Platform ID)
+ checksum DD ? ; PSS Checksum
+PSS ENDS
+
+;----------------------------------------------------------------------------
+; APIC definitions
+;
+IA32_APIC_BASE EQU 001Bh ; APIC base MSR
+ BASE_ADDR_MASK EQU 0FFFFF000h
+ EFI_MSR_EXT_XAPIC_LVT_THERM EQU 0833h
+APIC_ID EQU 20h
+ APIC_ID_SHIFT EQU 24
+ICR_LOW EQU 300h
+ICR_HIGH EQU 310h
+SPURIOUS_VECTOR_1 EQU 0F0h
+LOCAL_APIC_THERMAL_DEF EQU 330h
+ B_INTERRUPT_MASK EQU (1 SHL 16)
+ B_DELIVERY_MODE EQU (07h SHL 8)
+ V_MODE_SMI EQU (02h SHL 8)
+ B_VECTOR EQU (0FFh SHL 0)
+
+
+;-----------------------------------------------------------------------------
+; MTRRs
+;
+IA32_MTRR_CAP EQU 0FEh
+IA32_MTRR_PHYSBASE0 EQU 200h
+IA32_MTRR_PHYSMASK0 EQU 201h
+IA32_MTRR_PHYSBASE1 EQU 202h
+IA32_MTRR_PHYSMASK1 EQU 203h
+IA32_MTRR_PHYSBASE2 EQU 204h
+IA32_MTRR_PHYSMASK2 EQU 205h
+IA32_MTRR_PHYSBASE3 EQU 206h
+IA32_MTRR_PHYSMASK3 EQU 207h
+IA32_MTRR_PHYSBASE4 EQU 208h
+IA32_MTRR_PHYSMASK4 EQU 209h
+IA32_MTRR_PHYSBASE5 EQU 20Ah
+IA32_MTRR_PHYSMASK5 EQU 20Bh
+IA32_MTRR_PHYSBASE6 EQU 20Ch
+IA32_MTRR_PHYSMASK6 EQU 20Dh
+IA32_MTRR_PHYSBASE7 EQU 20Eh
+IA32_MTRR_PHYSMASK7 EQU 20Fh
+IA32_MTRR_PHYSBASE8 EQU 210h
+IA32_MTRR_PHYSMASK8 EQU 211h
+IA32_MTRR_PHYSBASE9 EQU 212h
+IA32_MTRR_PHYSMASK9 EQU 213h
+IA32_MTRR_FIX64K_00000 EQU 250h
+IA32_MTRR_FIX16K_80000 EQU 258h
+IA32_MTRR_FIX16K_A0000 EQU 259h
+IA32_MTRR_FIX4K_C0000 EQU 268h
+IA32_MTRR_FIX4K_C8000 EQU 269h
+IA32_MTRR_FIX4K_D0000 EQU 26Ah
+IA32_MTRR_FIX4K_D8000 EQU 26Bh
+IA32_MTRR_FIX4K_E0000 EQU 26Ch
+IA32_MTRR_FIX4K_E8000 EQU 26Dh
+IA32_MTRR_FIX4K_F0000 EQU 26Eh
+IA32_MTRR_FIX4K_F8000 EQU 26Fh
+IA32_CR_PAT EQU 277h
+IA32_MTRR_DEF_TYPE EQU 2FFh
+NO_EVICT_MODE EQU 2E0h
+
+;
+; Only low order bits are assumed
+;
+MTRR_MASK EQU 0FFFFF000h
+
+MTRR_ENABLE EQU (1 SHL 11)
+MTRR_FIXED_ENABLE EQU (1 SHL 10)
+MTRR_VALID EQU (1 SHL 11)
+UC EQU 00h
+WB EQU 06h
+
+MTRR_VCNT EQU 8
+
+;-----------------------------------------------------------------------------
+;
+; CPU generic definition
+;
+IA32_CPUID_SMX_B EQU 6
+
+;-----------------------------------------------------------------------------
+;
+; AP communication area
+;
+
+MCU_BASE_ADDR EQU TXT_SINIT_SIZE
+BIOACM_ADDR EQU TXT_SINIT_SIZE2
+APINIT_ADDR EQU TXT_SVMM_JOIN
+SEMAPHORE EQU TXT_SVMM_JOIN2
+
+IA32_MISC_ENABLE_MSR EQU 1A0h
+IA32_EFER_MSR EQU 0C0000080h
+LME EQU BIT8
+
+IFNDEF MKF_TXT_RLP_INIT
+MKF_TXT_RLP_INIT EQU 01h
+ENDIF