diff options
Diffstat (limited to 'UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiException.asm')
-rw-r--r-- | UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiException.asm | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiException.asm b/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiException.asm deleted file mode 100644 index 33e9860160..0000000000 --- a/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiException.asm +++ /dev/null @@ -1,178 +0,0 @@ -;------------------------------------------------------------------------------ ;
-; Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
-; This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php.
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; SmiException.asm
-;
-; Abstract:
-;
-; Exception handlers used in SM mode
-;
-;-------------------------------------------------------------------------------
-
-EXTERNDEF gcStmPsd:BYTE
-
-EXTERNDEF SmmStmExceptionHandler:PROC
-EXTERNDEF SmmStmSetup:PROC
-EXTERNDEF SmmStmTeardown:PROC
-EXTERNDEF gStmXdSupported:BYTE
-
-CODE_SEL EQU 38h
-DATA_SEL EQU 20h
-TR_SEL EQU 40h
-
-MSR_IA32_MISC_ENABLE EQU 1A0h
-MSR_EFER EQU 0c0000080h
-MSR_EFER_XD EQU 0800h
-
- .data
-
-;
-; This structure serves as a template for all processors.
-;
-gcStmPsd LABEL BYTE
- DB 'TXTPSSIG'
- DW PSD_SIZE
- DW 1 ; Version
- DD 0 ; LocalApicId
- DB 0Fh ; Cr4Pse;Cr4Pae;Intel64Mode;ExecutionDisableOutsideSmrr
- DB 0 ; BIOS to STM
- DB 0 ; STM to BIOS
- DB 0
- DW CODE_SEL
- DW DATA_SEL
- DW DATA_SEL
- DW DATA_SEL
- DW TR_SEL
- DW 0
- DQ 0 ; SmmCr3
- DQ _OnStmSetup
- DQ _OnStmTeardown
- DQ 0 ; SmmSmiHandlerRip - SMM guest entrypoint
- DQ 0 ; SmmSmiHandlerRsp
- DQ 0
- DD 0
- DD 80010100h ; RequiredStmSmmRevId
- DQ _OnException
- DQ 0 ; ExceptionStack
- DW DATA_SEL
- DW 01Fh ; ExceptionFilter
- DD 0
- DQ 0
- DQ 0 ; BiosHwResourceRequirementsPtr
- DQ 0 ; AcpiRsdp
- DB 0 ; PhysicalAddressBits
-PSD_SIZE = $ - offset gcStmPsd
-
- .code
-;------------------------------------------------------------------------------
-; SMM Exception handlers
-;------------------------------------------------------------------------------
-_OnException PROC
- mov rcx, rsp
- add rsp, -28h
- call SmmStmExceptionHandler
- add rsp, 28h
- mov ebx, eax
- mov eax, 4
- DB 0fh, 01h, 0c1h ; VMCALL
- jmp $
-_OnException ENDP
-
-_OnStmSetup PROC
-;
-; Check XD disable bit
-;
- xor r8, r8
- mov rax, offset ASM_PFX(gStmXdSupported)
- mov al, [rax]
- cmp al, 0
- jz @StmXdDone1
- mov ecx, MSR_IA32_MISC_ENABLE
- rdmsr
- mov r8, rdx ; save MSR_IA32_MISC_ENABLE[63-32]
- test edx, BIT2 ; MSR_IA32_MISC_ENABLE[34]
- jz @f
- and dx, 0FFFBh ; clear XD Disable bit if it is set
- wrmsr
-@@:
- mov ecx, MSR_EFER
- rdmsr
- or ax, MSR_EFER_XD ; enable NXE
- wrmsr
-@StmXdDone1:
- push r8
-
- add rsp, -20h
- call SmmStmSetup
- add rsp, 20h
-
- mov rax, offset ASM_PFX(gStmXdSupported)
- mov al, [rax]
- cmp al, 0
- jz @f
- pop rdx ; get saved MSR_IA32_MISC_ENABLE[63-32]
- test edx, BIT2
- jz @f
- mov ecx, MSR_IA32_MISC_ENABLE
- rdmsr
- or dx, BIT2 ; set XD Disable bit if it was set before entering into SMM
- wrmsr
-@@:
-
- rsm
-_OnStmSetup ENDP
-
-_OnStmTeardown PROC
-;
-; Check XD disable bit
-;
- xor r8, r8
- mov rax, offset ASM_PFX(gStmXdSupported)
- mov al, [rax]
- cmp al, 0
- jz @StmXdDone2
- mov ecx, MSR_IA32_MISC_ENABLE
- rdmsr
- mov r8, rdx ; save MSR_IA32_MISC_ENABLE[63-32]
- test edx, BIT2 ; MSR_IA32_MISC_ENABLE[34]
- jz @f
- and dx, 0FFFBh ; clear XD Disable bit if it is set
- wrmsr
-@@:
- mov ecx, MSR_EFER
- rdmsr
- or ax, MSR_EFER_XD ; enable NXE
- wrmsr
-@StmXdDone2:
- push r8
-
- add rsp, -20h
- call SmmStmTeardown
- add rsp, 20h
-
- mov rax, offset ASM_PFX(gStmXdSupported)
- mov al, [rax]
- cmp al, 0
- jz @f
- pop rdx ; get saved MSR_IA32_MISC_ENABLE[63-32]
- test edx, BIT2
- jz @f
- mov ecx, MSR_IA32_MISC_ENABLE
- rdmsr
- or dx, BIT2 ; set XD Disable bit if it was set before entering into SMM
- wrmsr
-@@:
-
- rsm
-_OnStmTeardown ENDP
-
- END
|