⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ptrace.h

📁 linux内核源码
💻 H
字号:
/*  * Licensed under the GPL */#ifndef __SYS_PTRACE_PPC_H#define __SYS_PTRACE_PPC_H#include "linux/types.h"/* the following taken from <asm-ppc/ptrace.h> */#ifdef CONFIG_PPC64#define PPC_REG unsigned long /*long*/#else#define PPC_REG unsigned long#endifstruct sys_pt_regs_s {	PPC_REG gpr[32];	PPC_REG nip;	PPC_REG msr;	PPC_REG orig_gpr3;	/* Used for restarting system calls */	PPC_REG ctr;	PPC_REG link;	PPC_REG xer;	PPC_REG ccr;	PPC_REG mq;		/* 601 only (not used at present) */				/* Used on APUS to hold IPL value. */	PPC_REG trap;		/* Reason for being here */	PPC_REG dar;		/* Fault registers */	PPC_REG dsisr;	PPC_REG result; 	/* Result of a system call */};#define NUM_REGS (sizeof(struct sys_pt_regs_s) / sizeof(PPC_REG))struct sys_pt_regs {    PPC_REG regs[sizeof(struct sys_pt_regs_s) / sizeof(PPC_REG)];};#define UM_MAX_REG (PT_FPR0)#define UM_MAX_REG_OFFSET (UM_MAX_REG * sizeof(PPC_REG))#define EMPTY_REGS { { [ 0 ... NUM_REGS - 1] = 0 } }#define UM_REG(r, n) ((r)->regs[n])#define UM_SYSCALL_RET(r) UM_REG(r, PT_R3)#define UM_SP(r) UM_REG(r, PT_R1)#define UM_IP(r) UM_REG(r, PT_NIP)#define UM_ELF_ZERO(r) UM_REG(r, PT_FPSCR)#define UM_SYSCALL_NR(r) UM_REG(r, PT_R0)#define UM_SYSCALL_ARG1(r) UM_REG(r, PT_ORIG_R3)#define UM_SYSCALL_ARG2(r) UM_REG(r, PT_R4)#define UM_SYSCALL_ARG3(r) UM_REG(r, PT_R5)#define UM_SYSCALL_ARG4(r) UM_REG(r, PT_R6)#define UM_SYSCALL_ARG5(r) UM_REG(r, PT_R7)#define UM_SYSCALL_ARG6(r) UM_REG(r, PT_R8)#define UM_SYSCALL_NR_OFFSET (PT_R0 * sizeof(PPC_REG))#define UM_SYSCALL_RET_OFFSET (PT_R3 * sizeof(PPC_REG))#define UM_SYSCALL_ARG1_OFFSET (PT_R3 * sizeof(PPC_REG))#define UM_SYSCALL_ARG2_OFFSET (PT_R4 * sizeof(PPC_REG))#define UM_SYSCALL_ARG3_OFFSET (PT_R5 * sizeof(PPC_REG))#define UM_SYSCALL_ARG4_OFFSET (PT_R6 * sizeof(PPC_REG))#define UM_SYSCALL_ARG5_OFFSET (PT_R7 * sizeof(PPC_REG))#define UM_SYSCALL_ARG6_OFFSET (PT_R8 * sizeof(PPC_REG))#define UM_SP_OFFSET (PT_R1 * sizeof(PPC_REG))#define UM_IP_OFFSET (PT_NIP * sizeof(PPC_REG))#define UM_ELF_ZERO_OFFSET (PT_R3 * sizeof(PPC_REG))#define UM_SET_SYSCALL_RETURN(_regs, result)	        \do {                                                    \        if (result < 0) {				\		(_regs)->regs[PT_CCR] |= 0x10000000;	\		UM_SYSCALL_RET((_regs)) = -result;	\        } else {					\		UM_SYSCALL_RET((_regs)) = result;	\        }                                               \} while(0)extern void shove_aux_table(unsigned long sp);#define UM_FIX_EXEC_STACK(sp) shove_aux_table(sp);/* These aren't actually defined.  The undefs are just to make sure * everyone's clear on the concept. */#undef UML_HAVE_GETREGS#undef UML_HAVE_GETFPREGS#undef UML_HAVE_SETREGS#undef UML_HAVE_SETFPREGS#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 + -