summaryrefslogtreecommitdiff
path: root/ReferenceCode/Haswell/Library/TxtLib
diff options
context:
space:
mode:
Diffstat (limited to 'ReferenceCode/Haswell/Library/TxtLib')
-rw-r--r--ReferenceCode/Haswell/Library/TxtLib/Ia32/TxtPeiLib.asm99
-rw-r--r--ReferenceCode/Haswell/Library/TxtLib/TxtLib.inf60
2 files changed, 159 insertions, 0 deletions
diff --git a/ReferenceCode/Haswell/Library/TxtLib/Ia32/TxtPeiLib.asm b/ReferenceCode/Haswell/Library/TxtLib/Ia32/TxtPeiLib.asm
new file mode 100644
index 0000000..34fcd35
--- /dev/null
+++ b/ReferenceCode/Haswell/Library/TxtLib/Ia32/TxtPeiLib.asm
@@ -0,0 +1,99 @@
+;/*++
+; 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
+;--*/
+;
+;/*++
+;
+; Copyright (c) 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.
+;
+;
+; Module Name:
+;
+; TxtPeiLib.asm
+;
+; Abstract:
+;
+; This file contains the code to determine Processor/Chipset TXT capaiblity
+;
+;--*/
+
+ .XLIST
+ include txt.inc
+ .LIST
+
+ .686P
+ .MMX
+ .XMM
+ .MODEL FLAT,C
+ .CODE
+
+;-----------------------------------------------------------------------------
+;-----------------------------------------------------------------------------
+; Procedure: CheckSmxCapabilities
+;
+; Input: None
+;
+; Output: None
+;
+; Registers: None are preserved
+;
+; Description: Execute GETSEC[CAPABILITIES] to report the SMX capabilities
+;
+;-----------------------------------------------------------------------------
+;-----------------------------------------------------------------------------
+
+CheckSmxCapabilities PROC PUBLIC USES ebx
+
+ ;
+ ; Check whether SMX is supported
+ ;
+ mov eax, 1
+ cpuid
+ bt ecx, IA32_CPUID_SMX_B
+
+ .IF !CARRY?
+ mov eax, 0
+ jmp @F
+ .ENDIF
+
+ ;
+ ; Save cr4
+ ;
+ mov edx, CR4
+
+ ;
+ ; Enable SMXE
+ ;
+ mov eax, CR4
+ or eax, CR4_SMXE
+ mov CR4, eax
+
+ ;
+ ; Call GETSEC[CAPABILITIES]
+ ;
+ mov eax, CAPABILITIES ; eax = CAPABILITIES
+ mov ebx, 0
+ _GETSEC
+
+ ;
+ ; Restore cr4
+ ;
+ mov CR4, edx
+
+@@:
+ ret
+CheckSmxCapabilities ENDP
+
+END
diff --git a/ReferenceCode/Haswell/Library/TxtLib/TxtLib.inf b/ReferenceCode/Haswell/Library/TxtLib/TxtLib.inf
new file mode 100644
index 0000000..46ae16b
--- /dev/null
+++ b/ReferenceCode/Haswell/Library/TxtLib/TxtLib.inf
@@ -0,0 +1,60 @@
+## @file
+# Component description file for TXT Lib
+#
+#@copyright
+# Copyright (c) 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 a 'Sample Driver' and is licensed as such
+# under the terms of your license agreement with Intel or your
+# vendor. This file may be modified by the user, subject to
+# the additional terms of the license agreement
+#
+
+[defines]
+BASE_NAME = TxtLib
+COMPONENT_TYPE = LIBRARY
+
+[sources.common]
+ Ia32/TxtPeiLib.asm
+
+[sources.ia32]
+
+[sources.x64]
+
+[sources.ipf]
+
+[includes.common]
+ $(EDK_SOURCE)/Foundation/Efi
+ $(EDK_SOURCE)/Foundation/Include
+ $(EDK_SOURCE)/Foundation/Efi/Include
+ $(EDK_SOURCE)/Foundation/Framework/Include
+ $(EFI_SOURCE)/$(PROJECT_CPU_ROOT)
+ $(EFI_SOURCE)/$(PROJECT_CPU_ROOT)/Include
+ $(EFI_SOURCE)/$(PROJECT_CPU_ROOT)/Include/Library
+
+#
+# EDK II Glue Library utilizes some standard headers from EDK
+#
+ $(EFI_SOURCE)
+ $(EDK_SOURCE)/Foundation
+ $(EDK_SOURCE)/Foundation/Efi
+ $(EDK_SOURCE)/Foundation/Efi/Include
+ $(EDK_SOURCE)/Foundation/Framework
+ $(EDK_SOURCE)/Foundation/Framework/Include
+ $(EDK_SOURCE)/Foundation/Include
+ $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+ $(EDK_SOURCE)/Foundation/Core/Dxe
+ $(EDK_SOURCE)/Foundation/Include/Pei
+ $(EDK_SOURCE)/Foundation/Library/Dxe/Include
+ $(EDK_SOURCE)/Foundation/Library/EdkIIGlueLib/Include
+
+[libraries.common]
+
+[nmake.common]