PageRenderTime 21ms CodeModel.GetById 18ms app.highlight 2ms RepoModel.GetById 0ms app.codeStats 0ms

/arch/x86/kernel/efi_stub_64.S

https://bitbucket.org/thekraven/iscream_thunderc-2.6.35
Assembly | 116 lines | 106 code | 10 blank | 0 comment | 1 complexity | 1eddb5779579189a0c7cb80a3506cd56 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
  1/*
  2 * Function calling ABI conversion from Linux to EFI for x86_64
  3 *
  4 * Copyright (C) 2007 Intel Corp
  5 *	Bibo Mao <bibo.mao@intel.com>
  6 *	Huang Ying <ying.huang@intel.com>
  7 */
  8
  9#include <linux/linkage.h>
 10
 11#define SAVE_XMM			\
 12	mov %rsp, %rax;			\
 13	subq $0x70, %rsp;		\
 14	and $~0xf, %rsp;		\
 15	mov %rax, (%rsp);		\
 16	mov %cr0, %rax;			\
 17	clts;				\
 18	mov %rax, 0x8(%rsp);		\
 19	movaps %xmm0, 0x60(%rsp);	\
 20	movaps %xmm1, 0x50(%rsp);	\
 21	movaps %xmm2, 0x40(%rsp);	\
 22	movaps %xmm3, 0x30(%rsp);	\
 23	movaps %xmm4, 0x20(%rsp);	\
 24	movaps %xmm5, 0x10(%rsp)
 25
 26#define RESTORE_XMM			\
 27	movaps 0x60(%rsp), %xmm0;	\
 28	movaps 0x50(%rsp), %xmm1;	\
 29	movaps 0x40(%rsp), %xmm2;	\
 30	movaps 0x30(%rsp), %xmm3;	\
 31	movaps 0x20(%rsp), %xmm4;	\
 32	movaps 0x10(%rsp), %xmm5;	\
 33	mov 0x8(%rsp), %rsi;		\
 34	mov %rsi, %cr0;			\
 35	mov (%rsp), %rsp
 36
 37ENTRY(efi_call0)
 38	SAVE_XMM
 39	subq $32, %rsp
 40	call *%rdi
 41	addq $32, %rsp
 42	RESTORE_XMM
 43	ret
 44ENDPROC(efi_call0)
 45
 46ENTRY(efi_call1)
 47	SAVE_XMM
 48	subq $32, %rsp
 49	mov  %rsi, %rcx
 50	call *%rdi
 51	addq $32, %rsp
 52	RESTORE_XMM
 53	ret
 54ENDPROC(efi_call1)
 55
 56ENTRY(efi_call2)
 57	SAVE_XMM
 58	subq $32, %rsp
 59	mov  %rsi, %rcx
 60	call *%rdi
 61	addq $32, %rsp
 62	RESTORE_XMM
 63	ret
 64ENDPROC(efi_call2)
 65
 66ENTRY(efi_call3)
 67	SAVE_XMM
 68	subq $32, %rsp
 69	mov  %rcx, %r8
 70	mov  %rsi, %rcx
 71	call *%rdi
 72	addq $32, %rsp
 73	RESTORE_XMM
 74	ret
 75ENDPROC(efi_call3)
 76
 77ENTRY(efi_call4)
 78	SAVE_XMM
 79	subq $32, %rsp
 80	mov %r8, %r9
 81	mov %rcx, %r8
 82	mov %rsi, %rcx
 83	call *%rdi
 84	addq $32, %rsp
 85	RESTORE_XMM
 86	ret
 87ENDPROC(efi_call4)
 88
 89ENTRY(efi_call5)
 90	SAVE_XMM
 91	subq $48, %rsp
 92	mov %r9, 32(%rsp)
 93	mov %r8, %r9
 94	mov %rcx, %r8
 95	mov %rsi, %rcx
 96	call *%rdi
 97	addq $48, %rsp
 98	RESTORE_XMM
 99	ret
100ENDPROC(efi_call5)
101
102ENTRY(efi_call6)
103	SAVE_XMM
104	mov (%rsp), %rax
105	mov 8(%rax), %rax
106	subq $48, %rsp
107	mov %r9, 32(%rsp)
108	mov %rax, 40(%rsp)
109	mov %r8, %r9
110	mov %rcx, %r8
111	mov %rsi, %rcx
112	call *%rdi
113	addq $48, %rsp
114	RESTORE_XMM
115	ret
116ENDPROC(efi_call6)