File Index
Files and directories
Sign in
FILE

asm-offsets.c

File preview with syntax highlighting.

linux-6.19.14/arch/riscv/kernel/asm-offsets.c C
  1// SPDX-License-Identifier: GPL-2.0-only
  2/*
  3 * Copyright (C) 2012 Regents of the University of California
  4 * Copyright (C) 2017 SiFive
  5 */
  6#define COMPILE_OFFSETS
  7
  8#include <linux/kbuild.h>
  9#include <linux/mm.h>
 10#include <linux/sched.h>
 11#include <linux/ftrace.h>
 12#include <linux/suspend.h>
 13#include <asm/kvm_host.h>
 14#include <asm/thread_info.h>
 15#include <asm/ptrace.h>
 16#include <asm/cpu_ops_sbi.h>
 17#include <asm/stacktrace.h>
 18#include <asm/suspend.h>
 19
 20void asm_offsets(void);
 21
 22void asm_offsets(void)
 23{
 24	OFFSET(TASK_THREAD_RA, task_struct, thread.ra);
 25	OFFSET(TASK_THREAD_SP, task_struct, thread.sp);
 26	OFFSET(TASK_THREAD_S0, task_struct, thread.s[0]);
 27	OFFSET(TASK_THREAD_S1, task_struct, thread.s[1]);
 28	OFFSET(TASK_THREAD_S2, task_struct, thread.s[2]);
 29	OFFSET(TASK_THREAD_S3, task_struct, thread.s[3]);
 30	OFFSET(TASK_THREAD_S4, task_struct, thread.s[4]);
 31	OFFSET(TASK_THREAD_S5, task_struct, thread.s[5]);
 32	OFFSET(TASK_THREAD_S6, task_struct, thread.s[6]);
 33	OFFSET(TASK_THREAD_S7, task_struct, thread.s[7]);
 34	OFFSET(TASK_THREAD_S8, task_struct, thread.s[8]);
 35	OFFSET(TASK_THREAD_S9, task_struct, thread.s[9]);
 36	OFFSET(TASK_THREAD_S10, task_struct, thread.s[10]);
 37	OFFSET(TASK_THREAD_S11, task_struct, thread.s[11]);
 38	OFFSET(TASK_THREAD_SUM, task_struct, thread.sum);
 39
 40	OFFSET(TASK_TI_CPU, task_struct, thread_info.cpu);
 41	OFFSET(TASK_TI_PREEMPT_COUNT, task_struct, thread_info.preempt_count);
 42	OFFSET(TASK_TI_KERNEL_SP, task_struct, thread_info.kernel_sp);
 43	OFFSET(TASK_TI_USER_SP, task_struct, thread_info.user_sp);
 44#ifdef CONFIG_SHADOW_CALL_STACK
 45	OFFSET(TASK_TI_SCS_SP, task_struct, thread_info.scs_sp);
 46#endif
 47#ifdef CONFIG_64BIT
 48	OFFSET(TASK_TI_A0, task_struct, thread_info.a0);
 49	OFFSET(TASK_TI_A1, task_struct, thread_info.a1);
 50	OFFSET(TASK_TI_A2, task_struct, thread_info.a2);
 51#endif
 52
 53	OFFSET(TASK_TI_CPU_NUM, task_struct, thread_info.cpu);
 54	OFFSET(TASK_THREAD_F0,  task_struct, thread.fstate.f[0]);
 55	OFFSET(TASK_THREAD_F1,  task_struct, thread.fstate.f[1]);
 56	OFFSET(TASK_THREAD_F2,  task_struct, thread.fstate.f[2]);
 57	OFFSET(TASK_THREAD_F3,  task_struct, thread.fstate.f[3]);
 58	OFFSET(TASK_THREAD_F4,  task_struct, thread.fstate.f[4]);
 59	OFFSET(TASK_THREAD_F5,  task_struct, thread.fstate.f[5]);
 60	OFFSET(TASK_THREAD_F6,  task_struct, thread.fstate.f[6]);
 61	OFFSET(TASK_THREAD_F7,  task_struct, thread.fstate.f[7]);
 62	OFFSET(TASK_THREAD_F8,  task_struct, thread.fstate.f[8]);
 63	OFFSET(TASK_THREAD_F9,  task_struct, thread.fstate.f[9]);
 64	OFFSET(TASK_THREAD_F10, task_struct, thread.fstate.f[10]);
 65	OFFSET(TASK_THREAD_F11, task_struct, thread.fstate.f[11]);
 66	OFFSET(TASK_THREAD_F12, task_struct, thread.fstate.f[12]);
 67	OFFSET(TASK_THREAD_F13, task_struct, thread.fstate.f[13]);
 68	OFFSET(TASK_THREAD_F14, task_struct, thread.fstate.f[14]);
 69	OFFSET(TASK_THREAD_F15, task_struct, thread.fstate.f[15]);
 70	OFFSET(TASK_THREAD_F16, task_struct, thread.fstate.f[16]);
 71	OFFSET(TASK_THREAD_F17, task_struct, thread.fstate.f[17]);
 72	OFFSET(TASK_THREAD_F18, task_struct, thread.fstate.f[18]);
 73	OFFSET(TASK_THREAD_F19, task_struct, thread.fstate.f[19]);
 74	OFFSET(TASK_THREAD_F20, task_struct, thread.fstate.f[20]);
 75	OFFSET(TASK_THREAD_F21, task_struct, thread.fstate.f[21]);
 76	OFFSET(TASK_THREAD_F22, task_struct, thread.fstate.f[22]);
 77	OFFSET(TASK_THREAD_F23, task_struct, thread.fstate.f[23]);
 78	OFFSET(TASK_THREAD_F24, task_struct, thread.fstate.f[24]);
 79	OFFSET(TASK_THREAD_F25, task_struct, thread.fstate.f[25]);
 80	OFFSET(TASK_THREAD_F26, task_struct, thread.fstate.f[26]);
 81	OFFSET(TASK_THREAD_F27, task_struct, thread.fstate.f[27]);
 82	OFFSET(TASK_THREAD_F28, task_struct, thread.fstate.f[28]);
 83	OFFSET(TASK_THREAD_F29, task_struct, thread.fstate.f[29]);
 84	OFFSET(TASK_THREAD_F30, task_struct, thread.fstate.f[30]);
 85	OFFSET(TASK_THREAD_F31, task_struct, thread.fstate.f[31]);
 86	OFFSET(TASK_THREAD_FCSR, task_struct, thread.fstate.fcsr);
 87#ifdef CONFIG_STACKPROTECTOR
 88	OFFSET(TSK_STACK_CANARY, task_struct, stack_canary);
 89#endif
 90
 91	DEFINE(PT_SIZE, sizeof(struct pt_regs));
 92	OFFSET(PT_EPC, pt_regs, epc);
 93	OFFSET(PT_RA, pt_regs, ra);
 94	OFFSET(PT_FP, pt_regs, s0);
 95	OFFSET(PT_S0, pt_regs, s0);
 96	OFFSET(PT_S1, pt_regs, s1);
 97	OFFSET(PT_S2, pt_regs, s2);
 98	OFFSET(PT_S3, pt_regs, s3);
 99	OFFSET(PT_S4, pt_regs, s4);
100	OFFSET(PT_S5, pt_regs, s5);
101	OFFSET(PT_S6, pt_regs, s6);
102	OFFSET(PT_S7, pt_regs, s7);
103	OFFSET(PT_S8, pt_regs, s8);
104	OFFSET(PT_S9, pt_regs, s9);
105	OFFSET(PT_S10, pt_regs, s10);
106	OFFSET(PT_S11, pt_regs, s11);
107	OFFSET(PT_SP, pt_regs, sp);
108	OFFSET(PT_TP, pt_regs, tp);
109	OFFSET(PT_A0, pt_regs, a0);
110	OFFSET(PT_A1, pt_regs, a1);
111	OFFSET(PT_A2, pt_regs, a2);
112	OFFSET(PT_A3, pt_regs, a3);
113	OFFSET(PT_A4, pt_regs, a4);
114	OFFSET(PT_A5, pt_regs, a5);
115	OFFSET(PT_A6, pt_regs, a6);
116	OFFSET(PT_A7, pt_regs, a7);
117	OFFSET(PT_T0, pt_regs, t0);
118	OFFSET(PT_T1, pt_regs, t1);
119	OFFSET(PT_T2, pt_regs, t2);
120	OFFSET(PT_T3, pt_regs, t3);
121	OFFSET(PT_T4, pt_regs, t4);
122	OFFSET(PT_T5, pt_regs, t5);
123	OFFSET(PT_T6, pt_regs, t6);
124	OFFSET(PT_GP, pt_regs, gp);
125	OFFSET(PT_ORIG_A0, pt_regs, orig_a0);
126	OFFSET(PT_STATUS, pt_regs, status);
127	OFFSET(PT_BADADDR, pt_regs, badaddr);
128	OFFSET(PT_CAUSE, pt_regs, cause);
129
130	OFFSET(SUSPEND_CONTEXT_REGS, suspend_context, regs);
131
132	OFFSET(HIBERN_PBE_ADDR, pbe, address);
133	OFFSET(HIBERN_PBE_ORIG, pbe, orig_address);
134	OFFSET(HIBERN_PBE_NEXT, pbe, next);
135
136	OFFSET(KVM_ARCH_GUEST_ZERO, kvm_vcpu_arch, guest_context.zero);
137	OFFSET(KVM_ARCH_GUEST_RA, kvm_vcpu_arch, guest_context.ra);
138	OFFSET(KVM_ARCH_GUEST_SP, kvm_vcpu_arch, guest_context.sp);
139	OFFSET(KVM_ARCH_GUEST_GP, kvm_vcpu_arch, guest_context.gp);
140	OFFSET(KVM_ARCH_GUEST_TP, kvm_vcpu_arch, guest_context.tp);
141	OFFSET(KVM_ARCH_GUEST_T0, kvm_vcpu_arch, guest_context.t0);
142	OFFSET(KVM_ARCH_GUEST_T1, kvm_vcpu_arch, guest_context.t1);
143	OFFSET(KVM_ARCH_GUEST_T2, kvm_vcpu_arch, guest_context.t2);
144	OFFSET(KVM_ARCH_GUEST_S0, kvm_vcpu_arch, guest_context.s0);
145	OFFSET(KVM_ARCH_GUEST_S1, kvm_vcpu_arch, guest_context.s1);
146	OFFSET(KVM_ARCH_GUEST_A0, kvm_vcpu_arch, guest_context.a0);
147	OFFSET(KVM_ARCH_GUEST_A1, kvm_vcpu_arch, guest_context.a1);
148	OFFSET(KVM_ARCH_GUEST_A2, kvm_vcpu_arch, guest_context.a2);
149	OFFSET(KVM_ARCH_GUEST_A3, kvm_vcpu_arch, guest_context.a3);
150	OFFSET(KVM_ARCH_GUEST_A4, kvm_vcpu_arch, guest_context.a4);
151	OFFSET(KVM_ARCH_GUEST_A5, kvm_vcpu_arch, guest_context.a5);
152	OFFSET(KVM_ARCH_GUEST_A6, kvm_vcpu_arch, guest_context.a6);
153	OFFSET(KVM_ARCH_GUEST_A7, kvm_vcpu_arch, guest_context.a7);
154	OFFSET(KVM_ARCH_GUEST_S2, kvm_vcpu_arch, guest_context.s2);
155	OFFSET(KVM_ARCH_GUEST_S3, kvm_vcpu_arch, guest_context.s3);
156	OFFSET(KVM_ARCH_GUEST_S4, kvm_vcpu_arch, guest_context.s4);
157	OFFSET(KVM_ARCH_GUEST_S5, kvm_vcpu_arch, guest_context.s5);
158	OFFSET(KVM_ARCH_GUEST_S6, kvm_vcpu_arch, guest_context.s6);
159	OFFSET(KVM_ARCH_GUEST_S7, kvm_vcpu_arch, guest_context.s7);
160	OFFSET(KVM_ARCH_GUEST_S8, kvm_vcpu_arch, guest_context.s8);
161	OFFSET(KVM_ARCH_GUEST_S9, kvm_vcpu_arch, guest_context.s9);
162	OFFSET(KVM_ARCH_GUEST_S10, kvm_vcpu_arch, guest_context.s10);
163	OFFSET(KVM_ARCH_GUEST_S11, kvm_vcpu_arch, guest_context.s11);
164	OFFSET(KVM_ARCH_GUEST_T3, kvm_vcpu_arch, guest_context.t3);
165	OFFSET(KVM_ARCH_GUEST_T4, kvm_vcpu_arch, guest_context.t4);
166	OFFSET(KVM_ARCH_GUEST_T5, kvm_vcpu_arch, guest_context.t5);
167	OFFSET(KVM_ARCH_GUEST_T6, kvm_vcpu_arch, guest_context.t6);
168	OFFSET(KVM_ARCH_GUEST_SEPC, kvm_vcpu_arch, guest_context.sepc);
169	OFFSET(KVM_ARCH_GUEST_SSTATUS, kvm_vcpu_arch, guest_context.sstatus);
170	OFFSET(KVM_ARCH_GUEST_HSTATUS, kvm_vcpu_arch, guest_context.hstatus);
171	OFFSET(KVM_ARCH_GUEST_SCOUNTEREN, kvm_vcpu_arch, guest_csr.scounteren);
172
173	OFFSET(KVM_ARCH_HOST_ZERO, kvm_vcpu_arch, host_context.zero);
174	OFFSET(KVM_ARCH_HOST_RA, kvm_vcpu_arch, host_context.ra);
175	OFFSET(KVM_ARCH_HOST_SP, kvm_vcpu_arch, host_context.sp);
176	OFFSET(KVM_ARCH_HOST_GP, kvm_vcpu_arch, host_context.gp);
177	OFFSET(KVM_ARCH_HOST_TP, kvm_vcpu_arch, host_context.tp);
178	OFFSET(KVM_ARCH_HOST_T0, kvm_vcpu_arch, host_context.t0);
179	OFFSET(KVM_ARCH_HOST_T1, kvm_vcpu_arch, host_context.t1);
180	OFFSET(KVM_ARCH_HOST_T2, kvm_vcpu_arch, host_context.t2);
181	OFFSET(KVM_ARCH_HOST_S0, kvm_vcpu_arch, host_context.s0);
182	OFFSET(KVM_ARCH_HOST_S1, kvm_vcpu_arch, host_context.s1);
183	OFFSET(KVM_ARCH_HOST_A0, kvm_vcpu_arch, host_context.a0);
184	OFFSET(KVM_ARCH_HOST_A1, kvm_vcpu_arch, host_context.a1);
185	OFFSET(KVM_ARCH_HOST_A2, kvm_vcpu_arch, host_context.a2);
186	OFFSET(KVM_ARCH_HOST_A3, kvm_vcpu_arch, host_context.a3);
187	OFFSET(KVM_ARCH_HOST_A4, kvm_vcpu_arch, host_context.a4);
188	OFFSET(KVM_ARCH_HOST_A5, kvm_vcpu_arch, host_context.a5);
189	OFFSET(KVM_ARCH_HOST_A6, kvm_vcpu_arch, host_context.a6);
190	OFFSET(KVM_ARCH_HOST_A7, kvm_vcpu_arch, host_context.a7);
191	OFFSET(KVM_ARCH_HOST_S2, kvm_vcpu_arch, host_context.s2);
192	OFFSET(KVM_ARCH_HOST_S3, kvm_vcpu_arch, host_context.s3);
193	OFFSET(KVM_ARCH_HOST_S4, kvm_vcpu_arch, host_context.s4);
194	OFFSET(KVM_ARCH_HOST_S5, kvm_vcpu_arch, host_context.s5);
195	OFFSET(KVM_ARCH_HOST_S6, kvm_vcpu_arch, host_context.s6);
196	OFFSET(KVM_ARCH_HOST_S7, kvm_vcpu_arch, host_context.s7);
197	OFFSET(KVM_ARCH_HOST_S8, kvm_vcpu_arch, host_context.s8);
198	OFFSET(KVM_ARCH_HOST_S9, kvm_vcpu_arch, host_context.s9);
199	OFFSET(KVM_ARCH_HOST_S10, kvm_vcpu_arch, host_context.s10);
200	OFFSET(KVM_ARCH_HOST_S11, kvm_vcpu_arch, host_context.s11);
201	OFFSET(KVM_ARCH_HOST_T3, kvm_vcpu_arch, host_context.t3);
202	OFFSET(KVM_ARCH_HOST_T4, kvm_vcpu_arch, host_context.t4);
203	OFFSET(KVM_ARCH_HOST_T5, kvm_vcpu_arch, host_context.t5);
204	OFFSET(KVM_ARCH_HOST_T6, kvm_vcpu_arch, host_context.t6);
205	OFFSET(KVM_ARCH_HOST_SEPC, kvm_vcpu_arch, host_context.sepc);
206	OFFSET(KVM_ARCH_HOST_SSTATUS, kvm_vcpu_arch, host_context.sstatus);
207	OFFSET(KVM_ARCH_HOST_HSTATUS, kvm_vcpu_arch, host_context.hstatus);
208	OFFSET(KVM_ARCH_HOST_SSCRATCH, kvm_vcpu_arch, host_sscratch);
209	OFFSET(KVM_ARCH_HOST_STVEC, kvm_vcpu_arch, host_stvec);
210	OFFSET(KVM_ARCH_HOST_SCOUNTEREN, kvm_vcpu_arch, host_scounteren);
211
212	OFFSET(KVM_ARCH_TRAP_SEPC, kvm_cpu_trap, sepc);
213	OFFSET(KVM_ARCH_TRAP_SCAUSE, kvm_cpu_trap, scause);
214	OFFSET(KVM_ARCH_TRAP_STVAL, kvm_cpu_trap, stval);
215	OFFSET(KVM_ARCH_TRAP_HTVAL, kvm_cpu_trap, htval);
216	OFFSET(KVM_ARCH_TRAP_HTINST, kvm_cpu_trap, htinst);
217
218	/* F extension */
219
220	OFFSET(KVM_ARCH_FP_F_F0, kvm_cpu_context, fp.f.f[0]);
221	OFFSET(KVM_ARCH_FP_F_F1, kvm_cpu_context, fp.f.f[1]);
222	OFFSET(KVM_ARCH_FP_F_F2, kvm_cpu_context, fp.f.f[2]);
223	OFFSET(KVM_ARCH_FP_F_F3, kvm_cpu_context, fp.f.f[3]);
224	OFFSET(KVM_ARCH_FP_F_F4, kvm_cpu_context, fp.f.f[4]);
225	OFFSET(KVM_ARCH_FP_F_F5, kvm_cpu_context, fp.f.f[5]);
226	OFFSET(KVM_ARCH_FP_F_F6, kvm_cpu_context, fp.f.f[6]);
227	OFFSET(KVM_ARCH_FP_F_F7, kvm_cpu_context, fp.f.f[7]);
228	OFFSET(KVM_ARCH_FP_F_F8, kvm_cpu_context, fp.f.f[8]);
229	OFFSET(KVM_ARCH_FP_F_F9, kvm_cpu_context, fp.f.f[9]);
230	OFFSET(KVM_ARCH_FP_F_F10, kvm_cpu_context, fp.f.f[10]);
231	OFFSET(KVM_ARCH_FP_F_F11, kvm_cpu_context, fp.f.f[11]);
232	OFFSET(KVM_ARCH_FP_F_F12, kvm_cpu_context, fp.f.f[12]);
233	OFFSET(KVM_ARCH_FP_F_F13, kvm_cpu_context, fp.f.f[13]);
234	OFFSET(KVM_ARCH_FP_F_F14, kvm_cpu_context, fp.f.f[14]);
235	OFFSET(KVM_ARCH_FP_F_F15, kvm_cpu_context, fp.f.f[15]);
236	OFFSET(KVM_ARCH_FP_F_F16, kvm_cpu_context, fp.f.f[16]);
237	OFFSET(KVM_ARCH_FP_F_F17, kvm_cpu_context, fp.f.f[17]);
238	OFFSET(KVM_ARCH_FP_F_F18, kvm_cpu_context, fp.f.f[18]);
239	OFFSET(KVM_ARCH_FP_F_F19, kvm_cpu_context, fp.f.f[19]);
240	OFFSET(KVM_ARCH_FP_F_F20, kvm_cpu_context, fp.f.f[20]);
241	OFFSET(KVM_ARCH_FP_F_F21, kvm_cpu_context, fp.f.f[21]);
242	OFFSET(KVM_ARCH_FP_F_F22, kvm_cpu_context, fp.f.f[22]);
243	OFFSET(KVM_ARCH_FP_F_F23, kvm_cpu_context, fp.f.f[23]);
244	OFFSET(KVM_ARCH_FP_F_F24, kvm_cpu_context, fp.f.f[24]);
245	OFFSET(KVM_ARCH_FP_F_F25, kvm_cpu_context, fp.f.f[25]);
246	OFFSET(KVM_ARCH_FP_F_F26, kvm_cpu_context, fp.f.f[26]);
247	OFFSET(KVM_ARCH_FP_F_F27, kvm_cpu_context, fp.f.f[27]);
248	OFFSET(KVM_ARCH_FP_F_F28, kvm_cpu_context, fp.f.f[28]);
249	OFFSET(KVM_ARCH_FP_F_F29, kvm_cpu_context, fp.f.f[29]);
250	OFFSET(KVM_ARCH_FP_F_F30, kvm_cpu_context, fp.f.f[30]);
251	OFFSET(KVM_ARCH_FP_F_F31, kvm_cpu_context, fp.f.f[31]);
252	OFFSET(KVM_ARCH_FP_F_FCSR, kvm_cpu_context, fp.f.fcsr);
253
254	/* D extension */
255
256	OFFSET(KVM_ARCH_FP_D_F0, kvm_cpu_context, fp.d.f[0]);
257	OFFSET(KVM_ARCH_FP_D_F1, kvm_cpu_context, fp.d.f[1]);
258	OFFSET(KVM_ARCH_FP_D_F2, kvm_cpu_context, fp.d.f[2]);
259	OFFSET(KVM_ARCH_FP_D_F3, kvm_cpu_context, fp.d.f[3]);
260	OFFSET(KVM_ARCH_FP_D_F4, kvm_cpu_context, fp.d.f[4]);
261	OFFSET(KVM_ARCH_FP_D_F5, kvm_cpu_context, fp.d.f[5]);
262	OFFSET(KVM_ARCH_FP_D_F6, kvm_cpu_context, fp.d.f[6]);
263	OFFSET(KVM_ARCH_FP_D_F7, kvm_cpu_context, fp.d.f[7]);
264	OFFSET(KVM_ARCH_FP_D_F8, kvm_cpu_context, fp.d.f[8]);
265	OFFSET(KVM_ARCH_FP_D_F9, kvm_cpu_context, fp.d.f[9]);
266	OFFSET(KVM_ARCH_FP_D_F10, kvm_cpu_context, fp.d.f[10]);
267	OFFSET(KVM_ARCH_FP_D_F11, kvm_cpu_context, fp.d.f[11]);
268	OFFSET(KVM_ARCH_FP_D_F12, kvm_cpu_context, fp.d.f[12]);
269	OFFSET(KVM_ARCH_FP_D_F13, kvm_cpu_context, fp.d.f[13]);
270	OFFSET(KVM_ARCH_FP_D_F14, kvm_cpu_context, fp.d.f[14]);
271	OFFSET(KVM_ARCH_FP_D_F15, kvm_cpu_context, fp.d.f[15]);
272	OFFSET(KVM_ARCH_FP_D_F16, kvm_cpu_context, fp.d.f[16]);
273	OFFSET(KVM_ARCH_FP_D_F17, kvm_cpu_context, fp.d.f[17]);
274	OFFSET(KVM_ARCH_FP_D_F18, kvm_cpu_context, fp.d.f[18]);
275	OFFSET(KVM_ARCH_FP_D_F19, kvm_cpu_context, fp.d.f[19]);
276	OFFSET(KVM_ARCH_FP_D_F20, kvm_cpu_context, fp.d.f[20]);
277	OFFSET(KVM_ARCH_FP_D_F21, kvm_cpu_context, fp.d.f[21]);
278	OFFSET(KVM_ARCH_FP_D_F22, kvm_cpu_context, fp.d.f[22]);
279	OFFSET(KVM_ARCH_FP_D_F23, kvm_cpu_context, fp.d.f[23]);
280	OFFSET(KVM_ARCH_FP_D_F24, kvm_cpu_context, fp.d.f[24]);
281	OFFSET(KVM_ARCH_FP_D_F25, kvm_cpu_context, fp.d.f[25]);
282	OFFSET(KVM_ARCH_FP_D_F26, kvm_cpu_context, fp.d.f[26]);
283	OFFSET(KVM_ARCH_FP_D_F27, kvm_cpu_context, fp.d.f[27]);
284	OFFSET(KVM_ARCH_FP_D_F28, kvm_cpu_context, fp.d.f[28]);
285	OFFSET(KVM_ARCH_FP_D_F29, kvm_cpu_context, fp.d.f[29]);
286	OFFSET(KVM_ARCH_FP_D_F30, kvm_cpu_context, fp.d.f[30]);
287	OFFSET(KVM_ARCH_FP_D_F31, kvm_cpu_context, fp.d.f[31]);
288	OFFSET(KVM_ARCH_FP_D_FCSR, kvm_cpu_context, fp.d.fcsr);
289
290	/*
291	 * THREAD_{F,X}* might be larger than a S-type offset can handle, but
292	 * these are used in performance-sensitive assembly so we can't resort
293	 * to loading the long immediate every time.
294	 */
295	DEFINE(TASK_THREAD_RA_RA,
296		  offsetof(struct task_struct, thread.ra)
297		- offsetof(struct task_struct, thread.ra)
298	);
299	DEFINE(TASK_THREAD_SP_RA,
300		  offsetof(struct task_struct, thread.sp)
301		- offsetof(struct task_struct, thread.ra)
302	);
303	DEFINE(TASK_THREAD_S0_RA,
304		  offsetof(struct task_struct, thread.s[0])
305		- offsetof(struct task_struct, thread.ra)
306	);
307	DEFINE(TASK_THREAD_S1_RA,
308		  offsetof(struct task_struct, thread.s[1])
309		- offsetof(struct task_struct, thread.ra)
310	);
311	DEFINE(TASK_THREAD_S2_RA,
312		  offsetof(struct task_struct, thread.s[2])
313		- offsetof(struct task_struct, thread.ra)
314	);
315	DEFINE(TASK_THREAD_S3_RA,
316		  offsetof(struct task_struct, thread.s[3])
317		- offsetof(struct task_struct, thread.ra)
318	);
319	DEFINE(TASK_THREAD_S4_RA,
320		  offsetof(struct task_struct, thread.s[4])
321		- offsetof(struct task_struct, thread.ra)
322	);
323	DEFINE(TASK_THREAD_S5_RA,
324		  offsetof(struct task_struct, thread.s[5])
325		- offsetof(struct task_struct, thread.ra)
326	);
327	DEFINE(TASK_THREAD_S6_RA,
328		  offsetof(struct task_struct, thread.s[6])
329		- offsetof(struct task_struct, thread.ra)
330	);
331	DEFINE(TASK_THREAD_S7_RA,
332		  offsetof(struct task_struct, thread.s[7])
333		- offsetof(struct task_struct, thread.ra)
334	);
335	DEFINE(TASK_THREAD_S8_RA,
336		  offsetof(struct task_struct, thread.s[8])
337		- offsetof(struct task_struct, thread.ra)
338	);
339	DEFINE(TASK_THREAD_S9_RA,
340		  offsetof(struct task_struct, thread.s[9])
341		- offsetof(struct task_struct, thread.ra)
342	);
343	DEFINE(TASK_THREAD_S10_RA,
344		  offsetof(struct task_struct, thread.s[10])
345		- offsetof(struct task_struct, thread.ra)
346	);
347	DEFINE(TASK_THREAD_S11_RA,
348		  offsetof(struct task_struct, thread.s[11])
349		- offsetof(struct task_struct, thread.ra)
350	);
351	DEFINE(TASK_THREAD_SUM_RA,
352		  offsetof(struct task_struct, thread.sum)
353		- offsetof(struct task_struct, thread.ra)
354	);
355
356	DEFINE(TASK_THREAD_F0_F0,
357		  offsetof(struct task_struct, thread.fstate.f[0])
358		- offsetof(struct task_struct, thread.fstate.f[0])
359	);
360	DEFINE(TASK_THREAD_F1_F0,
361		  offsetof(struct task_struct, thread.fstate.f[1])
362		- offsetof(struct task_struct, thread.fstate.f[0])
363	);
364	DEFINE(TASK_THREAD_F2_F0,
365		  offsetof(struct task_struct, thread.fstate.f[2])
366		- offsetof(struct task_struct, thread.fstate.f[0])
367	);
368	DEFINE(TASK_THREAD_F3_F0,
369		  offsetof(struct task_struct, thread.fstate.f[3])
370		- offsetof(struct task_struct, thread.fstate.f[0])
371	);
372	DEFINE(TASK_THREAD_F4_F0,
373		  offsetof(struct task_struct, thread.fstate.f[4])
374		- offsetof(struct task_struct, thread.fstate.f[0])
375	);
376	DEFINE(TASK_THREAD_F5_F0,
377		  offsetof(struct task_struct, thread.fstate.f[5])
378		- offsetof(struct task_struct, thread.fstate.f[0])
379	);
380	DEFINE(TASK_THREAD_F6_F0,
381		  offsetof(struct task_struct, thread.fstate.f[6])
382		- offsetof(struct task_struct, thread.fstate.f[0])
383	);
384	DEFINE(TASK_THREAD_F7_F0,
385		  offsetof(struct task_struct, thread.fstate.f[7])
386		- offsetof(struct task_struct, thread.fstate.f[0])
387	);
388	DEFINE(TASK_THREAD_F8_F0,
389		  offsetof(struct task_struct, thread.fstate.f[8])
390		- offsetof(struct task_struct, thread.fstate.f[0])
391	);
392	DEFINE(TASK_THREAD_F9_F0,
393		  offsetof(struct task_struct, thread.fstate.f[9])
394		- offsetof(struct task_struct, thread.fstate.f[0])
395	);
396	DEFINE(TASK_THREAD_F10_F0,
397		  offsetof(struct task_struct, thread.fstate.f[10])
398		- offsetof(struct task_struct, thread.fstate.f[0])
399	);
400	DEFINE(TASK_THREAD_F11_F0,
401		  offsetof(struct task_struct, thread.fstate.f[11])
402		- offsetof(struct task_struct, thread.fstate.f[0])
403	);
404	DEFINE(TASK_THREAD_F12_F0,
405		  offsetof(struct task_struct, thread.fstate.f[12])
406		- offsetof(struct task_struct, thread.fstate.f[0])
407	);
408	DEFINE(TASK_THREAD_F13_F0,
409		  offsetof(struct task_struct, thread.fstate.f[13])
410		- offsetof(struct task_struct, thread.fstate.f[0])
411	);
412	DEFINE(TASK_THREAD_F14_F0,
413		  offsetof(struct task_struct, thread.fstate.f[14])
414		- offsetof(struct task_struct, thread.fstate.f[0])
415	);
416	DEFINE(TASK_THREAD_F15_F0,
417		  offsetof(struct task_struct, thread.fstate.f[15])
418		- offsetof(struct task_struct, thread.fstate.f[0])
419	);
420	DEFINE(TASK_THREAD_F16_F0,
421		  offsetof(struct task_struct, thread.fstate.f[16])
422		- offsetof(struct task_struct, thread.fstate.f[0])
423	);
424	DEFINE(TASK_THREAD_F17_F0,
425		  offsetof(struct task_struct, thread.fstate.f[17])
426		- offsetof(struct task_struct, thread.fstate.f[0])
427	);
428	DEFINE(TASK_THREAD_F18_F0,
429		  offsetof(struct task_struct, thread.fstate.f[18])
430		- offsetof(struct task_struct, thread.fstate.f[0])
431	);
432	DEFINE(TASK_THREAD_F19_F0,
433		  offsetof(struct task_struct, thread.fstate.f[19])
434		- offsetof(struct task_struct, thread.fstate.f[0])
435	);
436	DEFINE(TASK_THREAD_F20_F0,
437		  offsetof(struct task_struct, thread.fstate.f[20])
438		- offsetof(struct task_struct, thread.fstate.f[0])
439	);
440	DEFINE(TASK_THREAD_F21_F0,
441		  offsetof(struct task_struct, thread.fstate.f[21])
442		- offsetof(struct task_struct, thread.fstate.f[0])
443	);
444	DEFINE(TASK_THREAD_F22_F0,
445		  offsetof(struct task_struct, thread.fstate.f[22])
446		- offsetof(struct task_struct, thread.fstate.f[0])
447	);
448	DEFINE(TASK_THREAD_F23_F0,
449		  offsetof(struct task_struct, thread.fstate.f[23])
450		- offsetof(struct task_struct, thread.fstate.f[0])
451	);
452	DEFINE(TASK_THREAD_F24_F0,
453		  offsetof(struct task_struct, thread.fstate.f[24])
454		- offsetof(struct task_struct, thread.fstate.f[0])
455	);
456	DEFINE(TASK_THREAD_F25_F0,
457		  offsetof(struct task_struct, thread.fstate.f[25])
458		- offsetof(struct task_struct, thread.fstate.f[0])
459	);
460	DEFINE(TASK_THREAD_F26_F0,
461		  offsetof(struct task_struct, thread.fstate.f[26])
462		- offsetof(struct task_struct, thread.fstate.f[0])
463	);
464	DEFINE(TASK_THREAD_F27_F0,
465		  offsetof(struct task_struct, thread.fstate.f[27])
466		- offsetof(struct task_struct, thread.fstate.f[0])
467	);
468	DEFINE(TASK_THREAD_F28_F0,
469		  offsetof(struct task_struct, thread.fstate.f[28])
470		- offsetof(struct task_struct, thread.fstate.f[0])
471	);
472	DEFINE(TASK_THREAD_F29_F0,
473		  offsetof(struct task_struct, thread.fstate.f[29])
474		- offsetof(struct task_struct, thread.fstate.f[0])
475	);
476	DEFINE(TASK_THREAD_F30_F0,
477		  offsetof(struct task_struct, thread.fstate.f[30])
478		- offsetof(struct task_struct, thread.fstate.f[0])
479	);
480	DEFINE(TASK_THREAD_F31_F0,
481		  offsetof(struct task_struct, thread.fstate.f[31])
482		- offsetof(struct task_struct, thread.fstate.f[0])
483	);
484	DEFINE(TASK_THREAD_FCSR_F0,
485		  offsetof(struct task_struct, thread.fstate.fcsr)
486		- offsetof(struct task_struct, thread.fstate.f[0])
487	);
488
489	/*
490	 * We allocate a pt_regs on the stack when entering the kernel.  This
491	 * ensures the alignment is sane.
492	 */
493	DEFINE(PT_SIZE_ON_STACK, ALIGN(sizeof(struct pt_regs), STACK_ALIGN));
494
495	OFFSET(KERNEL_MAP_VIRT_ADDR, kernel_mapping, virt_addr);
496	OFFSET(SBI_HART_BOOT_TASK_PTR_OFFSET, sbi_hart_boot_data, task_ptr);
497	OFFSET(SBI_HART_BOOT_STACK_PTR_OFFSET, sbi_hart_boot_data, stack_ptr);
498
499	DEFINE(STACKFRAME_SIZE_ON_STACK, ALIGN(sizeof(struct stackframe), STACK_ALIGN));
500	OFFSET(STACKFRAME_FP, stackframe, fp);
501	OFFSET(STACKFRAME_RA, stackframe, ra);
502#ifdef CONFIG_FUNCTION_TRACER
503	DEFINE(FTRACE_OPS_FUNC,		offsetof(struct ftrace_ops, func));
504#ifdef CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
505	DEFINE(FTRACE_OPS_DIRECT_CALL,	offsetof(struct ftrace_ops, direct_call));
506#endif /* CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS */
507#endif
508
509#ifdef CONFIG_DYNAMIC_FTRACE_WITH_ARGS
510	DEFINE(FREGS_SIZE_ON_STACK, ALIGN(sizeof(struct __arch_ftrace_regs), STACK_ALIGN));
511	DEFINE(FREGS_EPC,	    offsetof(struct __arch_ftrace_regs, epc));
512	DEFINE(FREGS_RA,	    offsetof(struct __arch_ftrace_regs, ra));
513	DEFINE(FREGS_SP,	    offsetof(struct __arch_ftrace_regs, sp));
514	DEFINE(FREGS_S0,	    offsetof(struct __arch_ftrace_regs, s0));
515	DEFINE(FREGS_T1,	    offsetof(struct __arch_ftrace_regs, t1));
516#ifdef CONFIG_CC_IS_CLANG
517	DEFINE(FREGS_T2,	    offsetof(struct __arch_ftrace_regs, t2));
518	DEFINE(FREGS_T3,	    offsetof(struct __arch_ftrace_regs, t3));
519	DEFINE(FREGS_T4,	    offsetof(struct __arch_ftrace_regs, t4));
520	DEFINE(FREGS_T5,	    offsetof(struct __arch_ftrace_regs, t5));
521	DEFINE(FREGS_T6,	    offsetof(struct __arch_ftrace_regs, t6));
522#endif
523	DEFINE(FREGS_A0,	    offsetof(struct __arch_ftrace_regs, a0));
524	DEFINE(FREGS_A1,	    offsetof(struct __arch_ftrace_regs, a1));
525	DEFINE(FREGS_A2,	    offsetof(struct __arch_ftrace_regs, a2));
526	DEFINE(FREGS_A3,	    offsetof(struct __arch_ftrace_regs, a3));
527	DEFINE(FREGS_A4,	    offsetof(struct __arch_ftrace_regs, a4));
528	DEFINE(FREGS_A5,	    offsetof(struct __arch_ftrace_regs, a5));
529	DEFINE(FREGS_A6,	    offsetof(struct __arch_ftrace_regs, a6));
530	DEFINE(FREGS_A7,	    offsetof(struct __arch_ftrace_regs, a7));
531#endif
532}
~/ Read-only file preview.