mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-26 23:24:03 +02:00
Save/Restore xmm6-xmm15 in function setJump/longJump.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8506 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
6fcb2d910a
commit
9b9641c6d9
@ -101,6 +101,8 @@ typedef struct {
|
|||||||
UINT64 R14;
|
UINT64 R14;
|
||||||
UINT64 R15;
|
UINT64 R15;
|
||||||
UINT64 Rip;
|
UINT64 Rip;
|
||||||
|
UINT64 MxCsr;
|
||||||
|
UINT8 XmmBuffer[160]; ///< XMM6-XMM15
|
||||||
} BASE_LIBRARY_JUMP_BUFFER;
|
} BASE_LIBRARY_JUMP_BUFFER;
|
||||||
|
|
||||||
#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
|
#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
|
||||||
|
@ -39,6 +39,18 @@ InternalLongJump PROC
|
|||||||
mov r13, [rcx + 30h]
|
mov r13, [rcx + 30h]
|
||||||
mov r14, [rcx + 38h]
|
mov r14, [rcx + 38h]
|
||||||
mov r15, [rcx + 40h]
|
mov r15, [rcx + 40h]
|
||||||
|
; load non-volatile fp registers
|
||||||
|
ldmxcsr [rcx + 50h]
|
||||||
|
movdqu xmm6, [rcx + 58h]
|
||||||
|
movdqu xmm7, [rcx + 68h]
|
||||||
|
movdqu xmm8, [rcx + 78h]
|
||||||
|
movdqu xmm9, [rcx + 88h]
|
||||||
|
movdqu xmm10, [rcx + 98h]
|
||||||
|
movdqu xmm11, [rcx + 0A8h]
|
||||||
|
movdqu xmm12, [rcx + 0B8h]
|
||||||
|
movdqu xmm13, [rcx + 0C8h]
|
||||||
|
movdqu xmm14, [rcx + 0D8h]
|
||||||
|
movdqu xmm15, [rcx + 0E8h]
|
||||||
mov rax, rdx ; set return value
|
mov rax, rdx ; set return value
|
||||||
jmp qword ptr [rcx + 48h]
|
jmp qword ptr [rcx + 48h]
|
||||||
InternalLongJump ENDP
|
InternalLongJump ENDP
|
||||||
|
@ -47,6 +47,18 @@ SetJump PROC
|
|||||||
mov [rcx + 38h], r14
|
mov [rcx + 38h], r14
|
||||||
mov [rcx + 40h], r15
|
mov [rcx + 40h], r15
|
||||||
mov [rcx + 48h], rdx
|
mov [rcx + 48h], rdx
|
||||||
|
; save non-volatile fp registers
|
||||||
|
stmxcsr [rcx + 50h]
|
||||||
|
movdqu [rcx + 58h], xmm6
|
||||||
|
movdqu [rcx + 68h], xmm7
|
||||||
|
movdqu [rcx + 78h], xmm8
|
||||||
|
movdqu [rcx + 88h], xmm9
|
||||||
|
movdqu [rcx + 98h], xmm10
|
||||||
|
movdqu [rcx + 0A8h], xmm11
|
||||||
|
movdqu [rcx + 0B8h], xmm12
|
||||||
|
movdqu [rcx + 0C8h], xmm13
|
||||||
|
movdqu [rcx + 0D8h], xmm14
|
||||||
|
movdqu [rcx + 0E8h], xmm15
|
||||||
xor rax, rax
|
xor rax, rax
|
||||||
jmp rdx
|
jmp rdx
|
||||||
SetJump ENDP
|
SetJump ENDP
|
||||||
|
Loading…
x
Reference in New Issue
Block a user