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 #ifdef CONFIG_ARM64_SW_TTBR0_PAN
34 DEFINE(TSK_TI_TTBR0
, offsetof(struct task_struct
, thread_info
.ttbr0
));
36 #ifdef CONFIG_SHADOW_CALL_STACK
37 DEFINE(TSK_TI_SCS_BASE
, offsetof(struct task_struct
, thread_info
.scs_base
));
38 DEFINE(TSK_TI_SCS_SP
, offsetof(struct task_struct
, thread_info
.scs_sp
));
40 DEFINE(TSK_STACK
, offsetof(struct task_struct
, stack
));
41 #ifdef CONFIG_STACKPROTECTOR
42 DEFINE(TSK_STACK_CANARY
, offsetof(struct task_struct
, stack_canary
));
45 DEFINE(THREAD_CPU_CONTEXT
, offsetof(struct task_struct
, thread
.cpu_context
));
46 #ifdef CONFIG_ARM64_PTR_AUTH
47 DEFINE(THREAD_KEYS_USER
, offsetof(struct task_struct
, thread
.keys_user
));
48 DEFINE(THREAD_KEYS_KERNEL
, offsetof(struct task_struct
, thread
.keys_kernel
));
50 #ifdef CONFIG_ARM64_MTE
51 DEFINE(THREAD_GCR_EL1_USER
, offsetof(struct task_struct
, thread
.gcr_user_excl
));
54 DEFINE(S_X0
, offsetof(struct pt_regs
, regs
[0]));
55 DEFINE(S_X2
, offsetof(struct pt_regs
, regs
[2]));
56 DEFINE(S_X4
, offsetof(struct pt_regs
, regs
[4]));
57 DEFINE(S_X6
, offsetof(struct pt_regs
, regs
[6]));
58 DEFINE(S_X8
, offsetof(struct pt_regs
, regs
[8]));
59 DEFINE(S_X10
, offsetof(struct pt_regs
, regs
[10]));
60 DEFINE(S_X12
, offsetof(struct pt_regs
, regs
[12]));
61 DEFINE(S_X14
, offsetof(struct pt_regs
, regs
[14]));
62 DEFINE(S_X16
, offsetof(struct pt_regs
, regs
[16]));
63 DEFINE(S_X18
, offsetof(struct pt_regs
, regs
[18]));
64 DEFINE(S_X20
, offsetof(struct pt_regs
, regs
[20]));
65 DEFINE(S_X22
, offsetof(struct pt_regs
, regs
[22]));
66 DEFINE(S_X24
, offsetof(struct pt_regs
, regs
[24]));
67 DEFINE(S_X26
, offsetof(struct pt_regs
, regs
[26]));
68 DEFINE(S_X28
, offsetof(struct pt_regs
, regs
[28]));
69 DEFINE(S_FP
, offsetof(struct pt_regs
, regs
[29]));
70 DEFINE(S_LR
, offsetof(struct pt_regs
, regs
[30]));
71 DEFINE(S_SP
, offsetof(struct pt_regs
, sp
));
72 DEFINE(S_PSTATE
, offsetof(struct pt_regs
, pstate
));
73 DEFINE(S_PC
, offsetof(struct pt_regs
, pc
));
74 DEFINE(S_SYSCALLNO
, offsetof(struct pt_regs
, syscallno
));
75 DEFINE(S_SDEI_TTBR1
, offsetof(struct pt_regs
, sdei_ttbr1
));
76 DEFINE(S_PMR_SAVE
, offsetof(struct pt_regs
, pmr_save
));
77 DEFINE(S_STACKFRAME
, offsetof(struct pt_regs
, stackframe
));
78 DEFINE(S_FRAME_SIZE
, sizeof(struct pt_regs
));
81 DEFINE(COMPAT_SIGFRAME_REGS_OFFSET
, offsetof(struct compat_sigframe
, uc
.uc_mcontext
.arm_r0
));
82 DEFINE(COMPAT_RT_SIGFRAME_REGS_OFFSET
, offsetof(struct compat_rt_sigframe
, sig
.uc
.uc_mcontext
.arm_r0
));
85 DEFINE(MM_CONTEXT_ID
, offsetof(struct mm_struct
, context
.id
.counter
));
87 DEFINE(VMA_VM_MM
, offsetof(struct vm_area_struct
, vm_mm
));
88 DEFINE(VMA_VM_FLAGS
, offsetof(struct vm_area_struct
, vm_flags
));
90 DEFINE(VM_EXEC
, VM_EXEC
);
92 DEFINE(PAGE_SZ
, PAGE_SIZE
);
94 DEFINE(DMA_TO_DEVICE
, DMA_TO_DEVICE
);
95 DEFINE(DMA_FROM_DEVICE
, DMA_FROM_DEVICE
);
97 DEFINE(PREEMPT_DISABLE_OFFSET
, PREEMPT_DISABLE_OFFSET
);
99 DEFINE(CPU_BOOT_STACK
, offsetof(struct secondary_data
, stack
));
100 DEFINE(CPU_BOOT_TASK
, offsetof(struct secondary_data
, task
));
103 DEFINE(VCPU_CONTEXT
, offsetof(struct kvm_vcpu
, arch
.ctxt
));
104 DEFINE(VCPU_FAULT_DISR
, offsetof(struct kvm_vcpu
, arch
.fault
.disr_el1
));
105 DEFINE(VCPU_WORKAROUND_FLAGS
, offsetof(struct kvm_vcpu
, arch
.workaround_flags
));
106 DEFINE(VCPU_HCR_EL2
, offsetof(struct kvm_vcpu
, arch
.hcr_el2
));
107 DEFINE(CPU_USER_PT_REGS
, offsetof(struct kvm_cpu_context
, regs
));
108 DEFINE(CPU_APIAKEYLO_EL1
, offsetof(struct kvm_cpu_context
, sys_regs
[APIAKEYLO_EL1
]));
109 DEFINE(CPU_APIBKEYLO_EL1
, offsetof(struct kvm_cpu_context
, sys_regs
[APIBKEYLO_EL1
]));
110 DEFINE(CPU_APDAKEYLO_EL1
, offsetof(struct kvm_cpu_context
, sys_regs
[APDAKEYLO_EL1
]));
111 DEFINE(CPU_APDBKEYLO_EL1
, offsetof(struct kvm_cpu_context
, sys_regs
[APDBKEYLO_EL1
]));
112 DEFINE(CPU_APGAKEYLO_EL1
, offsetof(struct kvm_cpu_context
, sys_regs
[APGAKEYLO_EL1
]));
113 DEFINE(HOST_CONTEXT_VCPU
, offsetof(struct kvm_cpu_context
, __hyp_running_vcpu
));
114 DEFINE(HOST_DATA_CONTEXT
, offsetof(struct kvm_host_data
, host_ctxt
));
115 DEFINE(NVHE_INIT_MAIR_EL2
, offsetof(struct kvm_nvhe_init_params
, mair_el2
));
116 DEFINE(NVHE_INIT_TCR_EL2
, offsetof(struct kvm_nvhe_init_params
, tcr_el2
));
117 DEFINE(NVHE_INIT_TPIDR_EL2
, offsetof(struct kvm_nvhe_init_params
, tpidr_el2
));
118 DEFINE(NVHE_INIT_STACK_HYP_VA
, offsetof(struct kvm_nvhe_init_params
, stack_hyp_va
));
119 DEFINE(NVHE_INIT_PGD_PA
, offsetof(struct kvm_nvhe_init_params
, pgd_pa
));
122 DEFINE(CPU_CTX_SP
, offsetof(struct cpu_suspend_ctx
, sp
));
123 DEFINE(MPIDR_HASH_MASK
, offsetof(struct mpidr_hash
, mask
));
124 DEFINE(MPIDR_HASH_SHIFTS
, offsetof(struct mpidr_hash
, shift_aff
));
125 DEFINE(SLEEP_STACK_DATA_SYSTEM_REGS
, offsetof(struct sleep_stack_data
, system_regs
));
126 DEFINE(SLEEP_STACK_DATA_CALLEE_REGS
, offsetof(struct sleep_stack_data
, callee_saved_regs
));
128 DEFINE(ARM_SMCCC_RES_X0_OFFS
, offsetof(struct arm_smccc_res
, a0
));
129 DEFINE(ARM_SMCCC_RES_X2_OFFS
, offsetof(struct arm_smccc_res
, a2
));
130 DEFINE(ARM_SMCCC_QUIRK_ID_OFFS
, offsetof(struct arm_smccc_quirk
, id
));
131 DEFINE(ARM_SMCCC_QUIRK_STATE_OFFS
, offsetof(struct arm_smccc_quirk
, state
));
133 DEFINE(HIBERN_PBE_ORIG
, offsetof(struct pbe
, orig_address
));
134 DEFINE(HIBERN_PBE_ADDR
, offsetof(struct pbe
, address
));
135 DEFINE(HIBERN_PBE_NEXT
, offsetof(struct pbe
, next
));
136 DEFINE(ARM64_FTR_SYSVAL
, offsetof(struct arm64_ftr_reg
, sys_val
));
138 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0
139 DEFINE(TRAMP_VALIAS
, TRAMP_VALIAS
);
141 #ifdef CONFIG_ARM_SDE_INTERFACE
142 DEFINE(SDEI_EVENT_INTREGS
, offsetof(struct sdei_registered_event
, interrupted_regs
));
143 DEFINE(SDEI_EVENT_PRIORITY
, offsetof(struct sdei_registered_event
, priority
));
145 #ifdef CONFIG_ARM64_PTR_AUTH
146 DEFINE(PTRAUTH_USER_KEY_APIA
, offsetof(struct ptrauth_keys_user
, apia
));
147 DEFINE(PTRAUTH_USER_KEY_APIB
, offsetof(struct ptrauth_keys_user
, apib
));
148 DEFINE(PTRAUTH_USER_KEY_APDA
, offsetof(struct ptrauth_keys_user
, apda
));
149 DEFINE(PTRAUTH_USER_KEY_APDB
, offsetof(struct ptrauth_keys_user
, apdb
));
150 DEFINE(PTRAUTH_USER_KEY_APGA
, offsetof(struct ptrauth_keys_user
, apga
));
151 DEFINE(PTRAUTH_KERNEL_KEY_APIA
, offsetof(struct ptrauth_keys_kernel
, apia
));