📄 sigcontext.h
字号:
/* * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) * Licensed under the GPL */#ifndef __SYS_SIGCONTEXT_PPC_H#define __SYS_SIGCONTEXT_PPC_H#define DSISR_WRITE 0x02000000#define SC_FAULT_ADDR(sc) ({ \ struct sigcontext *_sc = (sc); \ long retval = -1; \ switch (_sc->regs->trap) { \ case 0x300: \ /* data exception */ \ retval = _sc->regs->dar; \ break; \ case 0x400: \ /* instruction exception */ \ retval = _sc->regs->nip; \ break; \ default: \ panic("SC_FAULT_ADDR: unhandled trap type\n"); \ } \ retval; \ })#define SC_FAULT_WRITE(sc) ({ \ struct sigcontext *_sc = (sc); \ long retval = -1; \ switch (_sc->regs->trap) { \ case 0x300: \ /* data exception */ \ retval = !!(_sc->regs->dsisr & DSISR_WRITE); \ break; \ case 0x400: \ /* instruction exception: not a write */ \ retval = 0; \ break; \ default: \ panic("SC_FAULT_ADDR: unhandled trap type\n"); \ } \ retval; \ })#define SC_IP(sc) ((sc)->regs->nip)#define SC_SP(sc) ((sc)->regs->gpr[1])#define SEGV_IS_FIXABLE(sc) (1)#endif/* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically * adjust the settings for this buffer only. This must remain at the end * of the file. * --------------------------------------------------------------------------- * Local variables: * c-file-style: "linux" * End: */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -