aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/include/asm/efi.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h
index 0b19187cc882..1eb5f6433ad8 100644
--- a/arch/x86/include/asm/efi.h
+++ b/arch/x86/include/asm/efi.h
@@ -34,10 +34,23 @@ extern unsigned long asmlinkage efi_call_phys(void *, ...);
34 34
35/* Use this macro if your virtual returns a non-void value */ 35/* Use this macro if your virtual returns a non-void value */
36#define efi_call_virt(f, args...) \ 36#define efi_call_virt(f, args...) \
37 ((efi_##f##_t __attribute__((regparm(0)))*)efi.systab->runtime->f)(args) 37({ \
38 efi_status_t __s; \
39 kernel_fpu_begin(); \
40 __s = ((efi_##f##_t __attribute__((regparm(0)))*) \
41 efi.systab->runtime->f)(args); \
42 kernel_fpu_end(); \
43 __s; \
44})
38 45
39/* Use this macro if your virtual call does not return any value */ 46/* Use this macro if your virtual call does not return any value */
40#define __efi_call_virt(f, args...) efi_call_virt(f, args) 47#define __efi_call_virt(f, args...) \
48({ \
49 kernel_fpu_begin(); \
50 ((efi_##f##_t __attribute__((regparm(0)))*) \
51 efi.systab->runtime->f)(args); \
52 kernel_fpu_end(); \
53})
41 54
42#define efi_ioremap(addr, size, type, attr) ioremap_cache(addr, size) 55#define efi_ioremap(addr, size, type, attr) ioremap_cache(addr, size)
43 56