1 /* 2 * Adapted from arch/arm/kernel/asm-offsets.c 3 * 4 * Copyright (C) 2014, Red Hat Inc, Andrew Jones <drjones@redhat.com> 5 * 6 * This work is licensed under the terms of the GNU LGPL, version 2. 7 */ 8 #include "libcflat.h" 9 #include "asm/ptrace.h" 10 11 #define DEFINE(sym, val) \ 12 asm volatile("\n->" #sym " %0 " #val : : "i" (val)) 13 #define OFFSET(sym, str, mem) DEFINE(sym, offsetof(struct str, mem)) 14 #define COMMENT(x) asm volatile("\n->#" x) 15 #define BLANK() asm volatile("\n->" : : ) 16 17 int main(void) 18 { 19 OFFSET(S_R0, pt_regs, ARM_r0); 20 OFFSET(S_R1, pt_regs, ARM_r1); 21 OFFSET(S_R2, pt_regs, ARM_r2); 22 OFFSET(S_R3, pt_regs, ARM_r3); 23 OFFSET(S_R4, pt_regs, ARM_r4); 24 OFFSET(S_R5, pt_regs, ARM_r5); 25 OFFSET(S_R6, pt_regs, ARM_r6); 26 OFFSET(S_R7, pt_regs, ARM_r7); 27 OFFSET(S_R8, pt_regs, ARM_r8); 28 OFFSET(S_R9, pt_regs, ARM_r9); 29 OFFSET(S_R10, pt_regs, ARM_r10); 30 OFFSET(S_FP, pt_regs, ARM_fp); 31 OFFSET(S_IP, pt_regs, ARM_ip); 32 OFFSET(S_SP, pt_regs, ARM_sp); 33 OFFSET(S_LR, pt_regs, ARM_lr); 34 OFFSET(S_PC, pt_regs, ARM_pc); 35 OFFSET(S_PSR, pt_regs, ARM_cpsr); 36 OFFSET(S_OLD_R0, pt_regs, ARM_ORIG_r0); 37 DEFINE(S_FRAME_SIZE, sizeof(struct pt_regs)); 38 return 0; 39 } 40