1 // SPDX-License-Identifier: GPL-2.0-only 2 #include <kbuild.h> 3 #include <elf.h> 4 #include <asm/ptrace.h> 5 #include <asm/smp.h> 6 7 int main(void) 8 { 9 #if __riscv_xlen == 32 10 OFFSET(ELF_RELA_OFFSET, elf32_rela, r_offset); 11 OFFSET(ELF_RELA_ADDEND, elf32_rela, r_addend); 12 DEFINE(ELF_RELA_SIZE, sizeof(struct elf32_rela)); 13 #elif __riscv_xlen == 64 14 OFFSET(ELF_RELA_OFFSET, elf64_rela, r_offset); 15 OFFSET(ELF_RELA_ADDEND, elf64_rela, r_addend); 16 DEFINE(ELF_RELA_SIZE, sizeof(struct elf64_rela)); 17 #endif 18 OFFSET(PT_EPC, pt_regs, epc); 19 OFFSET(PT_RA, pt_regs, ra); 20 OFFSET(PT_SP, pt_regs, sp); 21 OFFSET(PT_GP, pt_regs, gp); 22 OFFSET(PT_TP, pt_regs, tp); 23 OFFSET(PT_T0, pt_regs, t0); 24 OFFSET(PT_T1, pt_regs, t1); 25 OFFSET(PT_T2, pt_regs, t2); 26 OFFSET(PT_S0, pt_regs, s0); 27 OFFSET(PT_S1, pt_regs, s1); 28 OFFSET(PT_A0, pt_regs, a0); 29 OFFSET(PT_A1, pt_regs, a1); 30 OFFSET(PT_A2, pt_regs, a2); 31 OFFSET(PT_A3, pt_regs, a3); 32 OFFSET(PT_A4, pt_regs, a4); 33 OFFSET(PT_A5, pt_regs, a5); 34 OFFSET(PT_A6, pt_regs, a6); 35 OFFSET(PT_A7, pt_regs, a7); 36 OFFSET(PT_S2, pt_regs, s2); 37 OFFSET(PT_S3, pt_regs, s3); 38 OFFSET(PT_S4, pt_regs, s4); 39 OFFSET(PT_S5, pt_regs, s5); 40 OFFSET(PT_S6, pt_regs, s6); 41 OFFSET(PT_S7, pt_regs, s7); 42 OFFSET(PT_S8, pt_regs, s8); 43 OFFSET(PT_S9, pt_regs, s9); 44 OFFSET(PT_S10, pt_regs, s10); 45 OFFSET(PT_S11, pt_regs, s11); 46 OFFSET(PT_T3, pt_regs, t3); 47 OFFSET(PT_T4, pt_regs, t4); 48 OFFSET(PT_T5, pt_regs, t5); 49 OFFSET(PT_T6, pt_regs, t6); 50 OFFSET(PT_STATUS, pt_regs, status); 51 OFFSET(PT_BADADDR, pt_regs, badaddr); 52 OFFSET(PT_CAUSE, pt_regs, cause); 53 OFFSET(PT_ORIG_A0, pt_regs, orig_a0); 54 DEFINE(PT_SIZE, sizeof(struct pt_regs)); 55 56 OFFSET(SECONDARY_SATP, secondary_data, satp); 57 OFFSET(SECONDARY_STVEC, secondary_data, stvec); 58 OFFSET(SECONDARY_FUNC, secondary_data, func); 59 DEFINE(SECONDARY_DATA_SIZE, sizeof(struct secondary_data)); 60 61 return 0; 62 } 63