xref: /linux/arch/x86/kernel/asm-offsets_64.c (revision b43ab901d671e3e3cad425ea5e9a3c74e266dcdd)
1 #include <asm/ia32.h>
2 
3 #define __SYSCALL_64(nr, sym, compat) [nr] = 1,
4 static char syscalls_64[] = {
5 #include <asm/syscalls_64.h>
6 };
7 #define __SYSCALL_I386(nr, sym, compat) [nr] = 1,
8 static char syscalls_ia32[] = {
9 #include <asm/syscalls_32.h>
10 };
11 
12 int main(void)
13 {
14 #ifdef CONFIG_PARAVIRT
15 	OFFSET(PV_IRQ_adjust_exception_frame, pv_irq_ops, adjust_exception_frame);
16 	OFFSET(PV_CPU_usergs_sysret32, pv_cpu_ops, usergs_sysret32);
17 	OFFSET(PV_CPU_usergs_sysret64, pv_cpu_ops, usergs_sysret64);
18 	OFFSET(PV_CPU_swapgs, pv_cpu_ops, swapgs);
19 	BLANK();
20 #endif
21 
22 #ifdef CONFIG_IA32_EMULATION
23 	OFFSET(TI_sysenter_return, thread_info, sysenter_return);
24 	BLANK();
25 
26 #define ENTRY(entry) OFFSET(IA32_SIGCONTEXT_ ## entry, sigcontext_ia32, entry)
27 	ENTRY(ax);
28 	ENTRY(bx);
29 	ENTRY(cx);
30 	ENTRY(dx);
31 	ENTRY(si);
32 	ENTRY(di);
33 	ENTRY(bp);
34 	ENTRY(sp);
35 	ENTRY(ip);
36 	BLANK();
37 #undef ENTRY
38 
39 	OFFSET(IA32_RT_SIGFRAME_sigcontext, rt_sigframe_ia32, uc.uc_mcontext);
40 	BLANK();
41 #endif
42 
43 #define ENTRY(entry) OFFSET(pt_regs_ ## entry, pt_regs, entry)
44 	ENTRY(bx);
45 	ENTRY(bx);
46 	ENTRY(cx);
47 	ENTRY(dx);
48 	ENTRY(sp);
49 	ENTRY(bp);
50 	ENTRY(si);
51 	ENTRY(di);
52 	ENTRY(r8);
53 	ENTRY(r9);
54 	ENTRY(r10);
55 	ENTRY(r11);
56 	ENTRY(r12);
57 	ENTRY(r13);
58 	ENTRY(r14);
59 	ENTRY(r15);
60 	ENTRY(flags);
61 	BLANK();
62 #undef ENTRY
63 
64 #define ENTRY(entry) OFFSET(saved_context_ ## entry, saved_context, entry)
65 	ENTRY(cr0);
66 	ENTRY(cr2);
67 	ENTRY(cr3);
68 	ENTRY(cr4);
69 	ENTRY(cr8);
70 	BLANK();
71 #undef ENTRY
72 
73 	OFFSET(TSS_ist, tss_struct, x86_tss.ist);
74 	BLANK();
75 
76 	DEFINE(__NR_syscall_max, sizeof(syscalls_64) - 1);
77 	DEFINE(NR_syscalls, sizeof(syscalls_64));
78 
79 	DEFINE(__NR_ia32_syscall_max, sizeof(syscalls_ia32) - 1);
80 	DEFINE(IA32_NR_syscalls, sizeof(syscalls_ia32));
81 
82 	return 0;
83 }
84