Blame view

arch/mips/include/asm/thread_info.h 5.06 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
  /* thread_info.h: MIPS low-level thread information
   *
   * Copyright (C) 2002  David Howells (dhowells@redhat.com)
   * - Incorporating suggestions made by Linus Torvalds and Dave Miller
   */
  
  #ifndef _ASM_THREAD_INFO_H
  #define _ASM_THREAD_INFO_H
  
  #ifdef __KERNEL__
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  
  #ifndef __ASSEMBLY__
  
  #include <asm/processor.h>
  
  /*
   * low level task data that entry.S needs immediate access to
   * - this struct should fit entirely inside of one cache line
   * - this struct shares the supervisor stack pages
   * - if the contents of this structure are changed, the assembly constants
   *   must also be changed
   */
  struct thread_info {
  	struct task_struct	*task;		/* main task structure */
  	struct exec_domain	*exec_domain;	/* execution domain */
  	unsigned long		flags;		/* low level flags */
3c37026d4   Ralf Baechle   NPTL, round one.
27
  	unsigned long		tp_value;	/* thread pointer */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
28
  	__u32			cpu;		/* current CPU */
dcd497f99   Jesper Juhl   [PATCH] streamlin...
29
  	int			preempt_count;	/* 0 => preemptable, <0 => BUG */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
30
31
  
  	mm_segment_t		addr_limit;	/* thread address space:
a3dddd560   Ralf Baechle   [MIPS] War on whi...
32
  						   0-0xBFFFFFFF for user-thead
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
33
34
35
  						   0-0xFFFFFFFF for kernel-thread
  						*/
  	struct restart_block	restart_block;
937a80157   Ralf Baechle   [MIPS] Complete f...
36
  	struct pt_regs		*regs;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
37
38
39
40
  };
  
  /*
   * macros/functions for gaining access to the thread information structure
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
41
42
43
44
45
   */
  #define INIT_THREAD_INFO(tsk)			\
  {						\
  	.task		= &tsk,			\
  	.exec_domain	= &default_exec_domain,	\
293c5bd13   Ralf Baechle   [MIPS] Fixup secu...
46
  	.flags		= _TIF_FIXADE,		\
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
47
  	.cpu		= 0,			\
c99e6efe1   Peter Zijlstra   sched: INIT_PREEM...
48
  	.preempt_count	= INIT_PREEMPT_COUNT,	\
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  	.addr_limit	= KERNEL_DS,		\
  	.restart_block	= {			\
  		.fn = do_no_restart_syscall,	\
  	},					\
  }
  
  #define init_thread_info	(init_thread_union.thread_info)
  #define init_stack		(init_thread_union.stack)
  
  /* How to get the thread information struct from C.  */
  register struct thread_info *__current_thread_info __asm__("$28");
  #define current_thread_info()  __current_thread_info
  
  /* thread information allocation */
875d43e72   Ralf Baechle   [PATCH] mips: cle...
63
  #if defined(CONFIG_PAGE_SIZE_4KB) && defined(CONFIG_32BIT)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
64
65
  #define THREAD_SIZE_ORDER (1)
  #endif
875d43e72   Ralf Baechle   [PATCH] mips: cle...
66
  #if defined(CONFIG_PAGE_SIZE_4KB) && defined(CONFIG_64BIT)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
67
68
69
70
71
72
73
74
  #define THREAD_SIZE_ORDER (2)
  #endif
  #ifdef CONFIG_PAGE_SIZE_8KB
  #define THREAD_SIZE_ORDER (1)
  #endif
  #ifdef CONFIG_PAGE_SIZE_16KB
  #define THREAD_SIZE_ORDER (0)
  #endif
c52399bec   Ralf Baechle   MIPS: Cavium: Add...
75
76
77
  #ifdef CONFIG_PAGE_SIZE_32KB
  #define THREAD_SIZE_ORDER (0)
  #endif
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
78
79
80
81
82
83
  #ifdef CONFIG_PAGE_SIZE_64KB
  #define THREAD_SIZE_ORDER (0)
  #endif
  
  #define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER)
  #define THREAD_MASK (THREAD_SIZE - 1UL)
334c86c49   From: jiang.adam@gmail.com   MIPS: IRQ: Add st...
84
  #define STACK_WARN	(THREAD_SIZE / 8)
b69c49b78   FUJITA Tomonori   clean up duplicat...
85
  #define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
86
  #ifdef CONFIG_DEBUG_STACK_USAGE
b6a84016b   Eric Dumazet   mm: NUMA aware al...
87
88
  #define alloc_thread_info_node(tsk, node) \
  		kzalloc_node(THREAD_SIZE, GFP_KERNEL, node)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
89
  #else
b6a84016b   Eric Dumazet   mm: NUMA aware al...
90
91
  #define alloc_thread_info_node(tsk, node) \
  		kmalloc_node(THREAD_SIZE, GFP_KERNEL, node)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
92
93
94
  #endif
  
  #define free_thread_info(info) kfree(info)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
