123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #ifndef __ARMSIGCTX_H
- #define __ARMSIGCTX_H 1
- #include <asm/ptrace.h>
- union k_sigcontext
- {
- struct
- {
- unsigned long int trap_no;
- unsigned long int error_code;
- unsigned long int oldmask;
- unsigned long int arm_r0;
- unsigned long int arm_r1;
- unsigned long int arm_r2;
- unsigned long int arm_r3;
- unsigned long int arm_r4;
- unsigned long int arm_r5;
- unsigned long int arm_r6;
- unsigned long int arm_r7;
- unsigned long int arm_r8;
- unsigned long int arm_r9;
- unsigned long int arm_r10;
- unsigned long int arm_fp;
- unsigned long int arm_ip;
- unsigned long int arm_sp;
- unsigned long int arm_lr;
- unsigned long int arm_pc;
- unsigned long int arm_cpsr;
- unsigned long fault_address;
- } v21;
- struct
- {
- unsigned long int magic;
- struct pt_regs reg;
- unsigned long int trap_no;
- unsigned long int error_code;
- unsigned long int oldmask;
- } v20;
- };
- #define SIGCONTEXT_2_0_MAGIC 0x4B534154
- #endif
- #define SIGCONTEXT int _a2, int _a3, int _a4, union k_sigcontext
- #define SIGCONTEXT_EXTRA_ARGS _a2, _a3, _a4,
- #define GET_PC(ctx) ((void *)((ctx.v20.magic == SIGCONTEXT_2_0_MAGIC) ? \
- ctx.v20.reg.ARM_pc : ctx.v21.arm_pc))
- #define GET_FRAME(ctx) \
- ADVANCE_STACK_FRAME((void *)((ctx.v20.magic == SIGCONTEXT_2_0_MAGIC) ? \
- ctx.v20.reg.ARM_fp : ctx.v21.arm_fp))
- #define GET_STACK(ctx) ((void *)((ctx.v20.magic == SIGCONTEXT_2_0_MAGIC) ? \
- ctx.v20.reg.ARM_sp : ctx.v21.arm_sp))
- #define ADVANCE_STACK_FRAME(frm) \
- ((struct layout *)frm - 1)
- #define CALL_SIGHANDLER(handler, signo, ctx) \
- (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
|