diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-28 09:45:57 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-28 09:45:57 -0700 |
commit | e945e849e18006c131fe59252ab920c6b5f7959c (patch) | |
tree | a86b1a299c5cebed14889fb638cb6808417b5f4a /include/asm-sparc64/ptrace.h | |
parent | 77a50df2b14c8d3ee3c58c21c4a0e0157570df09 (diff) | |
parent | 194f1a68b93e959ede6ec363db4714e630bdbb6a (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
sparc: video drivers: add facility level
sparc: tcx.c make tcx_init and tcx_exit static
sparc: ffb.c make ffb_init and ffb_exit static
sparc: cg14.c make cg14_init and cg15_exit static
sparc: bw2.c fix bw2_exit
sparc64: Fix accidental syscall restart on child return from clone/fork/vfork.
sparc64: Clean up handling of pt_regs trap type encoding.
sparc: Remove old style signal frame support.
sparc64: Kill bogus RT_ALIGNEDSZ macro from signal.c
sparc: sunzilog.c remove unused argument
sparc: fix drivers/video/tcx.c warning
sparc64: Kill unused local ISA bus layer.
input: Rewrite sparcspkr device probing.
sparc64: Do not ignore 'pmu' device ranges.
sparc64: Kill ISA_FLOPPY_WORKS code.
sparc64: Kill CONFIG_SPARC32_COMPAT
sparc64: Cleanups and corrections for arch/sparc64/Kconfig
sparc64: Fix wedged irq regression.
Diffstat (limited to 'include/asm-sparc64/ptrace.h')
-rw-r--r-- | include/asm-sparc64/ptrace.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/include/asm-sparc64/ptrace.h b/include/asm-sparc64/ptrace.h index b4b951d570b..714b81956f3 100644 --- a/include/asm-sparc64/ptrace.h +++ b/include/asm-sparc64/ptrace.h @@ -1,4 +1,3 @@ -/* $Id: ptrace.h,v 1.14 2002/02/09 19:49:32 davem Exp $ */ #ifndef _SPARC64_PTRACE_H #define _SPARC64_PTRACE_H @@ -8,10 +7,15 @@ * stack during a system call and basically all traps. */ +/* This magic value must have the low 9 bits clear, + * as that is where we encode the %tt value, see below. + */ #define PT_REGS_MAGIC 0x57ac6c00 #ifndef __ASSEMBLY__ +#include <linux/types.h> + struct pt_regs { unsigned long u_regs[16]; /* globals and ins */ unsigned long tstate; @@ -33,6 +37,23 @@ struct pt_regs { unsigned int magic; }; +static inline int pt_regs_trap_type(struct pt_regs *regs) +{ + return regs->magic & 0x1ff; +} + +static inline int pt_regs_clear_trap_type(struct pt_regs *regs) +{ + return regs->magic &= ~0x1ff; +} + +static inline bool pt_regs_is_syscall(struct pt_regs *regs) +{ + int tt = pt_regs_trap_type(regs); + + return (tt == 0x110 || tt == 0x111 || tt == 0x16d); +} + struct pt_regs32 { unsigned int psr; unsigned int pc; |