mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
SysCall: Restored nonvolatile registers for IA32, X64.
This commit is contained in:
parent
65f3047224
commit
7ad8cac11d
@ -176,10 +176,14 @@ ASM_PFX(CoreBootServices):
|
||||
global ASM_PFX(CallRing3)
|
||||
ASM_PFX(CallRing3):
|
||||
cli
|
||||
; Save nonvolatile registers EBX, EBP, EDI, ESI, ESP.
|
||||
push ebx
|
||||
push ebp
|
||||
push edi
|
||||
push esi
|
||||
|
||||
; Save Core Stack pointers.
|
||||
; Save Core Stack pointer.
|
||||
mov [ASM_PFX(CoreEsp)], esp
|
||||
mov [ASM_PFX(CoreEbp)], ebp
|
||||
|
||||
push dword [ASM_PFX(gRing3EntryPoint)]
|
||||
push dword [ASM_PFX(gRing3CallStackTop)]
|
||||
@ -189,7 +193,7 @@ ASM_PFX(CallRing3):
|
||||
; Prepare SYSEXIT arguments.
|
||||
pop ecx
|
||||
pop edx
|
||||
mov eax, [esp + 4] ; Data
|
||||
mov eax, [esp + 4 * 5] ; Data
|
||||
|
||||
; Switch to User Stack.
|
||||
mov ebp, ecx
|
||||
@ -200,7 +204,10 @@ ASM_PFX(CallRing3):
|
||||
|
||||
coreReturnAddress:
|
||||
mov esp, [ASM_PFX(CoreEsp)]
|
||||
mov ebp, [ASM_PFX(CoreEbp)]
|
||||
pop esi
|
||||
pop edi
|
||||
pop ebp
|
||||
pop ebx
|
||||
|
||||
call ASM_PFX(DisableSMAP)
|
||||
mov eax, [edx + 2 * 4] ; User Argument 1
|
||||
@ -214,6 +221,3 @@ coreReturnAddress:
|
||||
SECTION .data
|
||||
ASM_PFX(CoreEsp):
|
||||
resd 1
|
||||
|
||||
ASM_PFX(CoreEbp):
|
||||
resd 1
|
||||
|
@ -195,10 +195,18 @@ ASM_PFX(CallRing3):
|
||||
pushfq
|
||||
pop r11
|
||||
cli
|
||||
; Save nonvolatile registers RBX, RBP, RDI, RSI, RSP, R12, R13, R14, and R15.
|
||||
push rbx
|
||||
push rbp
|
||||
push rdi
|
||||
push rsi
|
||||
push r12
|
||||
push r13
|
||||
push r14
|
||||
push r15
|
||||
|
||||
; Save Core Stack pointers.
|
||||
; Save Core Stack pointer.
|
||||
mov [ASM_PFX(CoreRsp)], rsp
|
||||
mov [ASM_PFX(CoreRbp)], rbp
|
||||
|
||||
; Save input Arguments.
|
||||
mov r8, [ASM_PFX(gRing3CallStackTop)]
|
||||
@ -220,7 +228,15 @@ o64 sysret
|
||||
|
||||
coreReturnAddress:
|
||||
mov rsp, [ASM_PFX(CoreRsp)]
|
||||
mov rbp, [ASM_PFX(CoreRbp)]
|
||||
pop r15
|
||||
pop r14
|
||||
pop r13
|
||||
pop r12
|
||||
pop rsi
|
||||
pop rdi
|
||||
pop rbp
|
||||
pop rbx
|
||||
|
||||
mov rax, rdx
|
||||
sti
|
||||
ret
|
||||
@ -228,6 +244,3 @@ coreReturnAddress:
|
||||
SECTION .data
|
||||
ASM_PFX(CoreRsp):
|
||||
resq 1
|
||||
|
||||
ASM_PFX(CoreRbp):
|
||||
resq 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user