xref: /OK3568_Linux_fs/kernel/arch/nds32/include/asm/thread_info.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun // Copyright (C) 2005-2017 Andes Technology Corporation
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun #ifndef __ASM_NDS32_THREAD_INFO_H
5*4882a593Smuzhiyun #define __ASM_NDS32_THREAD_INFO_H
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifdef __KERNEL__
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #define THREAD_SIZE_ORDER 	(1)
10*4882a593Smuzhiyun #define THREAD_SIZE		(PAGE_SIZE << THREAD_SIZE_ORDER)
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #ifndef __ASSEMBLY__
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun struct task_struct;
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #include <asm/ptrace.h>
17*4882a593Smuzhiyun #include <asm/types.h>
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun typedef unsigned long mm_segment_t;
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun /*
22*4882a593Smuzhiyun  * low level task data that entry.S needs immediate access to.
23*4882a593Smuzhiyun  * __switch_to() assumes cpu_context follows immediately after cpu_domain.
24*4882a593Smuzhiyun  */
25*4882a593Smuzhiyun struct thread_info {
26*4882a593Smuzhiyun 	unsigned long flags;	/* low level flags */
27*4882a593Smuzhiyun 	__s32 preempt_count;	/* 0 => preemptable, <0 => bug */
28*4882a593Smuzhiyun 	mm_segment_t addr_limit;	/* address limit */
29*4882a593Smuzhiyun };
30*4882a593Smuzhiyun #define INIT_THREAD_INFO(tsk)						\
31*4882a593Smuzhiyun {									\
32*4882a593Smuzhiyun 	.preempt_count	= INIT_PREEMPT_COUNT,				\
33*4882a593Smuzhiyun 	.addr_limit	= KERNEL_DS,					\
34*4882a593Smuzhiyun }
35*4882a593Smuzhiyun #define thread_saved_pc(tsk) ((unsigned long)(tsk->thread.cpu_context.pc))
36*4882a593Smuzhiyun #define thread_saved_fp(tsk) ((unsigned long)(tsk->thread.cpu_context.fp))
37*4882a593Smuzhiyun #endif
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun /*
40*4882a593Smuzhiyun  * thread information flags:
41*4882a593Smuzhiyun  *  TIF_SYSCALL_TRACE	- syscall trace active
42*4882a593Smuzhiyun  *  TIF_SIGPENDING	- signal pending
43*4882a593Smuzhiyun  *  TIF_NEED_RESCHED	- rescheduling necessary
44*4882a593Smuzhiyun  *  TIF_NOTIFY_RESUME	- callback before returning to user
45*4882a593Smuzhiyun  *  TIF_POLLING_NRFLAG	- true if poll_idle() is polling TIF_NEED_RESCHED
46*4882a593Smuzhiyun  */
47*4882a593Smuzhiyun #define TIF_SIGPENDING		1
48*4882a593Smuzhiyun #define TIF_NEED_RESCHED	2
49*4882a593Smuzhiyun #define TIF_SINGLESTEP		3
50*4882a593Smuzhiyun #define TIF_NOTIFY_RESUME	4	/* callback before returning to user */
51*4882a593Smuzhiyun #define TIF_NOTIFY_SIGNAL	5	/* signal notifications exist */
52*4882a593Smuzhiyun #define TIF_SYSCALL_TRACE	8
53*4882a593Smuzhiyun #define TIF_POLLING_NRFLAG	17
54*4882a593Smuzhiyun #define TIF_MEMDIE		18
55*4882a593Smuzhiyun #define TIF_FREEZE		19
56*4882a593Smuzhiyun #define TIF_RESTORE_SIGMASK	20
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun #define _TIF_SIGPENDING		(1 << TIF_SIGPENDING)
59*4882a593Smuzhiyun #define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)
60*4882a593Smuzhiyun #define _TIF_NOTIFY_RESUME	(1 << TIF_NOTIFY_RESUME)
61*4882a593Smuzhiyun #define _TIF_NOTIFY_SIGNAL	(1 << TIF_NOTIFY_SIGNAL)
62*4882a593Smuzhiyun #define _TIF_SINGLESTEP		(1 << TIF_SINGLESTEP)
63*4882a593Smuzhiyun #define _TIF_SYSCALL_TRACE	(1 << TIF_SYSCALL_TRACE)
64*4882a593Smuzhiyun #define _TIF_POLLING_NRFLAG	(1 << TIF_POLLING_NRFLAG)
65*4882a593Smuzhiyun #define _TIF_FREEZE		(1 << TIF_FREEZE)
66*4882a593Smuzhiyun #define _TIF_RESTORE_SIGMASK	(1 << TIF_RESTORE_SIGMASK)
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun /*
69*4882a593Smuzhiyun  * Change these and you break ASM code in entry-common.S
70*4882a593Smuzhiyun  */
71*4882a593Smuzhiyun #define _TIF_WORK_MASK		0x000000ff
72*4882a593Smuzhiyun #define _TIF_WORK_SYSCALL_ENTRY (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP)
73*4882a593Smuzhiyun #define _TIF_WORK_SYSCALL_LEAVE (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP)
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun #endif /* __KERNEL__ */
76*4882a593Smuzhiyun #endif /* __ASM_NDS32_THREAD_INFO_H */
77