thread_info.h (2806B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2 3#ifndef _ASM_CSKY_THREAD_INFO_H 4#define _ASM_CSKY_THREAD_INFO_H 5 6#ifndef __ASSEMBLY__ 7 8#include <asm/types.h> 9#include <asm/page.h> 10#include <asm/processor.h> 11#include <abi/switch_context.h> 12 13struct thread_info { 14 struct task_struct *task; 15 void *dump_exec_domain; 16 unsigned long flags; 17 int preempt_count; 18 unsigned long tp_value; 19 struct restart_block restart_block; 20 struct pt_regs *regs; 21 unsigned int cpu; 22}; 23 24#define INIT_THREAD_INFO(tsk) \ 25{ \ 26 .task = &tsk, \ 27 .preempt_count = INIT_PREEMPT_COUNT, \ 28 .cpu = 0, \ 29 .restart_block = { \ 30 .fn = do_no_restart_syscall, \ 31 }, \ 32} 33 34#define THREAD_SIZE_ORDER (THREAD_SHIFT - PAGE_SHIFT) 35 36#define thread_saved_fp(tsk) \ 37 ((unsigned long)(((struct switch_stack *)(tsk->thread.sp))->r8)) 38 39#define thread_saved_sp(tsk) \ 40 ((unsigned long)(tsk->thread.sp)) 41 42#define thread_saved_lr(tsk) \ 43 ((unsigned long)(((struct switch_stack *)(tsk->thread.sp))->r15)) 44 45static inline struct thread_info *current_thread_info(void) 46{ 47 unsigned long sp; 48 49 asm volatile("mov %0, sp\n":"=r"(sp)); 50 51 return (struct thread_info *)(sp & ~(THREAD_SIZE - 1)); 52} 53 54#endif /* !__ASSEMBLY__ */ 55 56#define TIF_SIGPENDING 0 /* signal pending */ 57#define TIF_NOTIFY_RESUME 1 /* callback before returning to user */ 58#define TIF_NEED_RESCHED 2 /* rescheduling necessary */ 59#define TIF_UPROBE 3 /* uprobe breakpoint or singlestep */ 60#define TIF_SYSCALL_TRACE 4 /* syscall trace active */ 61#define TIF_SYSCALL_TRACEPOINT 5 /* syscall tracepoint instrumentation */ 62#define TIF_SYSCALL_AUDIT 6 /* syscall auditing */ 63#define TIF_NOTIFY_SIGNAL 7 /* signal notifications exist */ 64#define TIF_POLLING_NRFLAG 16 /* poll_idle() is TIF_NEED_RESCHED */ 65#define TIF_MEMDIE 18 /* is terminating due to OOM killer */ 66#define TIF_RESTORE_SIGMASK 20 /* restore signal mask in do_signal() */ 67#define TIF_SECCOMP 21 /* secure computing */ 68 69#define _TIF_SIGPENDING (1 << TIF_SIGPENDING) 70#define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) 71#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) 72#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) 73#define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) 74#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) 75#define _TIF_NOTIFY_SIGNAL (1 << TIF_NOTIFY_SIGNAL) 76#define _TIF_UPROBE (1 << TIF_UPROBE) 77#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG) 78#define _TIF_MEMDIE (1 << TIF_MEMDIE) 79#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK) 80#define _TIF_SECCOMP (1 << TIF_SECCOMP) 81 82#define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \ 83 _TIF_NOTIFY_RESUME | _TIF_UPROBE | \ 84 _TIF_NOTIFY_SIGNAL) 85 86#define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ 87 _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP) 88 89#endif /* _ASM_CSKY_THREAD_INFO_H */