blob: 9fb0a2f8b62a2da72cd1915eb73ea6a5880984a1 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001// SPDX-License-Identifier: GPL-2.0
Jan Beulichb82fef82011-02-09 08:24:34 +00002/*
3 * Generate definitions needed by assembly language modules.
4 * This code generates raw asm output which is post-processed to extract
5 * and format the required data.
6 */
7#define COMPILE_OFFSETS
8
9#include <linux/crypto.h>
10#include <linux/sched.h>
11#include <linux/stddef.h>
12#include <linux/hardirq.h>
13#include <linux/suspend.h>
14#include <linux/kbuild.h>
15#include <asm/processor.h>
16#include <asm/thread_info.h>
17#include <asm/sigframe.h>
18#include <asm/bootparam.h>
19#include <asm/suspend.h>
Peter Zijlstra6fd166a2017-12-04 15:07:59 +010020#include <asm/tlbflush.h>
Jan Beulichb82fef82011-02-09 08:24:34 +000021
22#ifdef CONFIG_XEN
23#include <xen/interface/xen.h>
24#endif
25
Thomas Gleixner8d0d37c2007-10-11 11:12:08 +020026#ifdef CONFIG_X86_32
27# include "asm-offsets_32.c"
28#else
29# include "asm-offsets_64.c"
Rusty Russell6db70162007-07-19 01:49:26 -070030#endif
Jan Beulichb82fef82011-02-09 08:24:34 +000031
Borislav Petkovad3bc252018-12-05 00:34:56 +010032static void __used common(void)
33{
Jan Beulichb82fef82011-02-09 08:24:34 +000034 BLANK();
Brian Gerst01003012016-08-13 12:38:19 -040035 OFFSET(TASK_threadsp, task_struct, thread.sp);
Linus Torvalds050e9ba2018-06-14 12:21:18 +090036#ifdef CONFIG_STACKPROTECTOR
Brian Gerst01003012016-08-13 12:38:19 -040037 OFFSET(TASK_stack_canary, task_struct, stack_canary);
38#endif
39
40 BLANK();
Jan Beulichb82fef82011-02-09 08:24:34 +000041 OFFSET(pbe_address, pbe, address);
42 OFFSET(pbe_orig_address, pbe, orig_address);
43 OFFSET(pbe_next, pbe, next);
44
Brian Gerst4d178f92015-04-12 09:14:45 -040045#if defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION)
46 BLANK();
Ingo Molnar8fcb3462015-09-05 09:32:41 +020047 OFFSET(IA32_SIGCONTEXT_ax, sigcontext_32, ax);
48 OFFSET(IA32_SIGCONTEXT_bx, sigcontext_32, bx);
49 OFFSET(IA32_SIGCONTEXT_cx, sigcontext_32, cx);
50 OFFSET(IA32_SIGCONTEXT_dx, sigcontext_32, dx);
51 OFFSET(IA32_SIGCONTEXT_si, sigcontext_32, si);
52 OFFSET(IA32_SIGCONTEXT_di, sigcontext_32, di);
53 OFFSET(IA32_SIGCONTEXT_bp, sigcontext_32, bp);
54 OFFSET(IA32_SIGCONTEXT_sp, sigcontext_32, sp);
55 OFFSET(IA32_SIGCONTEXT_ip, sigcontext_32, ip);
Brian Gerst4d178f92015-04-12 09:14:45 -040056
57 BLANK();
Brian Gerst4d178f92015-04-12 09:14:45 -040058 OFFSET(IA32_RT_SIGFRAME_sigcontext, rt_sigframe_ia32, uc.uc_mcontext);
59#endif
60
Jan Beulichb82fef82011-02-09 08:24:34 +000061#ifdef CONFIG_XEN
62 BLANK();
63 OFFSET(XEN_vcpu_info_mask, vcpu_info, evtchn_upcall_mask);
64 OFFSET(XEN_vcpu_info_pending, vcpu_info, evtchn_upcall_pending);
Peter Zijlstra55aeddd2019-07-11 13:40:55 +020065 OFFSET(XEN_vcpu_info_arch_cr2, vcpu_info, arch.cr2);
Jan Beulichb82fef82011-02-09 08:24:34 +000066#endif
67
68 BLANK();
69 OFFSET(BP_scratch, boot_params, scratch);
David Howellsde8cb452017-02-06 11:22:43 +000070 OFFSET(BP_secure_boot, boot_params, secure_boot);
Jan Beulichb82fef82011-02-09 08:24:34 +000071 OFFSET(BP_loadflags, boot_params, hdr.loadflags);
72 OFFSET(BP_hardware_subarch, boot_params, hdr.hardware_subarch);
73 OFFSET(BP_version, boot_params, hdr.version);
74 OFFSET(BP_kernel_alignment, boot_params, hdr.kernel_alignment);
Yinghai Lu974f2212016-04-28 17:09:04 -070075 OFFSET(BP_init_size, boot_params, hdr.init_size);
Matt Fleming291f3632011-12-12 21:27:52 +000076 OFFSET(BP_pref_address, boot_params, hdr.pref_address);
Al Viro6783eaa22012-08-02 23:05:11 +040077
78 BLANK();
79 DEFINE(PTREGS_SIZE, sizeof(struct pt_regs));
Andy Lutomirski1a797972017-12-04 15:07:12 +010080
Peter Zijlstra6fd166a2017-12-04 15:07:59 +010081 /* TLB state for the entry code */
82 OFFSET(TLB_STATE_user_pcid_flush_mask, tlb_state, user_pcid_flush_mask);
83
Andy Lutomirski72f5e082017-12-04 15:07:20 +010084 /* Layout info for cpu_entry_area */
Dave Hansen4fe2d8b2017-12-04 17:25:07 -080085 OFFSET(CPU_ENTRY_AREA_entry_stack, cpu_entry_area, entry_stack_page);
86 DEFINE(SIZEOF_entry_stack, sizeof(struct entry_stack));
Joerg Roedel45d7b252018-07-18 11:40:44 +020087 DEFINE(MASK_entry_stack, (~(sizeof(struct entry_stack) - 1)));
Joerg Roedel9e97b732018-07-18 11:40:38 +020088
Andy Lutomirski98f05b52018-09-03 15:59:43 -070089 /* Offset for fields in tss_struct */
Joerg Roedel9e97b732018-07-18 11:40:38 +020090 OFFSET(TSS_sp0, tss_struct, x86_tss.sp0);
91 OFFSET(TSS_sp1, tss_struct, x86_tss.sp1);
Andy Lutomirski98f05b52018-09-03 15:59:43 -070092 OFFSET(TSS_sp2, tss_struct, x86_tss.sp2);
Jan Beulichb82fef82011-02-09 08:24:34 +000093}