|
@@ -27,16 +27,6 @@
|
|
|
|
|
|
extern unsigned long asmlinkage efi_call_phys(void *, ...);
|
|
|
|
|
|
-#define efi_call_phys0(f) efi_call_phys(f)
|
|
|
-#define efi_call_phys1(f, a1) efi_call_phys(f, a1)
|
|
|
-#define efi_call_phys2(f, a1, a2) efi_call_phys(f, a1, a2)
|
|
|
-#define efi_call_phys3(f, a1, a2, a3) efi_call_phys(f, a1, a2, a3)
|
|
|
-#define efi_call_phys4(f, a1, a2, a3, a4) \
|
|
|
- efi_call_phys(f, a1, a2, a3, a4)
|
|
|
-#define efi_call_phys5(f, a1, a2, a3, a4, a5) \
|
|
|
- efi_call_phys(f, a1, a2, a3, a4, a5)
|
|
|
-#define efi_call_phys6(f, a1, a2, a3, a4, a5, a6) \
|
|
|
- efi_call_phys(f, a1, a2, a3, a4, a5, a6)
|
|
|
/*
|
|
|
* Wrap all the virtual calls in a way that forces the parameters on the stack.
|
|
|
*/
|
|
@@ -44,75 +34,27 @@ extern unsigned long asmlinkage efi_call_phys(void *, ...);
|
|
|
#define efi_call_virt(f, args...) \
|
|
|
((efi_##f##_t __attribute__((regparm(0)))*)efi.systab->runtime->f)(args)
|
|
|
|
|
|
-#define efi_call_virt0(f) efi_call_virt(f)
|
|
|
-#define efi_call_virt1(f, a1) efi_call_virt(f, a1)
|
|
|
-#define efi_call_virt2(f, a1, a2) efi_call_virt(f, a1, a2)
|
|
|
-#define efi_call_virt3(f, a1, a2, a3) efi_call_virt(f, a1, a2, a3)
|
|
|
-#define efi_call_virt4(f, a1, a2, a3, a4) \
|
|
|
- efi_call_virt(f, a1, a2, a3, a4)
|
|
|
-#define efi_call_virt5(f, a1, a2, a3, a4, a5) \
|
|
|
- efi_call_virt(f, a1, a2, a3, a4, a5)
|
|
|
-#define efi_call_virt6(f, a1, a2, a3, a4, a5, a6) \
|
|
|
- efi_call_virt(f, a1, a2, a3, a4, a5, a6)
|
|
|
-
|
|
|
#define efi_ioremap(addr, size, type, attr) ioremap_cache(addr, size)
|
|
|
|
|
|
#else /* !CONFIG_X86_32 */
|
|
|
|
|
|
-extern u64 efi_call0(void *fp);
|
|
|
-extern u64 efi_call1(void *fp, u64 arg1);
|
|
|
-extern u64 efi_call2(void *fp, u64 arg1, u64 arg2);
|
|
|
-extern u64 efi_call3(void *fp, u64 arg1, u64 arg2, u64 arg3);
|
|
|
-extern u64 efi_call4(void *fp, u64 arg1, u64 arg2, u64 arg3, u64 arg4);
|
|
|
-extern u64 efi_call5(void *fp, u64 arg1, u64 arg2, u64 arg3,
|
|
|
- u64 arg4, u64 arg5);
|
|
|
-extern u64 efi_call6(void *fp, u64 arg1, u64 arg2, u64 arg3,
|
|
|
- u64 arg4, u64 arg5, u64 arg6);
|
|
|
-
|
|
|
-#define efi_call_phys0(f) \
|
|
|
- efi_call0((f))
|
|
|
-#define efi_call_phys1(f, a1) \
|
|
|
- efi_call1((f), (u64)(a1))
|
|
|
-#define efi_call_phys2(f, a1, a2) \
|
|
|
- efi_call2((f), (u64)(a1), (u64)(a2))
|
|
|
-#define efi_call_phys3(f, a1, a2, a3) \
|
|
|
- efi_call3((f), (u64)(a1), (u64)(a2), (u64)(a3))
|
|
|
-#define efi_call_phys4(f, a1, a2, a3, a4) \
|
|
|
- efi_call4((f), (u64)(a1), (u64)(a2), (u64)(a3), \
|
|
|
- (u64)(a4))
|
|
|
-#define efi_call_phys5(f, a1, a2, a3, a4, a5) \
|
|
|
- efi_call5((f), (u64)(a1), (u64)(a2), (u64)(a3), \
|
|
|
- (u64)(a4), (u64)(a5))
|
|
|
-#define efi_call_phys6(f, a1, a2, a3, a4, a5, a6) \
|
|
|
- efi_call6((f), (u64)(a1), (u64)(a2), (u64)(a3), \
|
|
|
- (u64)(a4), (u64)(a5), (u64)(a6))
|
|
|
-
|
|
|
-#define _efi_call_virtX(x, f, ...) \
|
|
|
+#define EFI_LOADER_SIGNATURE "EL64"
|
|
|
+
|
|
|
+extern u64 asmlinkage efi_call(void *fp, ...);
|
|
|
+
|
|
|
+#define efi_call_phys(f, args...) efi_call((f), args)
|
|
|
+
|
|
|
+#define efi_call_virt(f, ...) \
|
|
|
({ \
|
|
|
efi_status_t __s; \
|
|
|
\
|
|
|
efi_sync_low_kernel_mappings(); \
|
|
|
preempt_disable(); \
|
|
|
- __s = efi_call##x((void *)efi.systab->runtime->f, __VA_ARGS__); \
|
|
|
+ __s = efi_call((void *)efi.systab->runtime->f, __VA_ARGS__); \
|
|
|
preempt_enable(); \
|
|
|
__s; \
|
|
|
})
|
|
|
|
|
|
-#define efi_call_virt0(f) \
|
|
|
- _efi_call_virtX(0, f)
|
|
|
-#define efi_call_virt1(f, a1) \
|
|
|
- _efi_call_virtX(1, f, (u64)(a1))
|
|
|
-#define efi_call_virt2(f, a1, a2) \
|
|
|
- _efi_call_virtX(2, f, (u64)(a1), (u64)(a2))
|
|
|
-#define efi_call_virt3(f, a1, a2, a3) \
|
|
|
- _efi_call_virtX(3, f, (u64)(a1), (u64)(a2), (u64)(a3))
|
|
|
-#define efi_call_virt4(f, a1, a2, a3, a4) \
|
|
|
- _efi_call_virtX(4, f, (u64)(a1), (u64)(a2), (u64)(a3), (u64)(a4))
|
|
|
-#define efi_call_virt5(f, a1, a2, a3, a4, a5) \
|
|
|
- _efi_call_virtX(5, f, (u64)(a1), (u64)(a2), (u64)(a3), (u64)(a4), (u64)(a5))
|
|
|
-#define efi_call_virt6(f, a1, a2, a3, a4, a5, a6) \
|
|
|
- _efi_call_virtX(6, f, (u64)(a1), (u64)(a2), (u64)(a3), (u64)(a4), (u64)(a5), (u64)(a6))
|
|
|
-
|
|
|
extern void __iomem *efi_ioremap(unsigned long addr, unsigned long size,
|
|
|
u32 type, u64 attribute);
|
|
|
|