x86: use not_pci bitmap #5
[sfrench/cifs-2.6.git] / arch / x86 / kernel / asm-offsets_64.c
index 7e50bda565b4ac09907b07d09ca4e0586d29ce44..494e1e096ee6df0c986aeb14dbc3f8b7a407bb50 100644 (file)
 #include <asm/segment.h>
 #include <asm/thread_info.h>
 #include <asm/ia32.h>
+#include <asm/bootparam.h>
 
 #define DEFINE(sym, val) \
         asm volatile("\n->" #sym " %0 " #val : : "i" (val))
 
 #define BLANK() asm volatile("\n->" : : )
 
+#define OFFSET(sym, str, mem) \
+       DEFINE(sym, offsetof(struct str, mem))
+
 #define __NO_STUBS 1
 #undef __SYSCALL
 #undef _ASM_X86_64_UNISTD_H_
@@ -34,7 +38,6 @@ int main(void)
 #define ENTRY(entry) DEFINE(tsk_ ## entry, offsetof(struct task_struct, entry))
        ENTRY(state);
        ENTRY(flags); 
-       ENTRY(thread); 
        ENTRY(pid);
        BLANK();
 #undef ENTRY
@@ -43,6 +46,9 @@ int main(void)
        ENTRY(addr_limit);
        ENTRY(preempt_count);
        ENTRY(status);
+#ifdef CONFIG_IA32_EMULATION
+       ENTRY(sysenter_return);
+#endif
        BLANK();
 #undef ENTRY
 #define ENTRY(entry) DEFINE(pda_ ## entry, offsetof(struct x8664_pda, entry))
@@ -55,17 +61,31 @@ int main(void)
        ENTRY(data_offset);
        BLANK();
 #undef ENTRY
+#ifdef CONFIG_PARAVIRT
+       BLANK();
+       OFFSET(PARAVIRT_enabled, pv_info, paravirt_enabled);
+       OFFSET(PARAVIRT_PATCH_pv_cpu_ops, paravirt_patch_template, pv_cpu_ops);
+       OFFSET(PARAVIRT_PATCH_pv_irq_ops, paravirt_patch_template, pv_irq_ops);
+       OFFSET(PV_IRQ_irq_disable, pv_irq_ops, irq_disable);
+       OFFSET(PV_IRQ_irq_enable, pv_irq_ops, irq_enable);
+       OFFSET(PV_CPU_iret, pv_cpu_ops, iret);
+       OFFSET(PV_CPU_irq_enable_syscall_ret, pv_cpu_ops, irq_enable_syscall_ret);
+       OFFSET(PV_CPU_swapgs, pv_cpu_ops, swapgs);
+       OFFSET(PV_MMU_read_cr2, pv_mmu_ops, read_cr2);
+#endif
+
+
 #ifdef CONFIG_IA32_EMULATION
 #define ENTRY(entry) DEFINE(IA32_SIGCONTEXT_ ## entry, offsetof(struct sigcontext_ia32, entry))
-       ENTRY(eax);
-       ENTRY(ebx);
-       ENTRY(ecx);
-       ENTRY(edx);
-       ENTRY(esi);
-       ENTRY(edi);
-       ENTRY(ebp);
-       ENTRY(esp);
-       ENTRY(eip);
+       ENTRY(ax);
+       ENTRY(bx);
+       ENTRY(cx);
+       ENTRY(dx);
+       ENTRY(si);
+       ENTRY(di);
+       ENTRY(bp);
+       ENTRY(sp);
+       ENTRY(ip);
        BLANK();
 #undef ENTRY
        DEFINE(IA32_RT_SIGFRAME_sigcontext,
@@ -77,14 +97,14 @@ int main(void)
        DEFINE(pbe_next, offsetof(struct pbe, next));
        BLANK();
 #define ENTRY(entry) DEFINE(pt_regs_ ## entry, offsetof(struct pt_regs, entry))
-       ENTRY(rbx);
-       ENTRY(rbx);
-       ENTRY(rcx);
-       ENTRY(rdx);
-       ENTRY(rsp);
-       ENTRY(rbp);
-       ENTRY(rsi);
-       ENTRY(rdi);
+       ENTRY(bx);
+       ENTRY(bx);
+       ENTRY(cx);
+       ENTRY(dx);
+       ENTRY(sp);
+       ENTRY(bp);
+       ENTRY(si);
+       ENTRY(di);
        ENTRY(r8);
        ENTRY(r9);
        ENTRY(r10);
@@ -93,7 +113,7 @@ int main(void)
        ENTRY(r13);
        ENTRY(r14);
        ENTRY(r15);
-       ENTRY(eflags);
+       ENTRY(flags);
        BLANK();
 #undef ENTRY
 #define ENTRY(entry) DEFINE(saved_context_ ## entry, offsetof(struct saved_context, entry))
@@ -104,10 +124,16 @@ int main(void)
        ENTRY(cr8);
        BLANK();
 #undef ENTRY
-       DEFINE(TSS_ist, offsetof(struct tss_struct, ist));
+       DEFINE(TSS_ist, offsetof(struct tss_struct, x86_tss.ist));
        BLANK();
        DEFINE(crypto_tfm_ctx_offset, offsetof(struct crypto_tfm, __crt_ctx));
        BLANK();
        DEFINE(__NR_syscall_max, sizeof(syscalls) - 1);
+
+       BLANK();
+       OFFSET(BP_scratch, boot_params, scratch);
+       OFFSET(BP_loadflags, boot_params, hdr.loadflags);
+       OFFSET(BP_hardware_subarch, boot_params, hdr.hardware_subarch);
+       OFFSET(BP_version, boot_params, hdr.version);
        return 0;
 }