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 #define ENTRY(entry) OFFSET(pt_regs_ ## entry, pt_regs, entry) 33 ENTRY(bx); 34 ENTRY(cx); 35 ENTRY(dx); 36 ENTRY(sp); 37 ENTRY(bp); 38 ENTRY(si); 39 ENTRY(di); 40 ENTRY(r8); 41 ENTRY(r9); 42 ENTRY(r10); 43 ENTRY(r11); 44 ENTRY(r12); 45 ENTRY(r13); 46 ENTRY(r14); 47 ENTRY(r15); 48 ENTRY(flags); 49 BLANK(); 50 #undef ENTRY 51 52 #define ENTRY(entry) OFFSET(saved_context_ ## entry, saved_context, entry) 53 ENTRY(cr0); 54 ENTRY(cr2); 55 ENTRY(cr3); 56 ENTRY(cr4); 57 ENTRY(cr8); 58 ENTRY(gdt_desc); 59 BLANK(); 60 #undef ENTRY 61 62 OFFSET(TSS_ist, tss_struct, x86_tss.ist); 63 OFFSET(TSS_sp0, tss_struct, x86_tss.sp0); 64 BLANK(); 65 66 DEFINE(__NR_syscall_max, sizeof(syscalls_64) - 1); 67 DEFINE(NR_syscalls, sizeof(syscalls_64)); 68 69 DEFINE(__NR_syscall_compat_max, sizeof(syscalls_ia32) - 1); 70 DEFINE(IA32_NR_syscalls, sizeof(syscalls_ia32)); 71 72 return 0; 73 } 74