summaryrefslogtreecommitdiffstats
path: root/master/jmm/efi_call_7-bis
diff options
context:
space:
mode:
Diffstat (limited to 'master/jmm/efi_call_7-bis')
-rw-r--r--master/jmm/efi_call_7-bis58
1 files changed, 58 insertions, 0 deletions
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,