1ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux#include <stdio.h> 2ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux#include <stddef.h> 3ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux#include <ucontext.h> 4ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux#include <asm/sigcontext.h> 5ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux 6ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux#define UC(N,X) \ 7ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux printf ("#define LINUX_UC_" N "_OFF\t0x%X\n", offsetof (ucontext_t, X)) 8ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux 9ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux#define SC(N,X) \ 10ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux printf ("#define LINUX_SC_" N "_OFF\t0x%X\n", offsetof (struct sigcontext, X)) 11ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux 12ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Rouxint 13ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Rouxmain (void) 14ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux{ 15ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux printf ( 16ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux"/* Linux-specific definitions: */\n\n" 17ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux 18ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux"/* Define various structure offsets to simplify cross-compilation. */\n\n" 19ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux 20ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux"/* Offsets for AArch64 Linux \"ucontext_t\": */\n\n"); 21ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux 22ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux UC ("FLAGS", uc_flags); 23ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux UC ("LINK", uc_link); 24ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux UC ("STACK", uc_stack); 25ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux UC ("MCONTEXT", uc_mcontext); 26ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux UC ("SIGMASK", uc_sigmask); 27ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux 28ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux printf ("\n/* Offsets for AArch64 Linux \"struct sigcontext\": */\n\n"); 29ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux 30ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R0", regs[0]); 31ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R1", regs[1]); 32ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R2", regs[2]); 33ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R3", regs[3]); 34ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R4", regs[4]); 35ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R5", regs[5]); 36ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R6", regs[6]); 37ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R7", regs[7]); 38ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R8", regs[8]); 39ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R9", regs[9]); 40ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R10", regs[10]); 41ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R11", regs[11]); 42ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R12", regs[12]); 43ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R13", regs[13]); 44ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R14", regs[14]); 45ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R15", regs[15]); 46ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R16", regs[16]); 47ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R17", regs[17]); 48ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R18", regs[18]); 49ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R19", regs[19]); 50ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R20", regs[20]); 51ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R21", regs[21]); 52ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R22", regs[22]); 53ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R23", regs[23]); 54ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R24", regs[24]); 55ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R25", regs[25]); 56ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R26", regs[26]); 57ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R27", regs[27]); 58ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R28", regs[28]); 59ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R29", regs[29]); 60ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R30", regs[30]); 61ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("R31", regs[31]); 62ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux 63ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("PC", pc); 64ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("SP", sp); 65ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("Fault", fault_address); 66ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux SC ("state", pstate); 67ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux return 0; 68ac6c0a6535975f1dc2da6e4e2766614baac2a14aYvan Roux} 69