Path: blob/master/arch/x86/platform/efi/efi_stub_64.S
10820 views
/*1* Function calling ABI conversion from Linux to EFI for x86_642*3* Copyright (C) 2007 Intel Corp4* Bibo Mao <[email protected]>5* Huang Ying <[email protected]>6*/78#include <linux/linkage.h>910#define SAVE_XMM \11mov %rsp, %rax; \12subq $0x70, %rsp; \13and $~0xf, %rsp; \14mov %rax, (%rsp); \15mov %cr0, %rax; \16clts; \17mov %rax, 0x8(%rsp); \18movaps %xmm0, 0x60(%rsp); \19movaps %xmm1, 0x50(%rsp); \20movaps %xmm2, 0x40(%rsp); \21movaps %xmm3, 0x30(%rsp); \22movaps %xmm4, 0x20(%rsp); \23movaps %xmm5, 0x10(%rsp)2425#define RESTORE_XMM \26movaps 0x60(%rsp), %xmm0; \27movaps 0x50(%rsp), %xmm1; \28movaps 0x40(%rsp), %xmm2; \29movaps 0x30(%rsp), %xmm3; \30movaps 0x20(%rsp), %xmm4; \31movaps 0x10(%rsp), %xmm5; \32mov 0x8(%rsp), %rsi; \33mov %rsi, %cr0; \34mov (%rsp), %rsp3536ENTRY(efi_call0)37SAVE_XMM38subq $32, %rsp39call *%rdi40addq $32, %rsp41RESTORE_XMM42ret43ENDPROC(efi_call0)4445ENTRY(efi_call1)46SAVE_XMM47subq $32, %rsp48mov %rsi, %rcx49call *%rdi50addq $32, %rsp51RESTORE_XMM52ret53ENDPROC(efi_call1)5455ENTRY(efi_call2)56SAVE_XMM57subq $32, %rsp58mov %rsi, %rcx59call *%rdi60addq $32, %rsp61RESTORE_XMM62ret63ENDPROC(efi_call2)6465ENTRY(efi_call3)66SAVE_XMM67subq $32, %rsp68mov %rcx, %r869mov %rsi, %rcx70call *%rdi71addq $32, %rsp72RESTORE_XMM73ret74ENDPROC(efi_call3)7576ENTRY(efi_call4)77SAVE_XMM78subq $32, %rsp79mov %r8, %r980mov %rcx, %r881mov %rsi, %rcx82call *%rdi83addq $32, %rsp84RESTORE_XMM85ret86ENDPROC(efi_call4)8788ENTRY(efi_call5)89SAVE_XMM90subq $48, %rsp91mov %r9, 32(%rsp)92mov %r8, %r993mov %rcx, %r894mov %rsi, %rcx95call *%rdi96addq $48, %rsp97RESTORE_XMM98ret99ENDPROC(efi_call5)100101ENTRY(efi_call6)102SAVE_XMM103mov (%rsp), %rax104mov 8(%rax), %rax105subq $48, %rsp106mov %r9, 32(%rsp)107mov %rax, 40(%rsp)108mov %r8, %r9109mov %rcx, %r8110mov %rsi, %rcx111call *%rdi112addq $48, %rsp113RESTORE_XMM114ret115ENDPROC(efi_call6)116117118