1 #ifndef __LINUX_KBUILD_H 2 # error "Please do not build this file directly, build asm-offsets.c instead" 3 #endif 4 5 #include <asm/ia32.h> 6 7 #define __SYSCALL_64(nr, sym, compat) [nr] = 1, 8 #define __SYSCALL_COMMON(nr, sym, compat) [nr] = 1, 9 #ifdef CONFIG_X86_X32_ABI 10 # define __SYSCALL_X32(nr, sym, compat) [nr] = 1, 11 #else 12 # define __SYSCALL_X32(nr, sym, compat) /* nothing */ 13 #endif 14 static char syscalls_64[] = { 15 #include <asm/syscalls_64.h> 16 }; 17 #define __SYSCALL_I386(nr, sym, compat) [nr] = 1, 18 static char syscalls_ia32[] = { 19 #include <asm/syscalls_32.h> 20 }; 21 22 int main(void) 23 { 24 #ifdef CONFIG_PARAVIRT 25 OFFSET(PV_IRQ_adjust_exception_frame, pv_irq_ops, adjust_exception_frame); 26 OFFSET(PV_CPU_usergs_sysret32, pv_cpu_ops, usergs_sysret32); 27 OFFSET(PV_CPU_usergs_sysret64, pv_cpu_ops, usergs_sysret64); 28 OFFSET(PV_CPU_swapgs, pv_cpu_ops, swapgs); 29 BLANK(); 30 #endif 31 32 #ifdef CONFIG_IA32_EMULATION 33 OFFSET(TI_sysenter_return, thread_info, sysenter_return); 34 BLANK(); 35 36 #define ENTRY(entry) OFFSET(IA32_SIGCONTEXT_ ## entry, sigcontext_ia32, entry) 37 ENTRY(ax); 38 ENTRY(bx); 39 ENTRY(cx); 40 ENTRY(dx); 41 ENTRY(si); 42 ENTRY(di); 43 ENTRY(bp); 44 ENTRY(sp); 45 ENTRY(ip); 46 BLANK(); 47 #undef ENTRY 48 49 OFFSET(IA32_RT_SIGFRAME_sigcontext, rt_sigframe_ia32, uc.uc_mcontext); 50 BLANK(); 51 #endif 52 53 #define ENTRY(entry) OFFSET(pt_regs_ ## entry, pt_regs, entry) 54 ENTRY(bx); 55 ENTRY(cx); 56 ENTRY(dx); 57 ENTRY(sp); 58 ENTRY(bp); 59 ENTRY(si); 60 ENTRY(di); 61 ENTRY(r8); 62 ENTRY(r9); 63 ENTRY(r10); 64 ENTRY(r11); 65 ENTRY(r12); 66 ENTRY(r13); 67 ENTRY(r14); 68 ENTRY(r15); 69 ENTRY(flags); 70 BLANK(); 71 #undef ENTRY 72 73 #define ENTRY(entry) OFFSET(saved_context_ ## entry, saved_context, entry) 74 ENTRY(cr0); 75 ENTRY(cr2); 76 ENTRY(cr3); 77 ENTRY(cr4); 78 ENTRY(cr8); 79 ENTRY(gdt_desc); 80 BLANK(); 81 #undef ENTRY 82 83 OFFSET(TSS_ist, tss_struct, x86_tss.ist); 84 OFFSET(TSS_sp0, tss_struct, x86_tss.sp0); 85 BLANK(); 86 87 DEFINE(__NR_syscall_max, sizeof(syscalls_64) - 1); 88 DEFINE(NR_syscalls, sizeof(syscalls_64)); 89 90 DEFINE(__NR_ia32_syscall_max, sizeof(syscalls_ia32) - 1); 91 DEFINE(IA32_NR_syscalls, sizeof(syscalls_ia32)); 92 93 return 0; 94 } 95