]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - include/asm-powerpc/thread_info.h
Merge master.kernel.org:/pub/scm/linux/kernel/git/tglx/hrtimer-2.6
[karo-tx-linux.git] / include / asm-powerpc / thread_info.h
index ab17db79f69d8474cb7b8915c974dbf71b60594e..7e09d7cda933c2919d16c51adcec0d30f24d39ad 100644 (file)
@@ -37,8 +37,7 @@ struct thread_info {
        int             preempt_count;          /* 0 => preemptable,
                                                   <0 => BUG */
        struct restart_block restart_block;
-       /* set by force_successful_syscall_return */
-       unsigned char   syscall_noerror;
+       void *nvgprs_frame;
        /* low level flags - has atomic operations done on it */
        unsigned long   flags ____cacheline_aligned_in_smp;
 };
@@ -65,30 +64,31 @@ struct thread_info {
 
 /* thread information allocation */
 
-#ifdef CONFIG_DEBUG_STACK_USAGE
-#define THREAD_INFO_GFP                GFP_KERNEL | __GFP_ZERO
-#else
-#define THREAD_INFO_GFP                GFP_KERNEL
-#endif
-
 #if THREAD_SHIFT >= PAGE_SHIFT
 
 #define THREAD_ORDER   (THREAD_SHIFT - PAGE_SHIFT)
 
+#ifdef CONFIG_DEBUG_STACK_USAGE
+#define alloc_thread_info(tsk) \
+       ((struct thread_info *)__get_free_pages(GFP_KERNEL | \
+               __GFP_ZERO, THREAD_ORDER))
+#else
 #define alloc_thread_info(tsk) \
-       ((struct thread_info *)__get_free_pages(THREAD_INFO_GFP, THREAD_ORDER))
+       ((struct thread_info *)__get_free_pages(GFP_KERNEL, THREAD_ORDER))
+#endif
 #define free_thread_info(ti)   free_pages((unsigned long)ti, THREAD_ORDER)
 
 #else /* THREAD_SHIFT < PAGE_SHIFT */
 
-#define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, THREAD_INFO_GFP)
+#ifdef CONFIG_DEBUG_STACK_USAGE
+#define alloc_thread_info(tsk) kzalloc(THREAD_SIZE, GFP_KERNEL)
+#else
+#define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL)
+#endif
 #define free_thread_info(ti)   kfree(ti)
 
 #endif /* THREAD_SHIFT < PAGE_SHIFT */
 
-#define get_thread_info(ti)    get_task_struct((ti)->task)
-#define put_thread_info(ti)    put_task_struct((ti)->task)
-
 /* how to get the thread information struct from C */
 static inline struct thread_info *current_thread_info(void)
 {
@@ -119,6 +119,9 @@ static inline struct thread_info *current_thread_info(void)
 #define TIF_SINGLESTEP         9       /* singlestepping active */
 #define TIF_MEMDIE             10
 #define TIF_SECCOMP            11      /* secure computing */
+#define TIF_RESTOREALL         12      /* Restore all regs (implies NOERROR) */
+#define TIF_SAVE_NVGPRS                13      /* Save r14-r31 in signal frame */
+#define TIF_NOERROR            14      /* Force successful syscall return */
 
 /* as above, but as bit values */
 #define _TIF_SYSCALL_TRACE     (1<<TIF_SYSCALL_TRACE)
@@ -132,10 +135,14 @@ static inline struct thread_info *current_thread_info(void)
 #define _TIF_SYSCALL_AUDIT     (1<<TIF_SYSCALL_AUDIT)
 #define _TIF_SINGLESTEP                (1<<TIF_SINGLESTEP)
 #define _TIF_SECCOMP           (1<<TIF_SECCOMP)
+#define _TIF_RESTOREALL                (1<<TIF_RESTOREALL)
+#define _TIF_SAVE_NVGPRS       (1<<TIF_SAVE_NVGPRS)
+#define _TIF_NOERROR           (1<<TIF_NOERROR)
 #define _TIF_SYSCALL_T_OR_A    (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP)
 
 #define _TIF_USER_WORK_MASK    (_TIF_NOTIFY_RESUME | _TIF_SIGPENDING | \
-                                _TIF_NEED_RESCHED)
+                                _TIF_NEED_RESCHED | _TIF_RESTOREALL)
+#define _TIF_PERSYSCALL_MASK   (_TIF_RESTOREALL|_TIF_NOERROR|_TIF_SAVE_NVGPRS)
 
 #endif /* __KERNEL__ */