1 // SPDX-License-Identifier: GPL-2.0 2 #ifndef __LINUX_KBUILD_H 3 # error "Please do not build this file directly, build asm-offsets.c instead" 4 #endif 5 6 #include <asm/ia32.h> 7 8 #define __SYSCALL_64(nr, sym, qual) [nr] = 1, 9 #define __SYSCALL_X32(nr, sym, qual) 10 static char syscalls_64[] = { 11 #include <asm/syscalls_64.h> 12 }; 13 #undef __SYSCALL_64 14 #undef __SYSCALL_X32 15 16 #ifdef CONFIG_X86_X32_ABI 17 #define __SYSCALL_64(nr, sym, qual) 18 #define __SYSCALL_X32(nr, sym, qual) [nr] = 1, 19 static char syscalls_x32[] = { 20 #include <asm/syscalls_64.h> 21 }; 22 #undef __SYSCALL_64 23 #undef __SYSCALL_X32 24 #endif 25 26 #define __SYSCALL_I386(nr, sym, qual) [nr] = 1, 27 static char syscalls_ia32[] = { 28 #include <asm/syscalls_32.h> 29 }; 30 #undef __SYSCALL_I386 31 32 #if defined(CONFIG_KVM_GUEST) && defined(CONFIG_PARAVIRT_SPINLOCKS) 33 #include <asm/kvm_para.h> 34 #endif 35 36 int main(void) 37 { 38 #ifdef CONFIG_PARAVIRT 39 #ifdef CONFIG_PARAVIRT_XXL 40 OFFSET(PV_CPU_usergs_sysret64, paravirt_patch_template, 41 cpu.usergs_sysret64); 42 OFFSET(PV_CPU_swapgs, paravirt_patch_template, cpu.swapgs); 43 #ifdef CONFIG_DEBUG_ENTRY 44 OFFSET(PV_IRQ_save_fl, paravirt_patch_template, irq.save_fl); 45 #endif 46 #endif 47 BLANK(); 48 #endif 49 50 #if defined(CONFIG_KVM_GUEST) && defined(CONFIG_PARAVIRT_SPINLOCKS) 51 OFFSET(KVM_STEAL_TIME_preempted, kvm_steal_time, preempted); 52 BLANK(); 53 #endif 54 55 #define ENTRY(entry) OFFSET(pt_regs_ ## entry, pt_regs, entry) 56 ENTRY(bx); 57 ENTRY(cx); 58 ENTRY(dx); 59 ENTRY(sp); 60 ENTRY(bp); 61 ENTRY(si); 62 ENTRY(di); 63 ENTRY(r8); 64 ENTRY(r9); 65 ENTRY(r10); 66 ENTRY(r11); 67 ENTRY(r12); 68 ENTRY(r13); 69 ENTRY(r14); 70 ENTRY(r15); 71 ENTRY(flags); 72 BLANK(); 73 #undef ENTRY 74 75 #define ENTRY(entry) OFFSET(saved_context_ ## entry, saved_context, entry) 76 ENTRY(cr0); 77 ENTRY(cr2); 78 ENTRY(cr3); 79 ENTRY(cr4); 80 ENTRY(gdt_desc); 81 BLANK(); 82 #undef ENTRY 83 84 OFFSET(TSS_ist, tss_struct, x86_tss.ist); 85 DEFINE(DB_STACK_OFFSET, offsetof(struct cea_exception_stacks, DB_stack) - 86 offsetof(struct cea_exception_stacks, DB1_stack)); 87 BLANK(); 88 89 #ifdef CONFIG_STACKPROTECTOR 90 DEFINE(stack_canary_offset, offsetof(struct fixed_percpu_data, stack_canary)); 91 BLANK(); 92 #endif 93 94 DEFINE(__NR_syscall_max, sizeof(syscalls_64) - 1); 95 DEFINE(NR_syscalls, sizeof(syscalls_64)); 96 97 #ifdef CONFIG_X86_X32_ABI 98 DEFINE(__NR_syscall_x32_max, sizeof(syscalls_x32) - 1); 99 DEFINE(X32_NR_syscalls, sizeof(syscalls_x32)); 100 #endif 101 102 DEFINE(__NR_syscall_compat_max, sizeof(syscalls_ia32) - 1); 103 DEFINE(IA32_NR_syscalls, sizeof(syscalls_ia32)); 104 105 return 0; 106 } 107