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