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 14static char syscalls_64[] = { 15#include <asm/syscalls_64.h> 16}; 17#define __SYSCALL_I386(nr, sym, compat) [nr] = 1, 18static char syscalls_ia32[] = { 19#include <asm/syscalls_32.h> 20}; 21 22int 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