139ac3f84SAndrew Jones /*
239ac3f84SAndrew Jones * Adapted from arch/arm64/kernel/asm-offsets.c
339ac3f84SAndrew Jones *
449f758b8SAndrew Jones * Copyright (C) 2017, Red Hat Inc, Andrew Jones <drjones@redhat.com>
539ac3f84SAndrew Jones *
649f758b8SAndrew Jones * This work is licensed under the terms of the GNU GPL, version 2.
739ac3f84SAndrew Jones */
839ac3f84SAndrew Jones #include <libcflat.h>
939ac3f84SAndrew Jones #include <kbuild.h>
107ee966e9SAndrew Jones #include <asm/ptrace.h>
1139ac3f84SAndrew Jones
main(void)1239ac3f84SAndrew Jones int main(void)
1339ac3f84SAndrew Jones {
147ee966e9SAndrew Jones OFFSET(S_X0, pt_regs, regs[0]);
157ee966e9SAndrew Jones OFFSET(S_X1, pt_regs, regs[1]);
167ee966e9SAndrew Jones OFFSET(S_X2, pt_regs, regs[2]);
177ee966e9SAndrew Jones OFFSET(S_X3, pt_regs, regs[3]);
187ee966e9SAndrew Jones OFFSET(S_X4, pt_regs, regs[4]);
197ee966e9SAndrew Jones OFFSET(S_X5, pt_regs, regs[5]);
207ee966e9SAndrew Jones OFFSET(S_X6, pt_regs, regs[6]);
217ee966e9SAndrew Jones OFFSET(S_X7, pt_regs, regs[7]);
227ee966e9SAndrew Jones OFFSET(S_LR, pt_regs, regs[30]);
237ee966e9SAndrew Jones OFFSET(S_SP, pt_regs, sp);
247ee966e9SAndrew Jones OFFSET(S_PC, pt_regs, pc);
257ee966e9SAndrew Jones OFFSET(S_PSTATE, pt_regs, pstate);
267ee966e9SAndrew Jones OFFSET(S_ORIG_X0, pt_regs, orig_x0);
277ee966e9SAndrew Jones OFFSET(S_SYSCALLNO, pt_regs, syscallno);
28*ecb5e711SNadav Amit
29*ecb5e711SNadav Amit /* FP and LR (16 bytes) go on the frame above pt_regs */
30*ecb5e711SNadav Amit DEFINE(S_FP, sizeof(struct pt_regs));
31*ecb5e711SNadav Amit DEFINE(S_FRAME_SIZE, (sizeof(struct pt_regs) + 16));
32*ecb5e711SNadav Amit
3339ac3f84SAndrew Jones return 0;
3439ac3f84SAndrew Jones }
35