Path: blob/master/arch/um/sys-ppc/shared/sysdep/sigcontext.h
10820 views
/*1* Copyright (C) 2000 Jeff Dike ([email protected])2* Licensed under the GPL3*/45#ifndef __SYS_SIGCONTEXT_PPC_H6#define __SYS_SIGCONTEXT_PPC_H78#define DSISR_WRITE 0x02000000910#define SC_FAULT_ADDR(sc) ({ \11struct sigcontext *_sc = (sc); \12long retval = -1; \13switch (_sc->regs->trap) { \14case 0x300: \15/* data exception */ \16retval = _sc->regs->dar; \17break; \18case 0x400: \19/* instruction exception */ \20retval = _sc->regs->nip; \21break; \22default: \23panic("SC_FAULT_ADDR: unhandled trap type\n"); \24} \25retval; \26})2728#define SC_FAULT_WRITE(sc) ({ \29struct sigcontext *_sc = (sc); \30long retval = -1; \31switch (_sc->regs->trap) { \32case 0x300: \33/* data exception */ \34retval = !!(_sc->regs->dsisr & DSISR_WRITE); \35break; \36case 0x400: \37/* instruction exception: not a write */ \38retval = 0; \39break; \40default: \41panic("SC_FAULT_ADDR: unhandled trap type\n"); \42} \43retval; \44})4546#define SC_IP(sc) ((sc)->regs->nip)47#define SC_SP(sc) ((sc)->regs->gpr[1])48#define SEGV_IS_FIXABLE(sc) (1)4950#endif51525354