thread_info.h 2.7 KB
Newer Older
G
Guo Ren 已提交
1 2 3 4 5 6 7 8 9 10 11 12
/* SPDX-License-Identifier: GPL-2.0 */
// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.

#ifndef _ASM_CSKY_THREAD_INFO_H
#define _ASM_CSKY_THREAD_INFO_H

#ifndef __ASSEMBLY__

#include <linux/version.h>
#include <asm/types.h>
#include <asm/page.h>
#include <asm/processor.h>
G
Guo Ren 已提交
13
#include <abi/switch_context.h>
G
Guo Ren 已提交
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

struct thread_info {
	struct task_struct	*task;
	void			*dump_exec_domain;
	unsigned long		flags;
	int			preempt_count;
	unsigned long		tp_value;
	mm_segment_t		addr_limit;
	struct restart_block	restart_block;
	struct pt_regs		*regs;
	unsigned int		cpu;
};

#define INIT_THREAD_INFO(tsk)			\
{						\
	.task		= &tsk,			\
	.preempt_count  = INIT_PREEMPT_COUNT,	\
	.addr_limit     = KERNEL_DS,		\
	.cpu		= 0,			\
	.restart_block = {			\
		.fn = do_no_restart_syscall,	\
	},					\
}

#define THREAD_SIZE_ORDER (THREAD_SHIFT - PAGE_SHIFT)

G
Guo Ren 已提交
40
#define thread_saved_fp(tsk) \
41
	((unsigned long)(((struct switch_stack *)(tsk->thread.sp))->r8))
G
Guo Ren 已提交
42

G
Guo Ren 已提交
43
#define thread_saved_sp(tsk) \
44
	((unsigned long)(tsk->thread.sp))
G
Guo Ren 已提交
45 46

#define thread_saved_lr(tsk) \
47
	((unsigned long)(((struct switch_stack *)(tsk->thread.sp))->r15))
G
Guo Ren 已提交
48

G
Guo Ren 已提交
49 50 51 52 53 54 55 56 57 58 59 60 61 62
static inline struct thread_info *current_thread_info(void)
{
	unsigned long sp;

	asm volatile("mov %0, sp\n":"=r"(sp));

	return (struct thread_info *)(sp & ~(THREAD_SIZE - 1));
}

#endif /* !__ASSEMBLY__ */

#define TIF_SIGPENDING		0	/* signal pending */
#define TIF_NOTIFY_RESUME	1       /* callback before returning to user */
#define TIF_NEED_RESCHED	2	/* rescheduling necessary */
63 64 65 66
#define TIF_UPROBE		3	/* uprobe breakpoint or singlestep */
#define TIF_SYSCALL_TRACE	4	/* syscall trace active */
#define TIF_SYSCALL_TRACEPOINT	5       /* syscall tracepoint instrumentation */
#define TIF_SYSCALL_AUDIT	6	/* syscall auditing */
G
Guo Ren 已提交
67 68 69 70 71
#define TIF_POLLING_NRFLAG	16	/* poll_idle() is TIF_NEED_RESCHED */
#define TIF_MEMDIE		18      /* is terminating due to OOM killer */
#define TIF_RESTORE_SIGMASK	20	/* restore signal mask in do_signal() */
#define TIF_SECCOMP		21	/* secure computing */

72 73 74 75 76 77
#define _TIF_SIGPENDING		(1 << TIF_SIGPENDING)
#define _TIF_NOTIFY_RESUME	(1 << TIF_NOTIFY_RESUME)
#define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)
#define _TIF_SYSCALL_TRACE	(1 << TIF_SYSCALL_TRACE)
#define _TIF_SYSCALL_TRACEPOINT	(1 << TIF_SYSCALL_TRACEPOINT)
#define _TIF_SYSCALL_AUDIT	(1 << TIF_SYSCALL_AUDIT)
G
Guo Ren 已提交
78
#define _TIF_UPROBE		(1 << TIF_UPROBE)
79
#define _TIF_POLLING_NRFLAG	(1 << TIF_POLLING_NRFLAG)
G
Guo Ren 已提交
80
#define _TIF_MEMDIE		(1 << TIF_MEMDIE)
81 82
#define _TIF_RESTORE_SIGMASK	(1 << TIF_RESTORE_SIGMASK)
#define _TIF_SECCOMP		(1 << TIF_SECCOMP)
G
Guo Ren 已提交
83

G
Guo Ren 已提交
84 85 86 87
#define _TIF_WORK_MASK		(_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
				 _TIF_NOTIFY_RESUME | _TIF_UPROBE)

#define _TIF_SYSCALL_WORK	(_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \
G
Guo Ren 已提交
88
				 _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP)
G
Guo Ren 已提交
89

G
Guo Ren 已提交
90
#endif	/* _ASM_CSKY_THREAD_INFO_H */