From d68f2690a91e97cc6cf977876f4b013438d09dd3 Mon Sep 17 00:00:00 2001 From: James Date: Fri, 16 Nov 2012 20:03:50 +0000 Subject: fish --- master/jmm/efi_call_7-bis | 58 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 master/jmm/efi_call_7-bis (limited to 'master/jmm/efi_call_7-bis') diff --git a/master/jmm/efi_call_7-bis b/master/jmm/efi_call_7-bis new file mode 100644 index 0000000..e41e0a3 --- /dev/null +++ b/master/jmm/efi_call_7-bis @@ -0,0 +1,58 @@ +diff --git a/grub-core/kern/x86_64/efi/callwrap.S b/grub-core/kern/x86_64/efi/callwrap.S +index aae2678..36df0a6 100644 +--- a/grub-core/kern/x86_64/efi/callwrap.S ++++ b/grub-core/kern/x86_64/efi/callwrap.S +@@ -95,6 +95,20 @@ FUNCTION(efi_wrap_6) + addq $64, %rsp + ret + ++FUNCTION(efi_wrap_7) ++ subq $68, %rsp ++ mov 68+16(%rsp), %rax ++ mov %rax, 48(%rsp) ++ mov 68+8(%rsp), %rax ++ mov %rax, 40(%rsp) ++ mov %r9, 32(%rsp) ++ mov %r8, %r9 ++ mov %rcx, %r8 ++ mov %rsi, %rcx ++ call *%rdi ++ addq $68, %rsp ++ ret ++ + FUNCTION(efi_wrap_10) + subq $96, %rsp + mov 96+40(%rsp), %rax +diff --git a/include/grub/efi/api.h b/include/grub/efi/api.h +index cb6b111..6c17bdb 100644 +--- a/include/grub/efi/api.h ++++ b/include/grub/efi/api.h +@@ -1243,6 +1243,7 @@ typedef struct grub_efi_block_io grub_efi_block_io_t; + #define efi_call_4(func, a, b, c, d) func(a, b, c, d) + #define efi_call_5(func, a, b, c, d, e) func(a, b, c, d, e) + #define efi_call_6(func, a, b, c, d, e, f) func(a, b, c, d, e, f) ++#define efi_call_7(func, a, b, c, d, e, f, g) func(a, b, c, d, e, f, g) + #define efi_call_10(func, a, b, c, d, e, f, g, h, i, j) func(a, b, c, d, e, f, g, h, i, j) + + #else +@@ -1264,6 +1265,9 @@ typedef struct grub_efi_block_io grub_efi_block_io_t; + #define efi_call_6(func, a, b, c, d, e, f) \ + efi_wrap_6(func, (grub_uint64_t) a, (grub_uint64_t) b, (grub_uint64_t) c, \ + (grub_uint64_t) d, (grub_uint64_t) e, (grub_uint64_t) f) ++#define efi_call_7(func, a, b, c, d, e, f, g) \ ++ efi_wrap_7(func, (grub_uint64_t) a, (grub_uint64_t) b, (grub_uint64_t) c, \ ++ (grub_uint64_t) d, (grub_uint64_t) e, (grub_uint64_t) f, (grub_uint64_t) g) + #define efi_call_10(func, a, b, c, d, e, f, g, h, i, j) \ + efi_wrap_10(func, (grub_uint64_t) a, (grub_uint64_t) b, (grub_uint64_t) c, \ + (grub_uint64_t) d, (grub_uint64_t) e, (grub_uint64_t) f, (grub_uint64_t) g, \ +@@ -1285,6 +1289,10 @@ grub_uint64_t EXPORT_FUNC(efi_wrap_6) (void *func, grub_uint64_t arg1, + grub_uint64_t arg2, grub_uint64_t arg3, + grub_uint64_t arg4, grub_uint64_t arg5, + grub_uint64_t arg6); ++grub_uint64_t EXPORT_FUNC(efi_wrap_7) (void *func, grub_uint64_t arg1, ++ grub_uint64_t arg2, grub_uint64_t arg3, ++ grub_uint64_t arg4, grub_uint64_t arg5, ++ grub_uint64_t arg6, grub_uint64_t arg7); + grub_uint64_t EXPORT_FUNC(efi_wrap_10) (void *func, grub_uint64_t arg1, + grub_uint64_t arg2, grub_uint64_t arg3, + grub_uint64_t arg4, grub_uint64_t arg5, -- cgit v1.2.3