diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-11 12:55:48 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-11 12:55:48 -0400 |
commit | 854a989546c12683186c84601d4902591dddd8a9 (patch) | |
tree | 143362c88a48958bdf68396379c4401f6caa82ae /include | |
parent | 633331f389c2d9c631371d09a54626a5e4749452 (diff) | |
parent | 28e6103665301ce60634e8a77f0b657c6cc099de (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: Fix debugger syscall restart interactions.
sparc: Fix ptrace() detach.
sparc32: Don't twiddle PT_DTRACE in exec.
sparc video: remove open boot prom code
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-sparc/psr.h | 1 | ||||
-rw-r--r-- | include/asm-sparc/ptrace.h | 11 | ||||
-rw-r--r-- | include/asm-sparc/signal.h | 8 | ||||
-rw-r--r-- | include/asm-sparc64/psrcompat.h | 2 | ||||
-rw-r--r-- | include/asm-sparc64/pstate.h | 1 | ||||
-rw-r--r-- | include/asm-sparc64/ptrace.h | 11 | ||||
-rw-r--r-- | include/asm-sparc64/signal.h | 8 | ||||
-rw-r--r-- | include/asm-sparc64/ttable.h | 7 |
8 files changed, 26 insertions, 23 deletions
diff --git a/include/asm-sparc/psr.h b/include/asm-sparc/psr.h index 19c978051118..213970477a24 100644 --- a/include/asm-sparc/psr.h +++ b/include/asm-sparc/psr.h | |||
@@ -25,6 +25,7 @@ | |||
25 | #define PSR_PIL 0x00000f00 /* processor interrupt level */ | 25 | #define PSR_PIL 0x00000f00 /* processor interrupt level */ |
26 | #define PSR_EF 0x00001000 /* enable floating point */ | 26 | #define PSR_EF 0x00001000 /* enable floating point */ |
27 | #define PSR_EC 0x00002000 /* enable co-processor */ | 27 | #define PSR_EC 0x00002000 /* enable co-processor */ |
28 | #define PSR_SYSCALL 0x00004000 /* inside of a syscall */ | ||
28 | #define PSR_LE 0x00008000 /* SuperSparcII little-endian */ | 29 | #define PSR_LE 0x00008000 /* SuperSparcII little-endian */ |
29 | #define PSR_ICC 0x00f00000 /* integer condition codes */ | 30 | #define PSR_ICC 0x00f00000 /* integer condition codes */ |
30 | #define PSR_C 0x00100000 /* carry bit */ | 31 | #define PSR_C 0x00100000 /* carry bit */ |
diff --git a/include/asm-sparc/ptrace.h b/include/asm-sparc/ptrace.h index 8201a7b29d49..6b5e6ce5043c 100644 --- a/include/asm-sparc/ptrace.h +++ b/include/asm-sparc/ptrace.h | |||
@@ -39,6 +39,16 @@ struct pt_regs { | |||
39 | #define UREG_FP UREG_I6 | 39 | #define UREG_FP UREG_I6 |
40 | #define UREG_RETPC UREG_I7 | 40 | #define UREG_RETPC UREG_I7 |
41 | 41 | ||
42 | static inline bool pt_regs_is_syscall(struct pt_regs *regs) | ||
43 | { | ||
44 | return (regs->psr & PSR_SYSCALL); | ||
45 | } | ||
46 | |||
47 | static inline bool pt_regs_clear_syscall(struct pt_regs *regs) | ||
48 | { | ||
49 | return (regs->psr &= ~PSR_SYSCALL); | ||
50 | } | ||
51 | |||
42 | /* A register window */ | 52 | /* A register window */ |
43 | struct reg_window { | 53 | struct reg_window { |
44 | unsigned long locals[8]; | 54 | unsigned long locals[8]; |
@@ -149,6 +159,7 @@ extern void show_regs(struct pt_regs *); | |||
149 | #define SF_XXARG 0x5c | 159 | #define SF_XXARG 0x5c |
150 | 160 | ||
151 | /* Stuff for the ptrace system call */ | 161 | /* Stuff for the ptrace system call */ |
162 | #define PTRACE_SPARC_DETACH 11 | ||
152 | #define PTRACE_GETREGS 12 | 163 | #define PTRACE_GETREGS 12 |
153 | #define PTRACE_SETREGS 13 | 164 | #define PTRACE_SETREGS 13 |
154 | #define PTRACE_GETFPREGS 14 | 165 | #define PTRACE_GETFPREGS 14 |
diff --git a/include/asm-sparc/signal.h b/include/asm-sparc/signal.h index d03a21c97abb..94071c75701f 100644 --- a/include/asm-sparc/signal.h +++ b/include/asm-sparc/signal.h | |||
@@ -199,13 +199,7 @@ typedef struct sigaltstack { | |||
199 | size_t ss_size; | 199 | size_t ss_size; |
200 | } stack_t; | 200 | } stack_t; |
201 | 201 | ||
202 | struct sparc_deliver_cookie { | 202 | #define ptrace_signal_deliver(regs, cookie) do { } while (0) |
203 | int restart_syscall; | ||
204 | unsigned long orig_i0; | ||
205 | }; | ||
206 | |||
207 | struct pt_regs; | ||
208 | extern void ptrace_signal_deliver(struct pt_regs *regs, void *cookie); | ||
209 | 203 | ||
210 | #endif /* !(__KERNEL__) */ | 204 | #endif /* !(__KERNEL__) */ |
211 | 205 | ||
diff --git a/include/asm-sparc64/psrcompat.h b/include/asm-sparc64/psrcompat.h index 5590ce6bd076..3614ca04753f 100644 --- a/include/asm-sparc64/psrcompat.h +++ b/include/asm-sparc64/psrcompat.h | |||
@@ -12,6 +12,7 @@ | |||
12 | #define PSR_PIL 0x00000f00 /* processor interrupt level */ | 12 | #define PSR_PIL 0x00000f00 /* processor interrupt level */ |
13 | #define PSR_EF 0x00001000 /* enable floating point */ | 13 | #define PSR_EF 0x00001000 /* enable floating point */ |
14 | #define PSR_EC 0x00002000 /* enable co-processor */ | 14 | #define PSR_EC 0x00002000 /* enable co-processor */ |
15 | #define PSR_SYSCALL 0x00004000 /* inside of a syscall */ | ||
15 | #define PSR_LE 0x00008000 /* SuperSparcII little-endian */ | 16 | #define PSR_LE 0x00008000 /* SuperSparcII little-endian */ |
16 | #define PSR_ICC 0x00f00000 /* integer condition codes */ | 17 | #define PSR_ICC 0x00f00000 /* integer condition codes */ |
17 | #define PSR_C 0x00100000 /* carry bit */ | 18 | #define PSR_C 0x00100000 /* carry bit */ |
@@ -30,6 +31,7 @@ static inline unsigned int tstate_to_psr(unsigned long tstate) | |||
30 | PSR_S | | 31 | PSR_S | |
31 | ((tstate & TSTATE_ICC) >> 12) | | 32 | ((tstate & TSTATE_ICC) >> 12) | |
32 | ((tstate & TSTATE_XCC) >> 20) | | 33 | ((tstate & TSTATE_XCC) >> 20) | |
34 | ((tstate & TSTATE_SYSCALL) ? PSR_SYSCALL : 0) | | ||
33 | PSR_V8PLUS); | 35 | PSR_V8PLUS); |
34 | } | 36 | } |
35 | 37 | ||
diff --git a/include/asm-sparc64/pstate.h b/include/asm-sparc64/pstate.h index f3c45484c636..949aebaf991d 100644 --- a/include/asm-sparc64/pstate.h +++ b/include/asm-sparc64/pstate.h | |||
@@ -62,6 +62,7 @@ | |||
62 | #define TSTATE_PRIV _AC(0x0000000000000400,UL) /* Privilege. */ | 62 | #define TSTATE_PRIV _AC(0x0000000000000400,UL) /* Privilege. */ |
63 | #define TSTATE_IE _AC(0x0000000000000200,UL) /* Interrupt Enable. */ | 63 | #define TSTATE_IE _AC(0x0000000000000200,UL) /* Interrupt Enable. */ |
64 | #define TSTATE_AG _AC(0x0000000000000100,UL) /* Alternate Globals.*/ | 64 | #define TSTATE_AG _AC(0x0000000000000100,UL) /* Alternate Globals.*/ |
65 | #define TSTATE_SYSCALL _AC(0x0000000000000020,UL) /* in syscall trap */ | ||
65 | #define TSTATE_CWP _AC(0x000000000000001f,UL) /* Curr Win-Pointer. */ | 66 | #define TSTATE_CWP _AC(0x000000000000001f,UL) /* Curr Win-Pointer. */ |
66 | 67 | ||
67 | /* Floating-Point Registers State Register. | 68 | /* Floating-Point Registers State Register. |
diff --git a/include/asm-sparc64/ptrace.h b/include/asm-sparc64/ptrace.h index 714b81956f32..90972a5ada59 100644 --- a/include/asm-sparc64/ptrace.h +++ b/include/asm-sparc64/ptrace.h | |||
@@ -42,16 +42,14 @@ static inline int pt_regs_trap_type(struct pt_regs *regs) | |||
42 | return regs->magic & 0x1ff; | 42 | return regs->magic & 0x1ff; |
43 | } | 43 | } |
44 | 44 | ||
45 | static inline int pt_regs_clear_trap_type(struct pt_regs *regs) | 45 | static inline bool pt_regs_is_syscall(struct pt_regs *regs) |
46 | { | 46 | { |
47 | return regs->magic &= ~0x1ff; | 47 | return (regs->tstate & TSTATE_SYSCALL); |
48 | } | 48 | } |
49 | 49 | ||
50 | static inline bool pt_regs_is_syscall(struct pt_regs *regs) | 50 | static inline bool pt_regs_clear_syscall(struct pt_regs *regs) |
51 | { | 51 | { |
52 | int tt = pt_regs_trap_type(regs); | 52 | return (regs->tstate &= ~TSTATE_SYSCALL); |
53 | |||
54 | return (tt == 0x110 || tt == 0x111 || tt == 0x16d); | ||
55 | } | 53 | } |
56 | 54 | ||
57 | struct pt_regs32 { | 55 | struct pt_regs32 { |
@@ -298,6 +296,7 @@ extern void __show_regs(struct pt_regs *); | |||
298 | #define SF_XXARG 0x5c | 296 | #define SF_XXARG 0x5c |
299 | 297 | ||
300 | /* Stuff for the ptrace system call */ | 298 | /* Stuff for the ptrace system call */ |
299 | #define PTRACE_SPARC_DETACH 11 | ||
301 | #define PTRACE_GETREGS 12 | 300 | #define PTRACE_GETREGS 12 |
302 | #define PTRACE_SETREGS 13 | 301 | #define PTRACE_SETREGS 13 |
303 | #define PTRACE_GETFPREGS 14 | 302 | #define PTRACE_GETFPREGS 14 |
diff --git a/include/asm-sparc64/signal.h b/include/asm-sparc64/signal.h index fa6f467389db..c49f32d38707 100644 --- a/include/asm-sparc64/signal.h +++ b/include/asm-sparc64/signal.h | |||
@@ -186,13 +186,7 @@ struct k_sigaction { | |||
186 | void __user *ka_restorer; | 186 | void __user *ka_restorer; |
187 | }; | 187 | }; |
188 | 188 | ||
189 | struct signal_deliver_cookie { | 189 | #define ptrace_signal_deliver(regs, cookie) do { } while (0) |
190 | int restart_syscall; | ||
191 | unsigned long orig_i0; | ||
192 | }; | ||
193 | |||
194 | struct pt_regs; | ||
195 | extern void ptrace_signal_deliver(struct pt_regs *regs, void *cookie); | ||
196 | 190 | ||
197 | #endif /* !(__KERNEL__) */ | 191 | #endif /* !(__KERNEL__) */ |
198 | 192 | ||
diff --git a/include/asm-sparc64/ttable.h b/include/asm-sparc64/ttable.h index 1b55538b944f..52d67d394107 100644 --- a/include/asm-sparc64/ttable.h +++ b/include/asm-sparc64/ttable.h | |||
@@ -91,13 +91,14 @@ | |||
91 | nop; | 91 | nop; |
92 | 92 | ||
93 | #define SYSCALL_TRAP(routine, systbl) \ | 93 | #define SYSCALL_TRAP(routine, systbl) \ |
94 | rdpr %pil, %g2; \ | ||
95 | mov TSTATE_SYSCALL, %g3; \ | ||
94 | sethi %hi(109f), %g7; \ | 96 | sethi %hi(109f), %g7; \ |
95 | ba,pt %xcc, etrap; \ | 97 | ba,pt %xcc, etrap_syscall; \ |
96 | 109: or %g7, %lo(109b), %g7; \ | 98 | 109: or %g7, %lo(109b), %g7; \ |
97 | sethi %hi(systbl), %l7; \ | 99 | sethi %hi(systbl), %l7; \ |
98 | ba,pt %xcc, routine; \ | 100 | ba,pt %xcc, routine; \ |
99 | or %l7, %lo(systbl), %l7; \ | 101 | or %l7, %lo(systbl), %l7; |
100 | nop; nop; | ||
101 | 102 | ||
102 | #define TRAP_UTRAP(handler,lvl) \ | 103 | #define TRAP_UTRAP(handler,lvl) \ |
103 | mov handler, %g3; \ | 104 | mov handler, %g3; \ |