1 // SPDX-License-Identifier: GPL-2.0-only
3 * Based on arch/arm/kernel/asm-offsets.c
5 * Copyright (C) 1995-2003 Russell King
6 * 2001-2002 Keith Owens
7 * Copyright (C) 2012 ARM Ltd.
10 #include <linux/arm_sdei.h>
11 #include <linux/sched.h>
13 #include <linux/dma-mapping.h>
14 #include <linux/kvm_host.h>
15 #include <linux/preempt.h>
16 #include <linux/suspend.h>
17 #include <asm/cpufeature.h>
18 #include <asm/fixmap.h>
19 #include <asm/thread_info.h>
20 #include <asm/memory.h>
21 #include <asm/signal32.h>
22 #include <asm/smp_plat.h>
23 #include <asm/suspend.h>
24 #include <linux/kbuild.h>
25 #include <linux/arm-smccc.h>
29 DEFINE(TSK_ACTIVE_MM
, offsetof(struct task_struct
, active_mm
));
31 DEFINE(TSK_TI_FLAGS
, offsetof(struct task_struct
, thread_info
.flags
));
32 DEFINE(TSK_TI_PREEMPT
, offsetof(struct task_struct
, thread_info
.preempt_count
));
33 DEFINE(TSK_TI_ADDR_LIMIT
, offsetof(struct task_struct
, thread_info
.addr_limit
));
34 #ifdef CONFIG_ARM64_SW_TTBR0_PAN
35 DEFINE(TSK_TI_TTBR0
, offsetof(struct task_struct
, thread_info
.ttbr0
));
37 DEFINE(TSK_STACK
, offsetof(struct task_struct
, stack
));
38 #ifdef CONFIG_STACKPROTECTOR
39 DEFINE(TSK_STACK_CANARY
, offsetof(struct task_struct
, stack_canary
));
42 DEFINE(THREAD_CPU_CONTEXT
, offsetof(struct task_struct
, thread
.cpu_context
));
44 DEFINE(S_X0
, offsetof(struct pt_regs
, regs
[0]));
45 DEFINE(S_X2
, offsetof(struct pt_regs
, regs
[2]));
46 DEFINE(S_X4
, offsetof(struct pt_regs
, regs
[4]));
47 DEFINE(S_X6
, offsetof(struct pt_regs
, regs
[6]));
48 DEFINE(S_X8
, offsetof(struct pt_regs
, regs
[8]));
49 DEFINE(S_X10
, offsetof(struct pt_regs
, regs
[10]));
50 DEFINE(S_X12
, offsetof(struct pt_regs
, regs
[12]));
51 DEFINE(S_X14
, offsetof(struct pt_regs
, regs
[14]));
52 DEFINE(S_X16
, offsetof(struct pt_regs
, regs
[16]));
53 DEFINE(S_X18
, offsetof(struct pt_regs
, regs
[18]));
54 DEFINE(S_X20
, offsetof(struct pt_regs
, regs
[20]));
55 DEFINE(S_X22
, offsetof(struct pt_regs
, regs
[22]));
56 DEFINE(S_X24
, offsetof(struct pt_regs
, regs
[24]));
57 DEFINE(S_X26
, offsetof(struct pt_regs
, regs
[26]));
58 DEFINE(S_X28
, offsetof(struct pt_regs
, regs
[28]));
59 DEFINE(S_FP
, offsetof(struct pt_regs
, regs
[29]));
60 DEFINE(S_LR
, offsetof(struct pt_regs
, regs
[30]));
61 DEFINE(S_SP
, offsetof(struct pt_regs
, sp
));
62 DEFINE(S_PSTATE
, offsetof(struct pt_regs
, pstate
));
63 DEFINE(S_PC
, offsetof(struct pt_regs
, pc
));
64 DEFINE(S_SYSCALLNO
, offsetof(struct pt_regs
, syscallno
));
65 DEFINE(S_ORIG_ADDR_LIMIT
, offsetof(struct pt_regs
, orig_addr_limit
));
66 DEFINE(S_PMR_SAVE
, offsetof(struct pt_regs
, pmr_save
));
67 DEFINE(S_STACKFRAME
, offsetof(struct pt_regs
, stackframe
));
68 DEFINE(S_FRAME_SIZE
, sizeof(struct pt_regs
));
71 DEFINE(COMPAT_SIGFRAME_REGS_OFFSET
, offsetof(struct compat_sigframe
, uc
.uc_mcontext
.arm_r0
));
72 DEFINE(COMPAT_RT_SIGFRAME_REGS_OFFSET
, offsetof(struct compat_rt_sigframe
, sig
.uc
.uc_mcontext
.arm_r0
));
75 DEFINE(MM_CONTEXT_ID
, offsetof(struct mm_struct
, context
.id
.counter
));
77 DEFINE(VMA_VM_MM
, offsetof(struct vm_area_struct
, vm_mm
));
78 DEFINE(VMA_VM_FLAGS
, offsetof(struct vm_area_struct
, vm_flags
));
80 DEFINE(VM_EXEC
, VM_EXEC
);
82 DEFINE(PAGE_SZ
, PAGE_SIZE
);
84 DEFINE(DMA_TO_DEVICE
, DMA_TO_DEVICE
);
85 DEFINE(DMA_FROM_DEVICE
, DMA_FROM_DEVICE
);
87 DEFINE(PREEMPT_DISABLE_OFFSET
, PREEMPT_DISABLE_OFFSET
);
89 DEFINE(CPU_BOOT_STACK
, offsetof(struct secondary_data
, stack
));
90 DEFINE(CPU_BOOT_TASK
, offsetof(struct secondary_data
, task
));
92 #ifdef CONFIG_KVM_ARM_HOST
93 DEFINE(VCPU_CONTEXT
, offsetof(struct kvm_vcpu
, arch
.ctxt
));
94 DEFINE(VCPU_FAULT_DISR
, offsetof(struct kvm_vcpu
, arch
.fault
.disr_el1
));
95 DEFINE(VCPU_WORKAROUND_FLAGS
, offsetof(struct kvm_vcpu
, arch
.workaround_flags
));
96 DEFINE(VCPU_HCR_EL2
, offsetof(struct kvm_vcpu
, arch
.hcr_el2
));
97 DEFINE(CPU_GP_REGS
, offsetof(struct kvm_cpu_context
, gp_regs
));
98 DEFINE(CPU_APIAKEYLO_EL1
, offsetof(struct kvm_cpu_context
, sys_regs
[APIAKEYLO_EL1
]));
99 DEFINE(CPU_APIBKEYLO_EL1
, offsetof(struct kvm_cpu_context
, sys_regs
[APIBKEYLO_EL1
]));
100 DEFINE(CPU_APDAKEYLO_EL1
, offsetof(struct kvm_cpu_context
, sys_regs
[APDAKEYLO_EL1
]));
101 DEFINE(CPU_APDBKEYLO_EL1
, offsetof(struct kvm_cpu_context
, sys_regs
[APDBKEYLO_EL1
]));
102 DEFINE(CPU_APGAKEYLO_EL1
, offsetof(struct kvm_cpu_context
, sys_regs
[APGAKEYLO_EL1
]));
103 DEFINE(CPU_USER_PT_REGS
, offsetof(struct kvm_regs
, regs
));
104 DEFINE(HOST_CONTEXT_VCPU
, offsetof(struct kvm_cpu_context
, __hyp_running_vcpu
));
105 DEFINE(HOST_DATA_CONTEXT
, offsetof(struct kvm_host_data
, host_ctxt
));
108 DEFINE(CPU_CTX_SP
, offsetof(struct cpu_suspend_ctx
, sp
));
109 DEFINE(MPIDR_HASH_MASK
, offsetof(struct mpidr_hash
, mask
));
110 DEFINE(MPIDR_HASH_SHIFTS
, offsetof(struct mpidr_hash
, shift_aff
));
111 DEFINE(SLEEP_STACK_DATA_SYSTEM_REGS
, offsetof(struct sleep_stack_data
, system_regs
));
112 DEFINE(SLEEP_STACK_DATA_CALLEE_REGS
, offsetof(struct sleep_stack_data
, callee_saved_regs
));
114 DEFINE(ARM_SMCCC_RES_X0_OFFS
, offsetof(struct arm_smccc_res
, a0
));
115 DEFINE(ARM_SMCCC_RES_X2_OFFS
, offsetof(struct arm_smccc_res
, a2
));
116 DEFINE(ARM_SMCCC_QUIRK_ID_OFFS
, offsetof(struct arm_smccc_quirk
, id
));
117 DEFINE(ARM_SMCCC_QUIRK_STATE_OFFS
, offsetof(struct arm_smccc_quirk
, state
));
119 DEFINE(HIBERN_PBE_ORIG
, offsetof(struct pbe
, orig_address
));
120 DEFINE(HIBERN_PBE_ADDR
, offsetof(struct pbe
, address
));
121 DEFINE(HIBERN_PBE_NEXT
, offsetof(struct pbe
, next
));
122 DEFINE(ARM64_FTR_SYSVAL
, offsetof(struct arm64_ftr_reg
, sys_val
));
124 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0
125 DEFINE(TRAMP_VALIAS
, TRAMP_VALIAS
);
127 #ifdef CONFIG_ARM_SDE_INTERFACE
128 DEFINE(SDEI_EVENT_INTREGS
, offsetof(struct sdei_registered_event
, interrupted_regs
));
129 DEFINE(SDEI_EVENT_PRIORITY
, offsetof(struct sdei_registered_event
, priority
));