xref: /kvm-unit-tests/lib/arm/asm-offsets.c (revision d3aacb4f57d05f74f2030dbe12e7dfd6aa1b273d)
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