xref: /kvm-unit-tests/lib/riscv/asm-offsets.c (revision 386561f8cd050f58e9dc2ec7562014c8f1680de3)
1bd744d46SAndrew Jones // SPDX-License-Identifier: GPL-2.0-only
23b10c7e2SAndrew Jones #include <kbuild.h>
33b10c7e2SAndrew Jones #include <elf.h>
4*386561f8SAndrew Jones #include <asm/ptrace.h>
5bd744d46SAndrew Jones 
6bd744d46SAndrew Jones int main(void)
7bd744d46SAndrew Jones {
83b10c7e2SAndrew Jones #if __riscv_xlen == 32
93b10c7e2SAndrew Jones 	OFFSET(ELF_RELA_OFFSET, elf32_rela, r_offset);
103b10c7e2SAndrew Jones 	OFFSET(ELF_RELA_ADDEND, elf32_rela, r_addend);
113b10c7e2SAndrew Jones 	DEFINE(ELF_RELA_SIZE, sizeof(struct elf32_rela));
123b10c7e2SAndrew Jones #elif __riscv_xlen == 64
133b10c7e2SAndrew Jones 	OFFSET(ELF_RELA_OFFSET, elf64_rela, r_offset);
143b10c7e2SAndrew Jones 	OFFSET(ELF_RELA_ADDEND, elf64_rela, r_addend);
153b10c7e2SAndrew Jones 	DEFINE(ELF_RELA_SIZE, sizeof(struct elf64_rela));
163b10c7e2SAndrew Jones #endif
17*386561f8SAndrew Jones 	OFFSET(PT_EPC, pt_regs, epc);
18*386561f8SAndrew Jones 	OFFSET(PT_RA, pt_regs, ra);
19*386561f8SAndrew Jones 	OFFSET(PT_SP, pt_regs, sp);
20*386561f8SAndrew Jones 	OFFSET(PT_GP, pt_regs, gp);
21*386561f8SAndrew Jones 	OFFSET(PT_TP, pt_regs, tp);
22*386561f8SAndrew Jones 	OFFSET(PT_T0, pt_regs, t0);
23*386561f8SAndrew Jones 	OFFSET(PT_T1, pt_regs, t1);
24*386561f8SAndrew Jones 	OFFSET(PT_T2, pt_regs, t2);
25*386561f8SAndrew Jones 	OFFSET(PT_S0, pt_regs, s0);
26*386561f8SAndrew Jones 	OFFSET(PT_S1, pt_regs, s1);
27*386561f8SAndrew Jones 	OFFSET(PT_A0, pt_regs, a0);
28*386561f8SAndrew Jones 	OFFSET(PT_A1, pt_regs, a1);
29*386561f8SAndrew Jones 	OFFSET(PT_A2, pt_regs, a2);
30*386561f8SAndrew Jones 	OFFSET(PT_A3, pt_regs, a3);
31*386561f8SAndrew Jones 	OFFSET(PT_A4, pt_regs, a4);
32*386561f8SAndrew Jones 	OFFSET(PT_A5, pt_regs, a5);
33*386561f8SAndrew Jones 	OFFSET(PT_A6, pt_regs, a6);
34*386561f8SAndrew Jones 	OFFSET(PT_A7, pt_regs, a7);
35*386561f8SAndrew Jones 	OFFSET(PT_S2, pt_regs, s2);
36*386561f8SAndrew Jones 	OFFSET(PT_S3, pt_regs, s3);
37*386561f8SAndrew Jones 	OFFSET(PT_S4, pt_regs, s4);
38*386561f8SAndrew Jones 	OFFSET(PT_S5, pt_regs, s5);
39*386561f8SAndrew Jones 	OFFSET(PT_S6, pt_regs, s6);
40*386561f8SAndrew Jones 	OFFSET(PT_S7, pt_regs, s7);
41*386561f8SAndrew Jones 	OFFSET(PT_S8, pt_regs, s8);
42*386561f8SAndrew Jones 	OFFSET(PT_S9, pt_regs, s9);
43*386561f8SAndrew Jones 	OFFSET(PT_S10, pt_regs, s10);
44*386561f8SAndrew Jones 	OFFSET(PT_S11, pt_regs, s11);
45*386561f8SAndrew Jones 	OFFSET(PT_T3, pt_regs, t3);
46*386561f8SAndrew Jones 	OFFSET(PT_T4, pt_regs, t4);
47*386561f8SAndrew Jones 	OFFSET(PT_T5, pt_regs, t5);
48*386561f8SAndrew Jones 	OFFSET(PT_T6, pt_regs, t6);
49*386561f8SAndrew Jones 	OFFSET(PT_STATUS, pt_regs, status);
50*386561f8SAndrew Jones 	OFFSET(PT_BADADDR, pt_regs, badaddr);
51*386561f8SAndrew Jones 	OFFSET(PT_CAUSE, pt_regs, cause);
52*386561f8SAndrew Jones 	OFFSET(PT_ORIG_A0, pt_regs, orig_a0);
53*386561f8SAndrew Jones 	DEFINE(PT_SIZE, sizeof(struct pt_regs));
54bd744d46SAndrew Jones 	return 0;
55bd744d46SAndrew Jones }
56