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#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