X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=UefiCpuPkg%2FPiSmmCpuDxeSmm%2FX64%2FSmiException.S;h=338bb70dd82161eb905d5cf043eca0a52982b182;hp=6dbcaa5b671490d53ca0388fd73730377bd56fd4;hb=8596c140907ebfeabf62427686280666a4e04893;hpb=427e3573426fe425141e413d17cf3ff65452fdb8 diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S index 6dbcaa5b67..338bb70dd8 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiException.S @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ # -# Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.
+# Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
# 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 @@ -20,7 +20,6 @@ #------------------------------------------------------------------------------ ASM_GLOBAL ASM_PFX(SmiPFHandler) -ASM_GLOBAL ASM_PFX(gSmiMtrrs) ASM_GLOBAL ASM_PFX(gcSmiIdtr) ASM_GLOBAL ASM_PFX(gcSmiGdtr) ASM_GLOBAL ASM_PFX(gcPsd) @@ -79,11 +78,11 @@ CodeSeg64: .byte 0 # BaseHigh # TSS Segment for X64 specially TssSeg: - .word TSS_DESC_SIZE # LimitLow + .word TSS_DESC_SIZE - 1 # LimitLow .word 0 # BaseLow .byte 0 # BaseMid .byte 0x89 - .byte 0xDB # LimitHigh + .byte 0x00 # LimitHigh .byte 0 # BaseHigh .long 0 # BaseUpper .long 0 # Reserved @@ -113,7 +112,7 @@ ASM_PFX(gcPsd): .long GDT_SIZE .long 0 .space 24, 0 - .quad ASM_PFX(gSmiMtrrs) + .quad 0 .equ PSD_SIZE, . - ASM_PFX(gcPsd) # @@ -128,244 +127,8 @@ ASM_PFX(gcSmiGdtr): .quad NullSeg ASM_PFX(gcSmiIdtr): - .word IDT_SIZE - 1 - .quad _SmiIDT - - -# -# Here is the IDT. There are 32 (not 255) entries in it since only processor -# generated exceptions will be handled. -# -_SmiIDT: -# The following segment repeats 32 times: -# No. 1 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 2 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 3 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 4 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 5 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 6 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 7 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 8 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 9 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 10 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 11 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 12 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 13 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 14 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 15 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 16 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 17 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 18 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 19 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 20 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 21 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 22 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 23 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 24 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 25 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 26 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 27 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 28 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 29 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 30 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 31 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 -# No. 32 - .word 0 # Offset 0:15 - .word CODE_SEL - .byte 0 # Unused - .byte 0x8e # Interrupt Gate, Present - .word 0 # Offset 16:31 - .quad 0 # Offset 32:63 - -_SmiIDTEnd: - -.equ IDT_SIZE, (_SmiIDTEnd - _SmiIDT) + .word 0 + .quad 0 .text @@ -600,11 +363,3 @@ L5: addq $16, %rsp # skip INT# & ErrCode iretq -ASM_GLOBAL ASM_PFX(InitializeIDTSmmStackGuard) -ASM_PFX(InitializeIDTSmmStackGuard): -# If SMM Stack Guard feature is enabled, set the IST field of -# the interrupt gate for Page Fault Exception to be 1 -# - movabsq $_SmiIDT + 14 * 16, %rax - movb $1, 4(%rax) - ret