Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.22 63 lines 1.5 kB view raw
1#ifndef _I386_PTRACE_H 2#define _I386_PTRACE_H 3 4#include <asm/ptrace-abi.h> 5 6/* this struct defines the way the registers are stored on the 7 stack during a system call. */ 8 9struct pt_regs { 10 long ebx; 11 long ecx; 12 long edx; 13 long esi; 14 long edi; 15 long ebp; 16 long eax; 17 int xds; 18 int xes; 19 int xfs; 20 /* int xgs; */ 21 long orig_eax; 22 long eip; 23 int xcs; 24 long eflags; 25 long esp; 26 int xss; 27}; 28 29#ifdef __KERNEL__ 30 31#include <asm/vm86.h> 32#include <asm/segment.h> 33 34struct task_struct; 35extern void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, int error_code); 36 37/* 38 * user_mode_vm(regs) determines whether a register set came from user mode. 39 * This is true if V8086 mode was enabled OR if the register set was from 40 * protected mode with RPL-3 CS value. This tricky test checks that with 41 * one comparison. Many places in the kernel can bypass this full check 42 * if they have already ruled out V8086 mode, so user_mode(regs) can be used. 43 */ 44static inline int user_mode(struct pt_regs *regs) 45{ 46 return (regs->xcs & SEGMENT_RPL_MASK) == USER_RPL; 47} 48static inline int user_mode_vm(struct pt_regs *regs) 49{ 50 return ((regs->xcs & SEGMENT_RPL_MASK) | (regs->eflags & VM_MASK)) >= USER_RPL; 51} 52static inline int v8086_mode(struct pt_regs *regs) 53{ 54 return (regs->eflags & VM_MASK); 55} 56 57#define instruction_pointer(regs) ((regs)->eip) 58#define regs_return_value(regs) ((regs)->eax) 59 60extern unsigned long profile_pc(struct pt_regs *regs); 61#endif /* __KERNEL__ */ 62 63#endif