root/arch/arm64/include/asm/thread_info.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Based on arch/arm/include/asm/thread_info.h
   4  *
   5  * Copyright (C) 2002 Russell King.
   6  * Copyright (C) 2012 ARM Ltd.
   7  */
   8 #ifndef __ASM_THREAD_INFO_H
   9 #define __ASM_THREAD_INFO_H
  10 
  11 #include <linux/compiler.h>
  12 
  13 #ifndef __ASSEMBLY__
  14 
  15 struct task_struct;
  16 
  17 #include <asm/memory.h>
  18 #include <asm/stack_pointer.h>
  19 #include <asm/types.h>
  20 
  21 typedef unsigned long mm_segment_t;
  22 
  23 /*
  24  * low level task data that entry.S needs immediate access to.
  25  */
  26 struct thread_info {
  27         unsigned long           flags;          /* low level flags */
  28         mm_segment_t            addr_limit;     /* address limit */
  29 #ifdef CONFIG_ARM64_SW_TTBR0_PAN
  30         u64                     ttbr0;          /* saved TTBR0_EL1 */
  31 #endif
  32         union {
  33                 u64             preempt_count;  /* 0 => preemptible, <0 => bug */
  34                 struct {
  35 #ifdef CONFIG_CPU_BIG_ENDIAN
  36                         u32     need_resched;
  37                         u32     count;
  38 #else
  39                         u32     count;
  40                         u32     need_resched;
  41 #endif
  42                 } preempt;
  43         };
  44 };
  45 
  46 #define thread_saved_pc(tsk)    \
  47         ((unsigned long)(tsk->thread.cpu_context.pc))
  48 #define thread_saved_sp(tsk)    \
  49         ((unsigned long)(tsk->thread.cpu_context.sp))
  50 #define thread_saved_fp(tsk)    \
  51         ((unsigned long)(tsk->thread.cpu_context.fp))
  52 
  53 void arch_setup_new_exec(void);
  54 #define arch_setup_new_exec     arch_setup_new_exec
  55 
  56 void arch_release_task_struct(struct task_struct *tsk);
  57 
  58 #endif
  59 
  60 #define TIF_SIGPENDING          0       /* signal pending */
  61 #define TIF_NEED_RESCHED        1       /* rescheduling necessary */
  62 #define TIF_NOTIFY_RESUME       2       /* callback before returning to user */
  63 #define TIF_FOREIGN_FPSTATE     3       /* CPU's FP state is not current's */
  64 #define TIF_UPROBE              4       /* uprobe breakpoint or singlestep */
  65 #define TIF_FSCHECK             5       /* Check FS is USER_DS on return */
  66 #define TIF_NOHZ                7
  67 #define TIF_SYSCALL_TRACE       8       /* syscall trace active */
  68 #define TIF_SYSCALL_AUDIT       9       /* syscall auditing */
  69 #define TIF_SYSCALL_TRACEPOINT  10      /* syscall tracepoint for ftrace */
  70 #define TIF_SECCOMP             11      /* syscall secure computing */
  71 #define TIF_SYSCALL_EMU         12      /* syscall emulation active */
  72 #define TIF_MEMDIE              18      /* is terminating due to OOM killer */
  73 #define TIF_FREEZE              19
  74 #define TIF_RESTORE_SIGMASK     20
  75 #define TIF_SINGLESTEP          21
  76 #define TIF_32BIT               22      /* 32bit process */
  77 #define TIF_SVE                 23      /* Scalable Vector Extension in use */
  78 #define TIF_SVE_VL_INHERIT      24      /* Inherit sve_vl_onexec across exec */
  79 #define TIF_SSBD                25      /* Wants SSB mitigation */
  80 #define TIF_TAGGED_ADDR         26      /* Allow tagged user addresses */
  81 
  82 #define _TIF_SIGPENDING         (1 << TIF_SIGPENDING)
  83 #define _TIF_NEED_RESCHED       (1 << TIF_NEED_RESCHED)
  84 #define _TIF_NOTIFY_RESUME      (1 << TIF_NOTIFY_RESUME)
  85 #define _TIF_FOREIGN_FPSTATE    (1 << TIF_FOREIGN_FPSTATE)
  86 #define _TIF_NOHZ               (1 << TIF_NOHZ)
  87 #define _TIF_SYSCALL_TRACE      (1 << TIF_SYSCALL_TRACE)
  88 #define _TIF_SYSCALL_AUDIT      (1 << TIF_SYSCALL_AUDIT)
  89 #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT)
  90 #define _TIF_SECCOMP            (1 << TIF_SECCOMP)
  91 #define _TIF_SYSCALL_EMU        (1 << TIF_SYSCALL_EMU)
  92 #define _TIF_UPROBE             (1 << TIF_UPROBE)
  93 #define _TIF_FSCHECK            (1 << TIF_FSCHECK)
  94 #define _TIF_32BIT              (1 << TIF_32BIT)
  95 #define _TIF_SVE                (1 << TIF_SVE)
  96 
  97 #define _TIF_WORK_MASK          (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
  98                                  _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE | \
  99                                  _TIF_UPROBE | _TIF_FSCHECK)
 100 
 101 #define _TIF_SYSCALL_WORK       (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \
 102                                  _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP | \
 103                                  _TIF_NOHZ | _TIF_SYSCALL_EMU)
 104 
 105 #define INIT_THREAD_INFO(tsk)                                           \
 106 {                                                                       \
 107         .flags          = _TIF_FOREIGN_FPSTATE,                         \
 108         .preempt_count  = INIT_PREEMPT_COUNT,                           \
 109         .addr_limit     = KERNEL_DS,                                    \
 110 }
 111 
 112 #endif /* __ASM_THREAD_INFO_H */

/* [<][>][^][v][top][bottom][index][help] */