diff options
author | David S. Miller <davem@davemloft.net> | 2005-07-24 22:36:26 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-07-24 22:36:26 -0400 |
commit | db7d9a4eb700be766cc9f29241483dbb1e748832 (patch) | |
tree | 48848384df15d9404ceab05867d7f4ef6b1a4bbe /include/asm-sparc64/thread_info.h | |
parent | cdd5186f753b23ab51f86679bdc4cc698ab0b893 (diff) |
[SPARC64]: Move syscall success and newchild state out of thread flags.
These two bits were accesses non-atomically from assembler
code. So, in order to eliminate any potential races resulting
from that, move these pieces of state into two bytes elsewhere
in struct thread_info.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/asm-sparc64/thread_info.h')
-rw-r--r-- | include/asm-sparc64/thread_info.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/include/asm-sparc64/thread_info.h b/include/asm-sparc64/thread_info.h index a1d25c06f92a..352d9943661a 100644 --- a/include/asm-sparc64/thread_info.h +++ b/include/asm-sparc64/thread_info.h | |||
@@ -47,7 +47,9 @@ struct thread_info { | |||
47 | struct pt_regs *kregs; | 47 | struct pt_regs *kregs; |
48 | struct exec_domain *exec_domain; | 48 | struct exec_domain *exec_domain; |
49 | int preempt_count; /* 0 => preemptable, <0 => BUG */ | 49 | int preempt_count; /* 0 => preemptable, <0 => BUG */ |
50 | int __pad; | 50 | __u8 new_child; |
51 | __u8 syscall_noerror; | ||
52 | __u16 __pad; | ||
51 | 53 | ||
52 | unsigned long *utraps; | 54 | unsigned long *utraps; |
53 | 55 | ||
@@ -87,6 +89,8 @@ struct thread_info { | |||
87 | #define TI_KREGS 0x00000028 | 89 | #define TI_KREGS 0x00000028 |
88 | #define TI_EXEC_DOMAIN 0x00000030 | 90 | #define TI_EXEC_DOMAIN 0x00000030 |
89 | #define TI_PRE_COUNT 0x00000038 | 91 | #define TI_PRE_COUNT 0x00000038 |
92 | #define TI_NEW_CHILD 0x0000003c | ||
93 | #define TI_SYS_NOERROR 0x0000003d | ||
90 | #define TI_UTRAPS 0x00000040 | 94 | #define TI_UTRAPS 0x00000040 |
91 | #define TI_REG_WINDOW 0x00000048 | 95 | #define TI_REG_WINDOW 0x00000048 |
92 | #define TI_RWIN_SPTRS 0x000003c8 | 96 | #define TI_RWIN_SPTRS 0x000003c8 |
@@ -219,10 +223,10 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
219 | #define TIF_UNALIGNED 5 /* allowed to do unaligned accesses */ | 223 | #define TIF_UNALIGNED 5 /* allowed to do unaligned accesses */ |
220 | #define TIF_NEWSIGNALS 6 /* wants new-style signals */ | 224 | #define TIF_NEWSIGNALS 6 /* wants new-style signals */ |
221 | #define TIF_32BIT 7 /* 32-bit binary */ | 225 | #define TIF_32BIT 7 /* 32-bit binary */ |
222 | #define TIF_NEWCHILD 8 /* just-spawned child process */ | 226 | /* flag bit 8 is available */ |
223 | #define TIF_SECCOMP 9 /* secure computing */ | 227 | #define TIF_SECCOMP 9 /* secure computing */ |
224 | #define TIF_SYSCALL_AUDIT 10 /* syscall auditing active */ | 228 | #define TIF_SYSCALL_AUDIT 10 /* syscall auditing active */ |
225 | #define TIF_SYSCALL_SUCCESS 11 | 229 | /* flag bit 11 is available */ |
226 | /* NOTE: Thread flags >= 12 should be ones we have no interest | 230 | /* NOTE: Thread flags >= 12 should be ones we have no interest |
227 | * in using in assembly, else we can't use the mask as | 231 | * in using in assembly, else we can't use the mask as |
228 | * an immediate value in instructions such as andcc. | 232 | * an immediate value in instructions such as andcc. |
@@ -239,10 +243,8 @@ register struct thread_info *current_thread_info_reg asm("g6"); | |||
239 | #define _TIF_UNALIGNED (1<<TIF_UNALIGNED) | 243 | #define _TIF_UNALIGNED (1<<TIF_UNALIGNED) |
240 | #define _TIF_NEWSIGNALS (1<<TIF_NEWSIGNALS) | 244 | #define _TIF_NEWSIGNALS (1<<TIF_NEWSIGNALS) |
241 | #define _TIF_32BIT (1<<TIF_32BIT) | 245 | #define _TIF_32BIT (1<<TIF_32BIT) |
242 | #define _TIF_NEWCHILD (1<<TIF_NEWCHILD) | ||
243 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) | 246 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) |
244 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) | 247 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) |
245 | #define _TIF_SYSCALL_SUCCESS (1<<TIF_SYSCALL_SUCCESS) | ||
246 | #define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING) | 248 | #define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING) |
247 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) | 249 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) |
248 | 250 | ||