From c7d22535f7dc90b8fef70153ef98549228569680 Mon Sep 17 00:00:00 2001 From: Shenglei Zhang Date: Fri, 29 Mar 2019 14:55:09 +0800 Subject: SourceLevelDebugPkg/DebugAgentCommon: Remove .S files .nasm file has been added for X86 arch. .S assembly code is not required any more. https://bugzilla.tianocore.org/show_bug.cgi?id=1594 Cc: Hao Wu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Shenglei Zhang Reviewed-by: Liming Gao --- .../DebugAgent/DebugAgentCommon/Ia32/AsmFuncs.S | 415 -------------------- .../DebugAgent/DebugAgentCommon/X64/AsmFuncs.S | 431 --------------------- .../Library/DebugAgent/DxeDebugAgentLib.inf | 2 - 3 files changed, 848 deletions(-) delete mode 100644 SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/Ia32/AsmFuncs.S delete mode 100644 SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/X64/AsmFuncs.S (limited to 'SourceLevelDebugPkg') diff --git a/SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/Ia32/AsmFuncs.S b/SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/Ia32/AsmFuncs.S deleted file mode 100644 index 30d279e..0000000 --- a/SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/Ia32/AsmFuncs.S +++ /dev/null @@ -1,415 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2010 - 2018, 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 -# 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: -# -# AsmFuncs.S -# -# Abstract: -# -# Debug interrupt handle functions. -# -#------------------------------------------------------------------------------ - -#include "DebugException.h" - -ASM_GLOBAL ASM_PFX(InterruptProcess) -ASM_GLOBAL ASM_PFX(Exception0Handle) -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): .long ASM_PFX(Exception1Handle) - ASM_PFX(Exception0Handle) - -.text - -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 - mov $32, %eax - jmp ASM_PFX(CommonEntry) - - -ASM_PFX(CommonEntry): - -#---------------------------------------; -# _CommonEntry ; -#----------------------------------------------------------------------------; -# The follow algorithm is used for the common interrupt routine. -# Entry from each interrupt with a push eax and eax=interrupt number -# -# +---------------------+ -# + EFlags + -# +---------------------+ -# + CS + -# +---------------------+ -# + EIP + -# +---------------------+ -# + Error Code + -# +---------------------+ -# + EAX / Vector Number + -# +---------------------+ -# + EBP + -# +---------------------+ <-- EBP -# - -# We need to determine if any extra data was pushed by the exception - cmpl $DEBUG_EXCEPT_DOUBLE_FAULT, %eax - je NoExtrPush - cmpl $DEBUG_EXCEPT_INVALID_TSS, %eax - je NoExtrPush - cmpl $DEBUG_EXCEPT_SEG_NOT_PRESENT, %eax - je NoExtrPush - cmpl $DEBUG_EXCEPT_STACK_FAULT, %eax - je NoExtrPush - cmpl $DEBUG_EXCEPT_GP_FAULT, %eax - je NoExtrPush - cmpl $DEBUG_EXCEPT_PAGE_FAULT, %eax - je NoExtrPush - cmpl $DEBUG_EXCEPT_ALIGNMENT_CHECK, %eax - je NoExtrPush - - pushl (%esp) - movl $0, 4(%esp) - -NoExtrPush: - - pushl %ebp - movl %esp,%ebp - - # - # Align stack to make sure that EFI_FX_SAVE_STATE_IA32 of EFI_SYSTEM_CONTEXT_IA32 - # is 16-byte aligned - # - andl $0xfffffff0,%esp - subl $12,%esp - -## UINT32 Edi, Esi, Ebp, Esp, Ebx, Edx, Ecx, Eax; - pushl 0x4(%ebp) - pushl %ebx - pushl %ecx - pushl %edx - mov %eax, %ebx # save vector in ebx - leal 24(%ebp),%ecx - pushl %ecx # save original ESP - pushl (%ebp) - pushl %esi - pushl %edi - -## UINT32 Cr0, Cr1, Cr2, Cr3, Cr4; -## insure FXSAVE/FXRSTOR is enabled in CR4... -## ... while we're at it, make sure DE is also enabled... - mov $1, %eax - pushl %ebx # temporarily save value of ebx on stack - cpuid # use CPUID to determine if FXSAVE/FXRESTOR - # and DE are supported - popl %ebx # retore value of ebx that was overwritten - # by CPUID - movl %cr4, %eax - pushl %eax # push cr4 firstly - testl $BIT24, %edx # Test for FXSAVE/FXRESTOR support - jz L1 - orl $BIT9, %eax # Set CR4.OSFXSR -L1: - testl $BIT2, %edx # Test for Debugging Extensions support - jz L2 - orl $BIT3, %eax # Set CR4.DE -L2: - movl %eax, %cr4 - movl %cr3, %eax - pushl %eax - movl %cr2, %eax - pushl %eax - xorl %eax,%eax - pushl %eax - movl %cr0, %eax - pushl %eax - -## 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; - pushl 12(%ebp) - -## UINT32 Gdtr[2], Idtr[2]; - subl $8,%esp - sidt (%esp) - subl $8,%esp - sgdt (%esp) - -## UINT32 Ldtr, Tr; - xorl %eax,%eax - strl %eax - pushl %eax - sldtl %eax - pushl %eax - -## UINT32 EFlags; - pushl 20(%ebp) - -## UINT32 Dr0, Dr1, Dr2, Dr3, Dr6, Dr7; - movl %dr7, %eax - pushl %eax -## clear Dr7 while executing debugger itself - xorl %eax,%eax - movl %eax, %dr7 - - movl %dr6, %eax - pushl %eax -## insure all status bits in dr6 are clear... - xorl %eax,%eax - movl %eax, %dr6 - - 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 - testl $BIT24, %edx # Test for FXSAVE/FXRESTOR support. - # edx still contains result from CPUID above - jz L3 - .byte 0x0f, 0xae, 0x07 # fxsave [edi] -L3: - -## save the exception data - pushl 8(%esp) - -## Clear Direction Flag - cld - -## Prepare parameter and call C function - pushl %esp - pushl %ebx - call ASM_PFX(InterruptProcess) - addl $8,%esp - -## skip the exception data - addl $4,%esp - -## FX_SAVE_STATE_IA32 FxSaveState; - movl %esp,%esi - movl $1, %eax - cpuid # use CPUID to determine if FXSAVE/FXRESTOR - # are supported - testl $BIT24, %edx # Test for FXSAVE/FXRESTOR support - jz L4 - .byte 0x0f, 0xae, 0x0e # fxrstor [esi] -L4: - addl $512,%esp - -## UINT32 Dr0, Dr1, Dr2, Dr3, Dr6, Dr7; - popl %eax - movl %eax, %dr0 - popl %eax - movl %eax, %dr1 - popl %eax - movl %eax, %dr2 - popl %eax - movl %eax, %dr3 -## skip restore of dr6. We cleared dr6 during the context save. - addl $4,%esp - popl %eax - movl %eax, %dr7 - -## 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; - pop 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 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 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 %edx - popl %ecx - popl %ebx - popl %eax - - movl %ebp,%esp - popl %ebp - addl $8,%esp # skip eax - iretl - diff --git a/SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/X64/AsmFuncs.S b/SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/X64/AsmFuncs.S deleted file mode 100644 index cdda41f..0000000 --- a/SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/X64/AsmFuncs.S +++ /dev/null @@ -1,431 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2006 - 2014, 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 -# 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: -# -# AsmFuncs.S -# -# Abstract: -# -# Debug interrupt handle functions. -# -#------------------------------------------------------------------------------ - -#include "DebugException.h" - -ASM_GLOBAL ASM_PFX(InterruptProcess) - -ASM_GLOBAL ASM_PFX(Exception0Handle) -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): .long ASM_PFX(Exception1Handle) - ASM_PFX(Exception0Handle) - - -.text - -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 - mov $32, %rcx - jmp ASM_PFX(CommonEntry) - - -ASM_PFX(CommonEntry): - -#---------------------------------------; -# CommonInterruptEntry ; -#---------------------------------------; -# The follow algorithm is used for the common interrupt routine. - -# -# +---------------------+ <-- 16-byte aligned ensured by processor -# + Old SS + -# +---------------------+ -# + Old RSP + -# +---------------------+ -# + RFlags + -# +---------------------+ -# + CS + -# +---------------------+ -# + RIP + -# +---------------------+ -# + Error Code + -# +---------------------+ -# + RCX / Vector Number + -# +---------------------+ -# + RBP + -# +---------------------+ <-- RBP, 16-byte aligned -# - -# We need to determine if any extra data was pushed by the exception - cmpq $DEBUG_EXCEPT_DOUBLE_FAULT, %rcx - je NoExtrPush - cmpq $DEBUG_EXCEPT_INVALID_TSS, %rcx - je NoExtrPush - cmpq $DEBUG_EXCEPT_SEG_NOT_PRESENT, %rcx - je NoExtrPush - cmpq $DEBUG_EXCEPT_STACK_FAULT, %rcx - je NoExtrPush - cmpq $DEBUG_EXCEPT_GP_FAULT, %rcx - je NoExtrPush - cmpq $DEBUG_EXCEPT_PAGE_FAULT, %rcx - je NoExtrPush - cmpq $DEBUG_EXCEPT_ALIGNMENT_CHECK, %rcx - je NoExtrPush - - pushq (%rsp) - movq $0, 8(%rsp) - -NoExtrPush: - # - # All interrupt handlers are invoked through interrupt gates, so - # IF flag automatically cleared at the entry point - pushq %rbp - movq %rsp, %rbp - - # - # Since here the stack pointer is 16-byte aligned, so - # EFI_FX_SAVE_STATE_X64 of EFI_SYSTEM_CONTEXT_x64 - # is 16-byte aligned - # - -## UINT64 R8, R9, R10, R11, R12, R13, R14, R15; - pushq %r15 - pushq %r14 - pushq %r13 - pushq %r12 - pushq %r11 - pushq %r10 - pushq %r9 - pushq %r8 - - movq %cr8, %r8 - pushq %r8 - -## UINT64 Rdi, Rsi, Rbp, Rsp, Rbx, Rdx, Rcx, Rax; - pushq %rax - pushq %rbx - pushq 8(%rbp) # original rcx - pushq %rdx - pushq 48(%rbp) # original rsp - pushq (%rbp) # original rbp - pushq %rsi - pushq %rdi - -## UINT64 Cr0, Cr1, Cr2, Cr3, Cr4; - movq %cr4, %rax - orq $0x208, %rax - movq %rax, %cr4 - pushq %rax - movq %cr3, %rax - pushq %rax - movq %cr2, %rax - pushq %rax - xorq %rax, %rax - pushq %rax - movq %cr0, %rax - pushq %rax - -## UINT64 Gs, Fs, Es, Ds, Cs, Ss; insure high 16 bits of each is zero - xorq %rax, %rax # set rax to 0 - movzwq 56(%rbp), %rax -# movq %ss, %rax - pushq %rax - movzwq 32(%rbp), %rax -# movq %cs, %rax - pushq %rax - mov %ds, %rax - pushq %rax - mov %es, %rax - pushq %rax - mov %fs, %rax - pushq %rax - mov %gs, %rax - pushq %rax - -## UINT64 Rip; - pushq 24(%rbp) - -## UINT64 Gdtr[2], Idtr[2]; - subq $16, %rsp - sidt (%rsp) - subq $16, %rsp - sgdt (%rsp) - -## UINT64 Ldtr, Tr; - xorq %rax, %rax - strw %ax - pushq %rax - sldtw %ax - pushq %rax - -## UINT64 RFlags; - pushq 40(%rbp) - -## UINT64 Dr0, Dr1, Dr2, Dr3, Dr6, Dr7; - movq %dr7, %rax - pushq %rax -## clear Dr7 while executing debugger itself - xorq %rax, %rax - movq %rax, %dr7 - - movq %dr6, %rax - pushq %rax -## insure all status bits in dr6 are clear... - xorq %rax, %rax - movq %rax, %dr6 - - movq %dr3, %rax - pushq %rax - movq %dr2, %rax - pushq %rax - movq %dr1, %rax - pushq %rax - movq %dr0, %rax - pushq %rax - -## FX_SAVE_STATE_X64 FxSaveState; - subq $512, %rsp - movq %rsp, %rdi - .byte 0x0f, 0xae, 0b00000111 - -## save the exception data; - pushq 16(%rbp) - -## Clear Direction Flag - cld - -## Prepare parameter and call -# movq 8(%rbp), %rcx - movq %rsp, %rdx - movq %rcx, %r15 # save vector in r15 - # - # Per X64 calling convention, allocate maximum parameter stack space - # and make sure RSP is 16-byte aligned - # - subq $(32 + 8), %rsp - call ASM_PFX(InterruptProcess) - addq $(32 + 8), %rsp - -## skip the exception data; - addq $8, %rsp - -## FX_SAVE_STATE_X64 FxSaveState; - - movq %rsp, %rsi - .byte 0x0f, 0xae, 0b00001110 - addq $512, %rsp - -## UINT64 Dr0, Dr1, Dr2, Dr3, Dr6, Dr7; - popq %rax - movq %rax, %dr0 - popq %rax - movq %rax, %dr1 - popq %rax - movq %rax, %dr2 - popq %rax - movq %rax, %dr3 -## skip restore of dr6. We cleared dr6 during the context save. - addq $8, %rsp - popq %rax - movq %rax, %dr7 - -## UINT64 RFlags; - popq 40(%rbp) - -## UINT64 Ldtr, Tr; -## UINT64 Gdtr[2], Idtr[2]; -## Best not let anyone mess with these particular registers... - addq $48, %rsp - -## UINT64 Rip; - popq 24(%rbp) - -## UINT64 Gs, Fs, Es, Ds, Cs, Ss; - popq %rax - # mov gs, rax ; not for gs - popq %rax - # mov fs, rax ; not for fs - # (X64 will not use fs and gs, so we do not restore it) - popq %rax - mov %rax, %es - popq %rax - mov %rax, %ds - popq 32(%rbp) - popq 56(%rbp) - -## UINT64 Cr0, Cr1, Cr2, Cr3, Cr4, Cr8; - popq %rax - movq %rax, %cr0 - addq $8, %rsp - popq %rax - movq %rax, %cr2 - popq %rax - movq %rax, %cr3 - popq %rax - movq %rax, %cr4 - -## UINT64 Rdi, Rsi, Rbp, Rsp, Rbx, Rdx, Rcx, Rax; -## UINT64 R8, R9, R10, R11, R12, R13, R14, R15; - popq %rdi - popq %rsi - addq $8, %rsp - addq $8, %rsp - popq %rdx - popq %rcx - popq %rbx - popq %rax - - popq %r8 - movq %r8, %cr8 - - popq %r8 - popq %r9 - popq %r10 - popq %r11 - popq %r12 - popq %r13 - popq %r14 - popq %r15 - - movq %rbp, %rsp - popq %rbp - addq $16, %rsp - iretq diff --git a/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf b/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf index 38bd18d..b309c18 100644 --- a/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf +++ b/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf @@ -42,14 +42,12 @@ DebugAgentCommon/DebugMp.h [Sources.Ia32] - DebugAgentCommon/Ia32/AsmFuncs.S DebugAgentCommon/Ia32/AsmFuncs.nasm DebugAgentCommon/Ia32/ArchDebugSupport.h DebugAgentCommon/Ia32/ArchDebugSupport.c DebugAgentCommon/Ia32/DebugException.h [Sources.X64] - DebugAgentCommon/X64/AsmFuncs.S DebugAgentCommon/X64/AsmFuncs.nasm DebugAgentCommon/X64/ArchDebugSupport.h DebugAgentCommon/X64/ArchDebugSupport.c -- cgit v1.1