1. DebugAgentLib will install reserved vector table to persist vectors.
2. Update PeCoffExtraActionLib to detect if debug agent initialized or not by checking each IDT entry instead of whole IDT table. Signed-off-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14886 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -24,6 +24,114 @@ CHAR8 mErrorMsgConnectOK[] = "HOST connection is successful!\r\n";
|
||||
CHAR8 mErrorMsgConnectFail[] = "HOST connection is failed!\r\n";
|
||||
CHAR8 mWarningMsgIngoreBreakpoint[] = "Ignore break point in SMM for SMI issued during DXE debugging!\r\n";
|
||||
|
||||
//
|
||||
// Vector Handoff Info list used by Debug Agent for persist
|
||||
//
|
||||
EFI_VECTOR_HANDOFF_INFO mVectorHandoffInfoDebugAgent[] = {
|
||||
{
|
||||
DEBUG_EXCEPT_DIVIDE_ERROR, // Vector 0
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_DEBUG, // Vector 1
|
||||
EFI_VECTOR_HANDOFF_DO_NOT_HOOK,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_NMI, // Vector 2
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_BREAKPOINT, // Vector 3
|
||||
EFI_VECTOR_HANDOFF_DO_NOT_HOOK,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_OVERFLOW, // Vector 4
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_BOUND, // Vector 5
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_INVALID_OPCODE, // Vector 6
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_DOUBLE_FAULT, // Vector 8
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_INVALID_TSS, // Vector 10
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_SEG_NOT_PRESENT, // Vector 11
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_STACK_FAULT, // Vector 12
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_GP_FAULT, // Vector 13
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_PAGE_FAULT, // Vector 14
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_FP_ERROR, // Vector 16
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_ALIGNMENT_CHECK, // Vector 17
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_MACHINE_CHECK, // Vector 18
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_EXCEPT_SIMD, // Vector 19
|
||||
EFI_VECTOR_HANDOFF_HOOK_BEFORE,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_TIMER_VECTOR, // Vector 32
|
||||
EFI_VECTOR_HANDOFF_DO_NOT_HOOK,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
DEBUG_MAILBOX_VECTOR, // Vector 33
|
||||
EFI_VECTOR_HANDOFF_DO_NOT_HOOK,
|
||||
EFI_DEBUG_AGENT_GUID
|
||||
},
|
||||
{
|
||||
0,
|
||||
EFI_VECTOR_HANDOFF_LAST_ENTRY,
|
||||
{ 0 }
|
||||
}
|
||||
};
|
||||
|
||||
UINTN mVectorHandoffInfoCount = sizeof (mVectorHandoffInfoDebugAgent) / sizeof (EFI_VECTOR_HANDOFF_INFO);
|
||||
|
||||
/**
|
||||
Calculate CRC16 for target data.
|
||||
|
||||
|
@@ -16,9 +16,9 @@
|
||||
#define _DEBUG_AGENT_H_
|
||||
|
||||
#include <Register/LocalApic.h>
|
||||
|
||||
#include <Guid/DebugAgentGuid.h>
|
||||
|
||||
#include <Guid/VectorHandoffTable.h>
|
||||
#include <Ppi/VectorHandoffInfo.h>
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/ResetSystemLib.h>
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "DebugMp.h"
|
||||
#include "DebugTimer.h"
|
||||
#include "ArchDebugSupport.h"
|
||||
#include "DebugException.h"
|
||||
|
||||
//
|
||||
// These macros may be already defined in DebugAgentLib.h
|
||||
@@ -50,8 +51,8 @@
|
||||
#define DEBUG_AGENT_INIT_DXE_UNLOAD 11
|
||||
#define DEBUG_AGENT_INIT_THUNK_PEI_IA32TOX64 12
|
||||
|
||||
#define DEBUG_INT1_VECTOR 1
|
||||
#define DEBUG_INT3_VECTOR 3
|
||||
#define DEBUG_INT1_VECTOR DEBUG_EXCEPT_DEBUG
|
||||
#define DEBUG_INT3_VECTOR DEBUG_EXCEPT_BREAKPOINT
|
||||
#define DEBUG_TIMER_VECTOR 32
|
||||
#define DEBUG_MAILBOX_VECTOR 33
|
||||
|
||||
@@ -67,8 +68,9 @@
|
||||
extern UINTN Exception0Handle;
|
||||
extern UINTN TimerInterruptHandle;
|
||||
extern UINT16 ExceptionStubHeaderSize;
|
||||
|
||||
extern BOOLEAN mSkipBreakpoint;
|
||||
extern EFI_VECTOR_HANDOFF_INFO mVectorHandoffInfoDebugAgent[];
|
||||
extern UINTN mVectorHandoffInfoCount;
|
||||
|
||||
//
|
||||
// CPU exception information issued by debug agent
|
||||
|
@@ -27,114 +27,137 @@ ASM_GLOBAL ASM_PFX(ExceptionStubHeaderSize)
|
||||
ASM_GLOBAL ASM_PFX(TimerInterruptHandle)
|
||||
ASM_GLOBAL ASM_PFX(CommonEntry)
|
||||
|
||||
.macro AGENT_HANDLER_SIGNATURE
|
||||
.byte 0x41, 0x47, 0x54, 0x48 # AGENT_HANDLER_SIGNATURE SIGNATURE_32('A','G','T','H')
|
||||
.endm
|
||||
|
||||
.data
|
||||
|
||||
ASM_PFX(ExceptionStubHeaderSize): .word ASM_PFX(Exception1Handle) - ASM_PFX(Exception0Handle)
|
||||
|
||||
.text
|
||||
|
||||
.byte 0x41, 0x47, 0x54, 0x48 # AGENT_HANDLER_SIGNATURE SIGNATURE_32('A','G','T','H')
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception0Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $0, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception1Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $1, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception2Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $2, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception3Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $3, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception4Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $4, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception5Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $5, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception6Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $6, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception7Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $7, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception8Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $8, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception9Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $9, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception10Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $10, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception11Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $11, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception12Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $12, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception13Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $13, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception14Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $14, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception15Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $15, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception16Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $16, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception17Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $17, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception18Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $18, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception19Handle):
|
||||
cli
|
||||
pushl %eax
|
||||
mov $19, %eax
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(TimerInterruptHandle):
|
||||
cli
|
||||
pushl %eax
|
||||
|
@@ -32,6 +32,10 @@ InterruptProcess PROTO C
|
||||
|
||||
public Exception0Handle, TimerInterruptHandle, ExceptionStubHeaderSize
|
||||
|
||||
AGENT_HANDLER_SIGNATURE MACRO
|
||||
db 41h, 47h, 54h, 48h ; SIGNATURE_32('A','G','T','H')
|
||||
ENDM
|
||||
|
||||
.data
|
||||
|
||||
ExceptionStubHeaderSize DW Exception1Handle - Exception0Handle
|
||||
@@ -39,108 +43,127 @@ CommonEntryAddr DD CommonEntry
|
||||
|
||||
.code
|
||||
|
||||
db 41h, 47h, 54h, 48h ; AGENT_HANDLER_SIGNATURE SIGNATURE_32('A','G','T','H')
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception0Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 0
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception1Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 1
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception2Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 2
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception3Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 3
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception4Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 4
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception5Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 5
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception6Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 6
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception7Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 7
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception8Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 8
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception9Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 9
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception10Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 10
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception11Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 11
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception12Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 12
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception13Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 13
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception14Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 14
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception15Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 15
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception16Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 16
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception17Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 17
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception18Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 18
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception19Handle:
|
||||
cli
|
||||
push eax
|
||||
mov eax, 19
|
||||
jmp dword ptr [CommonEntryAddr]
|
||||
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
TimerInterruptHandle:
|
||||
cli
|
||||
push eax
|
||||
|
@@ -28,6 +28,10 @@ ASM_GLOBAL ASM_PFX(ExceptionStubHeaderSize)
|
||||
ASM_GLOBAL ASM_PFX(TimerInterruptHandle)
|
||||
ASM_GLOBAL ASM_PFX(CommonEntry)
|
||||
|
||||
.macro AGENT_HANDLER_SIGNATURE
|
||||
.byte 0x41, 0x47, 0x54, 0x48 # AGENT_HANDLER_SIGNATURE SIGNATURE_32('A','G','T','H')
|
||||
.endm
|
||||
|
||||
.data
|
||||
|
||||
ASM_PFX(ExceptionStubHeaderSize): .word ASM_PFX(Exception1Handle) - ASM_PFX(Exception0Handle)
|
||||
@@ -35,108 +39,127 @@ ASM_PFX(ExceptionStubHeaderSize): .word ASM_PFX(Exception1Handle) - ASM_PFX
|
||||
|
||||
.text
|
||||
|
||||
.byte 0x41, 0x47, 0x54, 0x48 # AGENT_HANDLER_SIGNATURE SIGNATURE_32('A','G','T','H')
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception0Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $0, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception1Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $1, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception2Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $2, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception3Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $3, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception4Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $4, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception5Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $5, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception6Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $6, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception7Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $7, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception8Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $8, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception9Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $9, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception10Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $10, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception11Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $11, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception12Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $12, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception13Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $13, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception14Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $14, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception15Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $15, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception16Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $16, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception17Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $17, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception18Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $18, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(Exception19Handle):
|
||||
cli
|
||||
pushq %rcx
|
||||
mov $19, %rcx
|
||||
jmp ASM_PFX(CommonEntry)
|
||||
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
ASM_PFX(TimerInterruptHandle):
|
||||
cli
|
||||
pushq %rcx
|
||||
|
@@ -28,113 +28,136 @@ data SEGMENT
|
||||
|
||||
public Exception0Handle, TimerInterruptHandle, ExceptionStubHeaderSize
|
||||
|
||||
AGENT_HANDLER_SIGNATURE MACRO
|
||||
db 41h, 47h, 54h, 48h ; SIGNATURE_32('A','G','T','H')
|
||||
ENDM
|
||||
|
||||
ExceptionStubHeaderSize dw Exception1Handle - Exception0Handle ;
|
||||
CommonEntryAddr dq CommonEntry ;
|
||||
|
||||
.code
|
||||
|
||||
db 41h, 47h, 54h, 48h ; AGENT_HANDLER_SIGNATURE SIGNATURE_32('A','G','T','H')
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception0Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 0
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception1Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 1
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception2Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 2
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception3Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 3
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception4Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 4
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception5Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 5
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception6Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 6
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception7Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 7
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception8Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 8
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception9Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 9
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception10Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 10
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception11Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 11
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception12Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 12
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception13Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 13
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception14Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 14
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception15Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 15
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception16Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 16
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception17Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 17
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception18Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 18
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
Exception19Handle:
|
||||
cli
|
||||
push rcx
|
||||
mov rcx, 19
|
||||
jmp qword ptr [CommonEntryAddr]
|
||||
|
||||
AGENT_HANDLER_SIGNATURE
|
||||
TimerInterruptHandle:
|
||||
cli
|
||||
push rcx
|
||||
|
Reference in New Issue
Block a user