xref: /openbmc/linux/arch/x86/kernel/asm-offsets_64.c (revision 623e9ef6)
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, qual) [nr] = 1,
8 static char syscalls_64[] = {
9 #include <asm/syscalls_64.h>
10 };
11 #define __SYSCALL_I386(nr, sym, qual) [nr] = 1,
12 static char syscalls_ia32[] = {
13 #include <asm/syscalls_32.h>
14 };
15 
16 int main(void)
17 {
18 #ifdef CONFIG_PARAVIRT
19 	OFFSET(PV_IRQ_adjust_exception_frame, pv_irq_ops, adjust_exception_frame);
20 	OFFSET(PV_CPU_usergs_sysret64, pv_cpu_ops, usergs_sysret64);
21 	OFFSET(PV_CPU_swapgs, pv_cpu_ops, swapgs);
22 	BLANK();
23 #endif
24 
25 #define ENTRY(entry) OFFSET(pt_regs_ ## entry, pt_regs, entry)
26 	ENTRY(bx);
27 	ENTRY(cx);
28 	ENTRY(dx);
29 	ENTRY(sp);
30 	ENTRY(bp);
31 	ENTRY(si);
32 	ENTRY(di);
33 	ENTRY(r8);
34 	ENTRY(r9);
35 	ENTRY(r10);
36 	ENTRY(r11);
37 	ENTRY(r12);
38 	ENTRY(r13);
39 	ENTRY(r14);
40 	ENTRY(r15);
41 	ENTRY(flags);
42 	BLANK();
43 #undef ENTRY
44 
45 #define ENTRY(entry) OFFSET(saved_context_ ## entry, saved_context, entry)
46 	ENTRY(cr0);
47 	ENTRY(cr2);
48 	ENTRY(cr3);
49 	ENTRY(cr4);
50 	ENTRY(cr8);
51 	ENTRY(gdt_desc);
52 	BLANK();
53 #undef ENTRY
54 
55 	OFFSET(TSS_ist, tss_struct, x86_tss.ist);
56 	OFFSET(TSS_sp0, tss_struct, x86_tss.sp0);
57 	BLANK();
58 
59 	DEFINE(__NR_syscall_max, sizeof(syscalls_64) - 1);
60 	DEFINE(NR_syscalls, sizeof(syscalls_64));
61 
62 	DEFINE(__NR_syscall_compat_max, sizeof(syscalls_ia32) - 1);
63 	DEFINE(IA32_NR_syscalls, sizeof(syscalls_ia32));
64 
65 	return 0;
66 }
67