]> err.no Git - linux-2.6/blobdiff - include/asm-x86/efi.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/alsa-fix-2.6
[linux-2.6] / include / asm-x86 / efi.h
index 1459d3d586537e053995b4222f29e6359d423850..ea9734b74aca235b33e98a33fbe54a99feeb9fbd 100644 (file)
@@ -2,6 +2,39 @@
 #define _ASM_X86_EFI_H
 
 #ifdef CONFIG_X86_32
+
+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.
+ */
+
+#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)                        ioremap_cache(addr, size)
+
 #else /* !CONFIG_X86_32 */
 
 #define MAX_EFI_IO_PAGES       100
@@ -53,18 +86,12 @@ extern u64 efi_call6(void *fp, u64 arg1, u64 arg2, u64 arg3,
        efi_call6((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
                  (u64)(a3), (u64)(a4), (u64)(a5), (u64)(a6))
 
-#define efi_early_ioremap(addr, size)          early_ioremap(addr, size)
-#define efi_early_iounmap(vaddr, size)         early_iounmap(vaddr, size)
-
-extern void *efi_ioremap(unsigned long offset, unsigned long size);
-
-extern int efi_time;
+extern void *efi_ioremap(unsigned long addr, unsigned long size);
 
 #endif /* CONFIG_X86_32 */
 
 extern void efi_reserve_bootmem(void);
 extern void efi_call_phys_prelog(void);
 extern void efi_call_phys_epilog(void);
-extern void runtime_code_page_mkexec(void);
 
 #endif