summaryrefslogtreecommitdiff
path: root/UefiCpuPkg/CpuDxe/Ia32
diff options
context:
space:
mode:
authorJeff Fan <jeff.fan@intel.com>2013-11-22 06:24:41 +0000
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2013-11-22 06:24:41 +0000
commite41aad152135f27ae1da142454af85a6597719ee (patch)
tree07138e5c40f53ca941863f27f8ad409019556077 /UefiCpuPkg/CpuDxe/Ia32
parent57f360f2615818366b39ff21fcd0201154be4ab2 (diff)
downloadedk2-platforms-e41aad152135f27ae1da142454af85a6597719ee.tar.xz
1. Separated DxeSmmCpuExceptionHandlerLib.inf into 2 instance DxeCpuExceptionHandlerLib.inf and SmmCpuExceptionHandlerLib.inf.
2. Updated CPU Exception Handler Library instance according to the new CPU Exception Handler Library class definitions. 3. Updated CPU Exception Handler Library instance to handle the vector attributes defined in PI 1.2.1. Signed-off-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Hot Tian <hot.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14885 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'UefiCpuPkg/CpuDxe/Ia32')
-rw-r--r--UefiCpuPkg/CpuDxe/Ia32/CpuAsm.S310
-rw-r--r--UefiCpuPkg/CpuDxe/Ia32/CpuAsm.asm307
-rw-r--r--UefiCpuPkg/CpuDxe/Ia32/IvtAsm.S818
-rw-r--r--UefiCpuPkg/CpuDxe/Ia32/IvtAsm.asm51
4 files changed, 2 insertions, 1484 deletions
diff --git a/UefiCpuPkg/CpuDxe/Ia32/CpuAsm.S b/UefiCpuPkg/CpuDxe/Ia32/CpuAsm.S
index 3b43b6fd8b..e034bc2e2e 100644
--- a/UefiCpuPkg/CpuDxe/Ia32/CpuAsm.S
+++ b/UefiCpuPkg/CpuDxe/Ia32/CpuAsm.S
@@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
#*
-#* Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
+#* Copyright (c) 2006 - 2013, 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
@@ -19,21 +19,6 @@
#.MMX
#.XMM
-#EXTRN ASM_PFX(mErrorCodeFlag):DWORD # Error code flags for exceptions
-
-
-#
-# point to the external interrupt vector table
-#
-ExternalVectorTablePtr:
- .byte 0, 0, 0, 0
-
-ASM_GLOBAL ASM_PFX(InitializeExternalVectorTablePtr)
-ASM_PFX(InitializeExternalVectorTablePtr):
- movl 4(%esp), %eax
- movl %eax, ExternalVectorTablePtr
- ret
-
#------------------------------------------------------------------------------
# VOID
# SetCodeSelector (
@@ -68,298 +53,5 @@ ASM_PFX(SetDataSelectors):
movw %cx, %gs
ret
-#---------------------------------------;
-# CommonInterruptEntry ;
-#---------------------------------------;
-# The follow algorithm is used for the common interrupt routine.
-
-ASM_GLOBAL ASM_PFX(CommonInterruptEntry)
-ASM_PFX(CommonInterruptEntry):
- cli
- #
- # All interrupt handlers are invoked through interrupt gates, so
- # IF flag automatically cleared at the entry point
- #
-
- #
- # Calculate vector number
- #
- # Get the return address of call, actually, it is the
- # address of vector number.
- #
- xchgl (%esp), %ecx
- movw (%ecx), %cx
- andl $0x0FFFF, %ecx
- cmpl $32, %ecx # Intel reserved vector for exceptions?
- jae NoErrorCode
- bt %ecx, ASM_PFX(mErrorCodeFlag)
- jc HasErrorCode
-
-NoErrorCode:
-
- #
- # Stack:
- # +---------------------+
- # + EFlags +
- # +---------------------+
- # + CS +
- # +---------------------+
- # + EIP +
- # +---------------------+
- # + ECX +
- # +---------------------+ <-- ESP
- #
- # Registers:
- # ECX - Vector Number
- #
-
- #
- # Put Vector Number on stack
- #
- pushl %ecx
-
- #
- # Put 0 (dummy) error code on stack, and restore ECX
- #
- xorl %ecx, %ecx # ECX = 0
- xchgl 4(%esp), %ecx
-
- jmp ErrorCodeAndVectorOnStack
-
-HasErrorCode:
-
- #
- # Stack:
- # +---------------------+
- # + EFlags +
- # +---------------------+
- # + CS +
- # +---------------------+
- # + EIP +
- # +---------------------+
- # + Error Code +
- # +---------------------+
- # + ECX +
- # +---------------------+ <-- ESP
- #
- # Registers:
- # ECX - Vector Number
- #
-
- #
- # Put Vector Number on stack and restore ECX
- #
- xchgl (%esp), %ecx
-
-ErrorCodeAndVectorOnStack:
- pushl %ebp
- movl %esp, %ebp
-
- #
- # Stack:
- # +---------------------+
- # + EFlags +
- # +---------------------+
- # + CS +
- # +---------------------+
- # + EIP +
- # +---------------------+
- # + Error Code +
- # +---------------------+
- # + Vector Number +
- # +---------------------+
- # + EBP +
- # +---------------------+ <-- EBP
- #
-
- #
- # Align stack to make sure that EFI_FX_SAVE_STATE_IA32 of EFI_SYSTEM_CONTEXT_IA32
- # is 16-byte aligned
- #
- andl $0x0fffffff0, %esp
- subl $12, %esp
-
-#; UINT32 Edi, Esi, Ebp, Esp, Ebx, Edx, Ecx, Eax;
- pushl %eax
- pushl %ecx
- pushl %edx
- pushl %ebx
- leal 24(%ebp), %ecx
- pushl %ecx # ESP
- pushl (%ebp) # EBP
- pushl %esi
- pushl %edi
-
-#; UINT32 Gs, Fs, Es, Ds, Cs, Ss;
- movl %ss, %eax
- pushl %eax
- movzwl 16(%ebp), %eax
- pushl %eax
- movl %ds, %eax
- pushl %eax
- movl %es, %eax
- pushl %eax
- movl %fs, %eax
- pushl %eax
- movl %gs, %eax
- pushl %eax
-
-#; UINT32 Eip;
- movl 12(%ebp), %eax
- pushl %eax
-
-#; UINT32 Gdtr[2], Idtr[2];
- subl $8, %esp
- sidt (%esp)
- movl 2(%esp), %eax
- xchgl (%esp), %eax
- andl $0x0FFFF, %eax
- movl %eax, 4(%esp)
-
- subl $8, %esp
- sgdt (%esp)
- movl 2(%esp), %eax
- xchgl (%esp), %eax
- andl $0x0FFFF, %eax
- movl %eax, 4(%esp)
-
-#; UINT32 Ldtr, Tr;
- xorl %eax, %eax
- str %ax
- pushl %eax
- sldt %ax
- pushl %eax
-
-#; UINT32 EFlags;
- movl 20(%ebp), %eax
- pushl %eax
-
-#; UINT32 Cr0, Cr1, Cr2, Cr3, Cr4;
- movl %cr4, %eax
- orl $0x208, %eax
- movl %eax, %cr4
- pushl %eax
- movl %cr3, %eax
- pushl %eax
- movl %cr2, %eax
- pushl %eax
- xorl %eax, %eax
- pushl %eax
- movl %cr0, %eax
- pushl %eax
-
-#; UINT32 Dr0, Dr1, Dr2, Dr3, Dr6, Dr7;
- movl %dr7, %eax
- pushl %eax
- movl %dr6, %eax
- pushl %eax
- movl %dr3, %eax
- pushl %eax
- movl %dr2, %eax
- pushl %eax
- movl %dr1, %eax
- pushl %eax
- movl %dr0, %eax
- pushl %eax
-
-#; FX_SAVE_STATE_IA32 FxSaveState;
- subl $512, %esp
- movl %esp, %edi
- .byte 0x0f, 0x0ae, 0x07 #fxsave [edi]
-
-#; UEFI calling convention for IA32 requires that Direction flag in EFLAGs is clear
- cld
-
-#; UINT32 ExceptionData;
- pushl 8(%ebp)
-
-#; call into exception handler
- movl ExternalVectorTablePtr, %eax # get the interrupt vectors base
- orl %eax, %eax # NULL?
- jz nullExternalExceptionHandler
-
- mov 4(%ebp), %ecx
- movl (%eax,%ecx,4), %eax
- orl %eax, %eax # NULL?
- jz nullExternalExceptionHandler
-
-#; Prepare parameter and call
- movl %esp, %edx
- pushl %edx
- movl 4(%ebp), %edx
- pushl %edx
-
- #
- # Call External Exception Handler
- #
- call *%eax
- addl $8, %esp
-
-nullExternalExceptionHandler:
-
- cli
-#; UINT32 ExceptionData;
- addl $4, %esp
-
-#; FX_SAVE_STATE_IA32 FxSaveState;
- movl %esp, %esi
- .byte 0x0f, 0x0ae, 0x0e # fxrstor [esi]
- addl $512, %esp
-
-#; UINT32 Dr0, Dr1, Dr2, Dr3, Dr6, Dr7;
-#; Skip restoration of DRx registers to support in-circuit emualators
-#; or debuggers set breakpoint in interrupt/exception context
- addl $24, %esp
-
-#; UINT32 Cr0, Cr1, Cr2, Cr3, Cr4;
- popl %eax
- movl %eax, %cr0
- addl $4, %esp # not for Cr1
- popl %eax
- movl %eax, %cr2
- popl %eax
- movl %eax, %cr3
- popl %eax
- movl %eax, %cr4
-
-#; UINT32 EFlags;
- popl 20(%ebp)
-
-#; UINT32 Ldtr, Tr;
-#; UINT32 Gdtr[2], Idtr[2];
-#; Best not let anyone mess with these particular registers...
- addl $24, %esp
-
-#; UINT32 Eip;
- popl 12(%ebp)
-
-#; UINT32 Gs, Fs, Es, Ds, Cs, Ss;
-#; NOTE - modified segment registers could hang the debugger... We
-#; could attempt to insulate ourselves against this possibility,
-#; but that poses risks as well.
-#;
- popl %gs
- popl %fs
- popl %es
- popl %ds
- popl 16(%ebp)
- popl %ss
-
-#; UINT32 Edi, Esi, Ebp, Esp, Ebx, Edx, Ecx, Eax;
- popl %edi
- popl %esi
- addl $4, %esp # not for ebp
- addl $4, %esp # not for esp
- popl %ebx
- popl %edx
- popl %ecx
- popl %eax
-
- movl %ebp, %esp
- popl %ebp
- addl $8, %esp
- iretl
-
-
#END
diff --git a/UefiCpuPkg/CpuDxe/Ia32/CpuAsm.asm b/UefiCpuPkg/CpuDxe/Ia32/CpuAsm.asm
index 0924dc5bb3..7f8f0d6f3a 100644
--- a/UefiCpuPkg/CpuDxe/Ia32/CpuAsm.asm
+++ b/UefiCpuPkg/CpuDxe/Ia32/CpuAsm.asm
@@ -1,7 +1,7 @@
TITLE CpuAsm.asm:
;------------------------------------------------------------------------------
;*
-;* Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
+;* Copyright (c) 2006 - 2013, 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
@@ -20,19 +20,6 @@
.model flat,C
.code
-EXTRN mErrorCodeFlag:DWORD ; Error code flags for exceptions
-
-;
-; point to the external interrupt vector table
-;
-ExternalVectorTablePtr DWORD 0
-
-InitializeExternalVectorTablePtr PROC PUBLIC
- mov eax, [esp+4]
- mov ExternalVectorTablePtr, eax
- ret
-InitializeExternalVectorTablePtr ENDP
-
;------------------------------------------------------------------------------
; VOID
; SetCodeSelector (
@@ -67,297 +54,5 @@ SetDataSelectors PROC PUBLIC
ret
SetDataSelectors ENDP
-;---------------------------------------;
-; CommonInterruptEntry ;
-;---------------------------------------;
-; The follow algorithm is used for the common interrupt routine.
-
-CommonInterruptEntry PROC PUBLIC
- cli
- ;
- ; All interrupt handlers are invoked through interrupt gates, so
- ; IF flag automatically cleared at the entry point
- ;
-
- ;
- ; Calculate vector number
- ;
- ; Get the return address of call, actually, it is the
- ; address of vector number.
- ;
- xchg ecx, [esp]
- mov cx, [ecx]
- and ecx, 0FFFFh
- cmp ecx, 32 ; Intel reserved vector for exceptions?
- jae NoErrorCode
- bt mErrorCodeFlag, ecx
- jc HasErrorCode
-
-NoErrorCode:
-
- ;
- ; Stack:
- ; +---------------------+
- ; + EFlags +
- ; +---------------------+
- ; + CS +
- ; +---------------------+
- ; + EIP +
- ; +---------------------+
- ; + ECX +
- ; +---------------------+ <-- ESP
- ;
- ; Registers:
- ; ECX - Vector Number
- ;
-
- ;
- ; Put Vector Number on stack
- ;
- push ecx
-
- ;
- ; Put 0 (dummy) error code on stack, and restore ECX
- ;
- xor ecx, ecx ; ECX = 0
- xchg ecx, [esp+4]
-
- jmp ErrorCodeAndVectorOnStack
-
-HasErrorCode:
-
- ;
- ; Stack:
- ; +---------------------+
- ; + EFlags +
- ; +---------------------+
- ; + CS +
- ; +---------------------+
- ; + EIP +
- ; +---------------------+
- ; + Error Code +
- ; +---------------------+
- ; + ECX +
- ; +---------------------+ <-- ESP
- ;
- ; Registers:
- ; ECX - Vector Number
- ;
-
- ;
- ; Put Vector Number on stack and restore ECX
- ;
- xchg ecx, [esp]
-
-ErrorCodeAndVectorOnStack:
- push ebp
- mov ebp, esp
-
- ;
- ; Stack:
- ; +---------------------+
- ; + EFlags +
- ; +---------------------+
- ; + CS +
- ; +---------------------+
- ; + EIP +
- ; +---------------------+
- ; + Error Code +
- ; +---------------------+
- ; + Vector Number +
- ; +---------------------+
- ; + EBP +
- ; +---------------------+ <-- EBP
- ;
-
- ;
- ; Align stack to make sure that EFI_FX_SAVE_STATE_IA32 of EFI_SYSTEM_CONTEXT_IA32
- ; is 16-byte aligned
- ;
- and esp, 0fffffff0h
- sub esp, 12
-
-;; UINT32 Edi, Esi, Ebp, Esp, Ebx, Edx, Ecx, Eax;
- push eax
- push ecx
- push edx
- push ebx
- lea ecx, [ebp + 6 * 4]
- push ecx ; ESP
- push dword ptr [ebp] ; EBP
- push esi
- push edi
-
-;; UINT32 Gs, Fs, Es, Ds, Cs, Ss;
- mov eax, ss
- push eax
- movzx eax, word ptr [ebp + 4 * 4]
- push eax
- mov eax, ds
- push eax
- mov eax, es
- push eax
- mov eax, fs
- push eax
- mov eax, gs
- push eax
-
-;; UINT32 Eip;
- mov eax, [ebp + 3 * 4]
- push eax
-
-;; UINT32 Gdtr[2], Idtr[2];
- sub esp, 8
- sidt [esp]
- mov eax, [esp + 2]
- xchg eax, [esp]
- and eax, 0FFFFh
- mov [esp+4], eax
-
- sub esp, 8
- sgdt [esp]
- mov eax, [esp + 2]
- xchg eax, [esp]
- and eax, 0FFFFh
- mov [esp+4], eax
-
-;; UINT32 Ldtr, Tr;
- xor eax, eax
- str ax
- push eax
- sldt ax
- push eax
-
-;; UINT32 EFlags;
- mov eax, [ebp + 5 * 4]
- push eax
-
-;; UINT32 Cr0, Cr1, Cr2, Cr3, Cr4;
- mov eax, cr4
- or eax, 208h
- mov cr4, eax
- push eax
- mov eax, cr3
- push eax
- mov eax, cr2
- push eax
- xor eax, eax
- push eax
- mov eax, cr0
- push eax
-
-;; UINT32 Dr0, Dr1, Dr2, Dr3, Dr6, Dr7;
- mov eax, dr7
- push eax
- mov eax, dr6
- push eax
- mov eax, dr3
- push eax
- mov eax, dr2
- push eax
- mov eax, dr1
- push eax
- mov eax, dr0
- push eax
-
-;; FX_SAVE_STATE_IA32 FxSaveState;
- sub esp, 512
- mov edi, esp
- db 0fh, 0aeh, 07h ;fxsave [edi]
-
-;; UEFI calling convention for IA32 requires that Direction flag in EFLAGs is clear
- cld
-
-;; UINT32 ExceptionData;
- push dword ptr [ebp + 2 * 4]
-
-;; call into exception handler
- mov eax, ExternalVectorTablePtr ; get the interrupt vectors base
- or eax, eax ; NULL?
- jz nullExternalExceptionHandler
-
- mov ecx, [ebp + 4]
- mov eax, [eax + ecx * 4]
- or eax, eax ; NULL?
- jz nullExternalExceptionHandler
-
-;; Prepare parameter and call
- mov edx, esp
- push edx
- mov edx, dword ptr [ebp + 1 * 4]
- push edx
-
- ;
- ; Call External Exception Handler
- ;
- call eax
- add esp, 8
-
-nullExternalExceptionHandler:
-
- cli
-;; UINT32 ExceptionData;
- add esp, 4
-
-;; FX_SAVE_STATE_IA32 FxSaveState;
- mov esi, esp
- db 0fh, 0aeh, 0eh ; fxrstor [esi]
- add esp, 512
-
-;; UINT32 Dr0, Dr1, Dr2, Dr3, Dr6, Dr7;
-;; Skip restoration of DRx registers to support in-circuit emualators
-;; or debuggers set breakpoint in interrupt/exception context
- add esp, 4 * 6
-
-;; UINT32 Cr0, Cr1, Cr2, Cr3, Cr4;
- pop eax
- mov cr0, eax
- add esp, 4 ; not for Cr1
- pop eax
- mov cr2, eax
- pop eax
- mov cr3, eax
- pop eax
- mov cr4, eax
-
-;; UINT32 EFlags;
- pop dword ptr [ebp + 5 * 4]
-
-;; UINT32 Ldtr, Tr;
-;; UINT32 Gdtr[2], Idtr[2];
-;; Best not let anyone mess with these particular registers...
- add esp, 24
-
-;; UINT32 Eip;
- pop dword ptr [ebp + 3 * 4]
-
-;; UINT32 Gs, Fs, Es, Ds, Cs, Ss;
-;; NOTE - modified segment registers could hang the debugger... We
-;; could attempt to insulate ourselves against this possibility,
-;; but that poses risks as well.
-;;
- pop gs
- pop fs
- pop es
- pop ds
- pop dword ptr [ebp + 4 * 4]
- pop ss
-
-;; UINT32 Edi, Esi, Ebp, Esp, Ebx, Edx, Ecx, Eax;
- pop edi
- pop esi
- add esp, 4 ; not for ebp
- add esp, 4 ; not for esp
- pop ebx
- pop edx
- pop ecx
- pop eax
-
- mov esp, ebp
- pop ebp
- add esp, 8
- iretd
-
-CommonInterruptEntry ENDP
END
diff --git a/UefiCpuPkg/CpuDxe/Ia32/IvtAsm.S b/UefiCpuPkg/CpuDxe/Ia32/IvtAsm.S
deleted file mode 100644
index c38461dc9c..0000000000
--- a/UefiCpuPkg/CpuDxe/Ia32/IvtAsm.S
+++ /dev/null
@@ -1,818 +0,0 @@
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2006 - 2009, 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:
-#
-# IvtAsm.S
-#
-# Abstract:
-#
-# Interrupt Vector Table
-#
-#------------------------------------------------------------------------------
-
-#
-# Interrupt Vector Table
-#
-
-
-ASM_GLOBAL ASM_PFX(AsmIdtVector00)
-.p2align 3
-ASM_PFX(AsmIdtVector00):
- call ASM_PFX(CommonInterruptEntry)
- .short 0x00
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x01
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x02
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x03
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x04
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x05
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x06
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x07
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x08
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x09
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x0a
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x0b
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x0c
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x0d
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x0e
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x0f
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0x10
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x11
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x12
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x13
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x14
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x15
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x16
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x17
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x18
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x19
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x1a
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x1b
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x1c
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x1d
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x1e
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x1f
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0x00
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x21
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x22
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x23
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x24
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x25
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x26
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x27
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x28
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x29
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x2a
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x2b
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x2c
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x2d
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x2e
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x2f
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0x30
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x31
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x32
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x33
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x34
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x35
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x36
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x37
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x38
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x39
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x3a
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x3b
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x3c
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x3d
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x3e
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x3f
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0x40
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x41
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x42
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x43
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x44
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x45
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x46
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x47
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x48
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x49
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x4a
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x4b
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x4c
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x4d
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x4e
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x4f
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0x50
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x51
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x52
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x53
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x54
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x55
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x56
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x57
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x58
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x59
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x5a
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x5b
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x5c
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x5d
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x5e
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x5f
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0x60
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x61
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x62
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x63
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x64
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x65
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x66
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x67
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x68
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x69
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x6a
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x6b
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x6c
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x6d
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x6e
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x6f
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0x70
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x71
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x72
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x73
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x74
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x75
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x76
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x77
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x78
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x79
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x7a
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x7b
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x7c
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x7d
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x7e
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x7f
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0x80
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x81
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x82
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x83
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x84
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x85
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x86
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x87
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x88
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x89
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x8a
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x8b
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x8c
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x8d
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x8e
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x8f
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0x90
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x91
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x92
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x93
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x94
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x95
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x96
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x97
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x98
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x99
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x9a
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x9b
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x9c
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x9d
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x9e
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0x9f
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0xa0
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xa1
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xa2
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xa3
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xa4
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xa5
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xa6
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xa7
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xa8
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xa9
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xaa
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xab
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xac
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xad
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xae
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xaf
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0xb0
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xb1
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xb2
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xb3
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xb4
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xb5
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xb6
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xb7
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xb8
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xb9
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xba
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xbb
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xbc
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xbd
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xbe
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xbf
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0xc0
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xc1
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xc2
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xc3
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xc4
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xc5
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xc6
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xc7
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xc8
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xc9
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xca
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xcb
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xcc
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xcd
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xce
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xcf
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0xd0
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xd1
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xd2
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xd3
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xd4
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xd5
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xd6
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xd7
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xd8
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xd9
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xda
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xdb
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xdc
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xdd
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xde
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xdf
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0xe0
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xe1
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xe2
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xe3
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xe4
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xe5
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xe6
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xe7
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xe8
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xe9
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xea
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xeb
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xec
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xed
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xee
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xef
- nop
-
- call ASM_PFX(CommonInterruptEntry)
- .short 0xf0
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xf1
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xf2
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xf3
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xf4
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xf5
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xf6
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xf7
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xf8
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xf9
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xfa
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xfb
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xfc
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xfd
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xfe
- nop
- call ASM_PFX(CommonInterruptEntry)
- .short 0xff
- nop
-
-ASM_GLOBAL ASM_PFX(AsmCommonIdtEnd)
-ASM_PFX(AsmCommonIdtEnd):
- .byte 0
-
-
diff --git a/UefiCpuPkg/CpuDxe/Ia32/IvtAsm.asm b/UefiCpuPkg/CpuDxe/Ia32/IvtAsm.asm
deleted file mode 100644
index 02003c9fa5..0000000000
--- a/UefiCpuPkg/CpuDxe/Ia32/IvtAsm.asm
+++ /dev/null
@@ -1,51 +0,0 @@
- TITLE IvtAsm.asm:
-;------------------------------------------------------------------------------
-;*
-;* Copyright (c) 2008 - 2009, 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.
-;*
-;* IvtAsm.asm
-;*
-;* Abstract:
-;*
-;------------------------------------------------------------------------------
-
-#include <Base.h>
-
-#ifdef MDE_CPU_IA32
- .686
- .model flat,C
-#endif
- .code
-
-;------------------------------------------------------------------------------
-; Generic IDT Vector Handlers for the Host. They are all the same so they
-; will compress really well.
-;
-; By knowing the return address for Vector 00 you can can calculate the
-; vector number by looking at the call CommonInterruptEntry return address.
-; (return address - (AsmIdtVector00 + 5))/8 == IDT index
-;
-;------------------------------------------------------------------------------
-
-EXTRN CommonInterruptEntry:PROC
-
-ALIGN 8
-
-PUBLIC AsmIdtVector00
-
-AsmIdtVector00 LABEL BYTE
-REPEAT 256
- call CommonInterruptEntry
- dw ($ - AsmIdtVector00 - 5) / 8 ; vector number
- nop
-ENDM
-
-END
-