aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86/thread_info_64.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-x86/thread_info_64.h')
-rw-r--r--include/asm-x86/thread_info_64.h34
1 files changed, 21 insertions, 13 deletions
diff --git a/include/asm-x86/thread_info_64.h b/include/asm-x86/thread_info_64.h
index 7f6ee68f0002..9b531ea015a8 100644
--- a/include/asm-x86/thread_info_64.h
+++ b/include/asm-x86/thread_info_64.h
@@ -21,7 +21,7 @@
21#ifndef __ASSEMBLY__ 21#ifndef __ASSEMBLY__
22struct task_struct; 22struct task_struct;
23struct exec_domain; 23struct exec_domain;
24#include <asm/mmsegment.h> 24#include <asm/processor.h>
25 25
26struct thread_info { 26struct thread_info {
27 struct task_struct *task; /* main task structure */ 27 struct task_struct *task; /* main task structure */
@@ -33,6 +33,9 @@ struct thread_info {
33 33
34 mm_segment_t addr_limit; 34 mm_segment_t addr_limit;
35 struct restart_block restart_block; 35 struct restart_block restart_block;
36#ifdef CONFIG_IA32_EMULATION
37 void __user *sysenter_return;
38#endif
36}; 39};
37#endif 40#endif
38 41
@@ -74,20 +77,14 @@ static inline struct thread_info *stack_thread_info(void)
74 77
75/* thread information allocation */ 78/* thread information allocation */
76#ifdef CONFIG_DEBUG_STACK_USAGE 79#ifdef CONFIG_DEBUG_STACK_USAGE
77#define alloc_thread_info(tsk) \ 80#define THREAD_FLAGS (GFP_KERNEL | __GFP_ZERO)
78 ({ \
79 struct thread_info *ret; \
80 \
81 ret = ((struct thread_info *) __get_free_pages(GFP_KERNEL,THREAD_ORDER)); \
82 if (ret) \
83 memset(ret, 0, THREAD_SIZE); \
84 ret; \
85 })
86#else 81#else
87#define alloc_thread_info(tsk) \ 82#define THREAD_FLAGS GFP_KERNEL
88 ((struct thread_info *) __get_free_pages(GFP_KERNEL,THREAD_ORDER))
89#endif 83#endif
90 84
85#define alloc_thread_info(tsk) \
86 ((struct thread_info *) __get_free_pages(THREAD_FLAGS, THREAD_ORDER))
87
91#define free_thread_info(ti) free_pages((unsigned long) (ti), THREAD_ORDER) 88#define free_thread_info(ti) free_pages((unsigned long) (ti), THREAD_ORDER)
92 89
93#else /* !__ASSEMBLY__ */ 90#else /* !__ASSEMBLY__ */
@@ -124,6 +121,10 @@ static inline struct thread_info *stack_thread_info(void)
124#define TIF_DEBUG 21 /* uses debug registers */ 121#define TIF_DEBUG 21 /* uses debug registers */
125#define TIF_IO_BITMAP 22 /* uses I/O bitmap */ 122#define TIF_IO_BITMAP 22 /* uses I/O bitmap */
126#define TIF_FREEZE 23 /* is freezing for suspend */ 123#define TIF_FREEZE 23 /* is freezing for suspend */
124#define TIF_FORCED_TF 24 /* true if TF in eflags artificially */
125#define TIF_DEBUGCTLMSR 25 /* uses thread_struct.debugctlmsr */
126#define TIF_DS_AREA_MSR 25 /* uses thread_struct.ds_area_msr */
127#define TIF_BTS_TRACE_TS 26 /* record scheduling event timestamps */
127 128
128#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) 129#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
129#define _TIF_SIGPENDING (1<<TIF_SIGPENDING) 130#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
@@ -141,6 +142,10 @@ static inline struct thread_info *stack_thread_info(void)
141#define _TIF_DEBUG (1<<TIF_DEBUG) 142#define _TIF_DEBUG (1<<TIF_DEBUG)
142#define _TIF_IO_BITMAP (1<<TIF_IO_BITMAP) 143#define _TIF_IO_BITMAP (1<<TIF_IO_BITMAP)
143#define _TIF_FREEZE (1<<TIF_FREEZE) 144#define _TIF_FREEZE (1<<TIF_FREEZE)
145#define _TIF_FORCED_TF (1<<TIF_FORCED_TF)
146#define _TIF_DEBUGCTLMSR (1<<TIF_DEBUGCTLMSR)
147#define _TIF_DS_AREA_MSR (1<<TIF_DS_AREA_MSR)
148#define _TIF_BTS_TRACE_TS (1<<TIF_BTS_TRACE_TS)
144 149
145/* work to do on interrupt/exception return */ 150/* work to do on interrupt/exception return */
146#define _TIF_WORK_MASK \ 151#define _TIF_WORK_MASK \
@@ -152,7 +157,10 @@ static inline struct thread_info *stack_thread_info(void)
152 (_TIF_SIGPENDING|_TIF_SINGLESTEP|_TIF_MCE_NOTIFY|_TIF_HRTICK_RESCHED) 157 (_TIF_SIGPENDING|_TIF_SINGLESTEP|_TIF_MCE_NOTIFY|_TIF_HRTICK_RESCHED)
153 158
154/* flags to check in __switch_to() */ 159/* flags to check in __switch_to() */
155#define _TIF_WORK_CTXSW (_TIF_DEBUG|_TIF_IO_BITMAP) 160#define _TIF_WORK_CTXSW \
161 (_TIF_IO_BITMAP|_TIF_DEBUGCTLMSR|_TIF_DS_AREA_MSR|_TIF_BTS_TRACE_TS)
162#define _TIF_WORK_CTXSW_PREV _TIF_WORK_CTXSW
163#define _TIF_WORK_CTXSW_NEXT (_TIF_WORK_CTXSW|_TIF_DEBUG)
156 164
157#define PREEMPT_ACTIVE 0x10000000 165#define PREEMPT_ACTIVE 0x10000000
158 166