95
96
97
98
99
100
101
102
103
104
105
106
  
  #endif /* !__ASSEMBLY__ */
  
  #define PREEMPT_ACTIVE		0x10000000
  
  /*
   * thread information flags
   * - these are process state flags that various assembly files may need to
   *   access
   * - pending work-to-be-done flags are in LSW
   * - other flags in MSW
   */
a583f1b54   Stephane Eranian   remove unused TIF...
107
108
109
110
  #define TIF_SIGPENDING		1	/* signal pending */
  #define TIF_NEED_RESCHED	2	/* rescheduling necessary */
  #define TIF_SYSCALL_AUDIT	3	/* syscall auditing active */
  #define TIF_SECCOMP		4	/* secure computing */
d0420c83f   David Howells   KEYS: Extend TIF_...
111
  #define TIF_NOTIFY_RESUME	5	/* callback before returning to user */
7b3e2fc84   Ralf Baechle   [MIPS] Add suppor...
112
  #define TIF_RESTORE_SIGMASK	9	/* restore signal mask in do_signal() */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
113
114
  #define TIF_USEDFPU		16	/* FPU was used by this task this quantum (SMP) */
  #define TIF_POLLING_NRFLAG	17	/* true if poll_idle() is polling TIF_NEED_RESCHED */
0ddc9324b   Andreas Dilger   add descriptive c...
115
  #define TIF_MEMDIE		18	/* is terminating due to OOM killer */
293c5bd13   Ralf Baechle   [MIPS] Fixup secu...
116
117
118
119
120
  #define TIF_FIXADE		20	/* Fix address errors in software */
  #define TIF_LOGADE		21	/* Log address errors to syslog */
  #define TIF_32BIT_REGS		22	/* also implies 16/32 fprs */
  #define TIF_32BIT_ADDR		23	/* 32-bit address space (o32/n32) */
  #define TIF_FPUBOUND		24	/* thread bound to FPU-full CPU set */
6aa3524c1   David Daney   MIPS: Add HARDWAR...
121
  #define TIF_LOAD_WATCH		25	/* If set, load watch registers */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
122
  #define TIF_SYSCALL_TRACE	31	/* syscall trace active */
3b289d6e3   Zhang Le   MIPS: Fix TIF_32B...
123
124
125
126
127
  #ifdef CONFIG_MIPS32_O32
  #define TIF_32BIT TIF_32BIT_REGS
  #elif defined(CONFIG_MIPS32_N32)
  #define TIF_32BIT _TIF_32BIT_ADDR
  #endif /* CONFIG_MIPS32_O32 */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
128
  #define _TIF_SYSCALL_TRACE	(1<<TIF_SYSCALL_TRACE)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
129
130
131
  #define _TIF_SIGPENDING		(1<<TIF_SIGPENDING)
  #define _TIF_NEED_RESCHED	(1<<TIF_NEED_RESCHED)
  #define _TIF_SYSCALL_AUDIT	(1<<TIF_SYSCALL_AUDIT)
127c6f662   Ralf Baechle   SECCOMP for MIPS.
132
  #define _TIF_SECCOMP		(1<<TIF_SECCOMP)
d0420c83f   David Howells   KEYS: Extend TIF_...
133
  #define _TIF_NOTIFY_RESUME	(1<<TIF_NOTIFY_RESUME)
7b3e2fc84   Ralf Baechle   [MIPS] Add suppor...
134
  #define _TIF_RESTORE_SIGMASK	(1<<TIF_RESTORE_SIGMASK)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
135
136
  #define _TIF_USEDFPU		(1<<TIF_USEDFPU)
  #define _TIF_POLLING_NRFLAG	(1<<TIF_POLLING_NRFLAG)
293c5bd13   Ralf Baechle   [MIPS] Fixup secu...
137
138
139
140
141
  #define _TIF_FIXADE		(1<<TIF_FIXADE)
  #define _TIF_LOGADE		(1<<TIF_LOGADE)
  #define _TIF_32BIT_REGS		(1<<TIF_32BIT_REGS)
  #define _TIF_32BIT_ADDR		(1<<TIF_32BIT_ADDR)
  #define _TIF_FPUBOUND		(1<<TIF_FPUBOUND)
6aa3524c1   David Daney   MIPS: Add HARDWAR...
142
  #define _TIF_LOAD_WATCH		(1<<TIF_LOAD_WATCH)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
143

c19c20ac6   Ralf Baechle   MIPS: Use single ...
144
145
  /* work to do in syscall_trace_leave() */
  #define _TIF_WORK_SYSCALL_EXIT	(_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT)
127c6f662   Ralf Baechle   SECCOMP for MIPS.
146
  /* work to do on interrupt/exception return */
244599469   Ralf Baechle   MIPS: Audit: Fix ...
147
148
  #define _TIF_WORK_MASK		(0x0000ffef &				\
  					~(_TIF_SECCOMP | _TIF_SYSCALL_AUDIT))
127c6f662   Ralf Baechle   SECCOMP for MIPS.
149
150
  /* work to do on any return to u-space */
  #define _TIF_ALLWORK_MASK	(0x8000ffff & ~_TIF_SECCOMP)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
151
152
153
154
  
  #endif /* __KERNEL__ */
  
  #endif /* _ASM_THREAD_INFO_H */