2 * Generate definitions needed by assembly language modules.
3 * This code generates raw asm output which is post-processed
4 * to extract and format the required data.
7 #include <linux/crypto.h>
8 #include <linux/sched.h>
9 #include <linux/signal.h>
10 #include <linux/personality.h>
11 #include <linux/suspend.h>
12 #include <asm/ucontext.h>
14 #include <asm/fixmap.h>
15 #include <asm/processor.h>
16 #include <asm/thread_info.h>
20 #define DEFINE(sym, val) \
21 asm volatile("\n->" #sym " %0 " #val : : "i" (val))
23 #define BLANK() asm volatile("\n->" : : )
25 #define OFFSET(sym, str, mem) \
26 DEFINE(sym, offsetof(struct str, mem));
30 OFFSET(SIGCONTEXT_eax
, sigcontext
, eax
);
31 OFFSET(SIGCONTEXT_ebx
, sigcontext
, ebx
);
32 OFFSET(SIGCONTEXT_ecx
, sigcontext
, ecx
);
33 OFFSET(SIGCONTEXT_edx
, sigcontext
, edx
);
34 OFFSET(SIGCONTEXT_esi
, sigcontext
, esi
);
35 OFFSET(SIGCONTEXT_edi
, sigcontext
, edi
);
36 OFFSET(SIGCONTEXT_ebp
, sigcontext
, ebp
);
37 OFFSET(SIGCONTEXT_esp
, sigcontext
, esp
);
38 OFFSET(SIGCONTEXT_eip
, sigcontext
, eip
);
41 OFFSET(CPUINFO_x86
, cpuinfo_x86
, x86
);
42 OFFSET(CPUINFO_x86_vendor
, cpuinfo_x86
, x86_vendor
);
43 OFFSET(CPUINFO_x86_model
, cpuinfo_x86
, x86_model
);
44 OFFSET(CPUINFO_x86_mask
, cpuinfo_x86
, x86_mask
);
45 OFFSET(CPUINFO_hard_math
, cpuinfo_x86
, hard_math
);
46 OFFSET(CPUINFO_cpuid_level
, cpuinfo_x86
, cpuid_level
);
47 OFFSET(CPUINFO_x86_capability
, cpuinfo_x86
, x86_capability
);
48 OFFSET(CPUINFO_x86_vendor_id
, cpuinfo_x86
, x86_vendor_id
);
51 OFFSET(TI_task
, thread_info
, task
);
52 OFFSET(TI_exec_domain
, thread_info
, exec_domain
);
53 OFFSET(TI_flags
, thread_info
, flags
);
54 OFFSET(TI_status
, thread_info
, status
);
55 OFFSET(TI_preempt_count
, thread_info
, preempt_count
);
56 OFFSET(TI_addr_limit
, thread_info
, addr_limit
);
57 OFFSET(TI_restart_block
, thread_info
, restart_block
);
58 OFFSET(TI_sysenter_return
, thread_info
, sysenter_return
);
61 OFFSET(GDS_size
, Xgt_desc_struct
, size
);
62 OFFSET(GDS_address
, Xgt_desc_struct
, address
);
63 OFFSET(GDS_pad
, Xgt_desc_struct
, pad
);
66 OFFSET(PT_EBX
, pt_regs
, ebx
);
67 OFFSET(PT_ECX
, pt_regs
, ecx
);
68 OFFSET(PT_EDX
, pt_regs
, edx
);
69 OFFSET(PT_ESI
, pt_regs
, esi
);
70 OFFSET(PT_EDI
, pt_regs
, edi
);
71 OFFSET(PT_EBP
, pt_regs
, ebp
);
72 OFFSET(PT_EAX
, pt_regs
, eax
);
73 OFFSET(PT_DS
, pt_regs
, xds
);
74 OFFSET(PT_ES
, pt_regs
, xes
);
75 OFFSET(PT_GS
, pt_regs
, xgs
);
76 OFFSET(PT_ORIG_EAX
, pt_regs
, orig_eax
);
77 OFFSET(PT_EIP
, pt_regs
, eip
);
78 OFFSET(PT_CS
, pt_regs
, xcs
);
79 OFFSET(PT_EFLAGS
, pt_regs
, eflags
);
80 OFFSET(PT_OLDESP
, pt_regs
, esp
);
81 OFFSET(PT_OLDSS
, pt_regs
, xss
);
84 OFFSET(EXEC_DOMAIN_handler
, exec_domain
, handler
);
85 OFFSET(RT_SIGFRAME_sigcontext
, rt_sigframe
, uc
.uc_mcontext
);
88 OFFSET(pbe_address
, pbe
, address
);
89 OFFSET(pbe_orig_address
, pbe
, orig_address
);
90 OFFSET(pbe_next
, pbe
, next
);
92 /* Offset from the sysenter stack to tss.esp0 */
93 DEFINE(TSS_sysenter_esp0
, offsetof(struct tss_struct
, esp0
) -
94 sizeof(struct tss_struct
));
96 DEFINE(PAGE_SIZE_asm
, PAGE_SIZE
);
97 DEFINE(VDSO_PRELINK
, VDSO_PRELINK
);
99 OFFSET(crypto_tfm_ctx_offset
, crypto_tfm
, __crt_ctx
);
102 OFFSET(PDA_cpu
, i386_pda
, cpu_number
);
103 OFFSET(PDA_pcurrent
, i386_pda
, pcurrent
);
105 #ifdef CONFIG_PARAVIRT
107 OFFSET(PARAVIRT_enabled
, paravirt_ops
, paravirt_enabled
);
108 OFFSET(PARAVIRT_irq_disable
, paravirt_ops
, irq_disable
);
109 OFFSET(PARAVIRT_irq_enable
, paravirt_ops
, irq_enable
);
110 OFFSET(PARAVIRT_irq_enable_sysexit
, paravirt_ops
, irq_enable_sysexit
);
111 OFFSET(PARAVIRT_iret
, paravirt_ops
, iret
);
112 OFFSET(PARAVIRT_read_cr0
, paravirt_ops
, read_cr0
);