linux/arch/h8300/include/asm/thread_info.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/* thread_info.h: h8300 low-level thread information
   3 * adapted from the i386 and PPC versions by Yoshinori Sato <ysato@users.sourceforge.jp>
   4 *
   5 * Copyright (C) 2002  David Howells (dhowells@redhat.com)
   6 * - Incorporating suggestions made by Linus Torvalds and Dave Miller
   7 */
   8
   9#ifndef _ASM_THREAD_INFO_H
  10#define _ASM_THREAD_INFO_H
  11
  12#include <asm/page.h>
  13#include <asm/segment.h>
  14
  15#ifdef __KERNEL__
  16
  17/*
  18 * Size of kernel stack for each process. This must be a power of 2...
  19 */
  20#define THREAD_SIZE_ORDER       1
  21#define THREAD_SIZE             8192    /* 2 pages */
  22
  23#ifndef __ASSEMBLY__
  24
  25/*
  26 * low level task data.
  27 * If you change this, change the TI_* offsets below to match.
  28 */
  29struct thread_info {
  30        struct task_struct *task;               /* main task structure */
  31        unsigned long      flags;               /* low level flags */
  32        int                cpu;                 /* cpu we're on */
  33        int                preempt_count;       /* 0 => preemptable, <0 => BUG */
  34        mm_segment_t            addr_limit;
  35};
  36
  37/*
  38 * macros/functions for gaining access to the thread information structure
  39 */
  40#define INIT_THREAD_INFO(tsk)                   \
  41{                                               \
  42        .task =         &tsk,                   \
  43        .flags =        0,                      \
  44        .cpu =          0,                      \
  45        .preempt_count = INIT_PREEMPT_COUNT,    \
  46        .addr_limit     = KERNEL_DS,            \
  47}
  48
  49/* how to get the thread information struct from C */
  50static inline struct thread_info *current_thread_info(void)
  51{
  52        struct thread_info *ti;
  53
  54        __asm__("mov.l  sp, %0\n\t"
  55                "and.w  %1, %T0"
  56                : "=&r"(ti)
  57                : "i" (~(THREAD_SIZE-1) & 0xffff));
  58        return ti;
  59}
  60
  61#endif /* __ASSEMBLY__ */
  62
  63/*
  64 * thread information flag bit numbers
  65 */
  66#define TIF_SYSCALL_TRACE       0       /* syscall trace active */
  67#define TIF_SIGPENDING          1       /* signal pending */
  68#define TIF_NEED_RESCHED        2       /* rescheduling necessary */
  69#define TIF_SINGLESTEP          3       /* singlestepping active */
  70#define TIF_MEMDIE              4       /* is terminating due to OOM killer */
  71#define TIF_RESTORE_SIGMASK     5       /* restore signal mask in do_signal() */
  72#define TIF_NOTIFY_RESUME       6       /* callback before returning to user */
  73#define TIF_SYSCALL_AUDIT       7       /* syscall auditing active */
  74#define TIF_SYSCALL_TRACEPOINT  8       /* for ftrace syscall instrumentation */
  75#define TIF_POLLING_NRFLAG      9       /* true if poll_idle() is polling TIF_NEED_RESCHED */
  76#define TIF_NOTIFY_SIGNAL       10      /* signal notifications exist */
  77
  78/* as above, but as bit values */
  79#define _TIF_SYSCALL_TRACE      (1 << TIF_SYSCALL_TRACE)
  80#define _TIF_SIGPENDING         (1 << TIF_SIGPENDING)
  81#define _TIF_NEED_RESCHED       (1 << TIF_NEED_RESCHED)
  82#define _TIF_NOTIFY_RESUME      (1 << TIF_NOTIFY_RESUME)
  83#define _TIF_SINGLESTEP         (1 << TIF_SINGLESTEP)
  84#define _TIF_SYSCALL_AUDIT      (1 << TIF_SYSCALL_AUDIT)
  85#define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT)
  86#define _TIF_POLLING_NRFLAG     (1 << TIF_POLLING_NRFLAG)
  87#define _TIF_NOTIFY_SIGNAL      (1 << TIF_NOTIFY_SIGNAL)
  88
  89/* work to do in syscall trace */
  90#define _TIF_WORK_SYSCALL_MASK  (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP | \
  91                                 _TIF_SYSCALL_AUDIT | _TIF_SYSCALL_TRACEPOINT)
  92
  93/* work to do on any return to u-space */
  94#define _TIF_ALLWORK_MASK       (_TIF_SYSCALL_TRACE | _TIF_SIGPENDING      | \
  95                                 _TIF_NEED_RESCHED  | _TIF_SYSCALL_AUDIT   | \
  96                                 _TIF_SINGLESTEP    | _TIF_NOTIFY_RESUME   | \
  97                                 _TIF_SYSCALL_TRACEPOINT | _TIF_NOTIFY_SIGNAL)
  98
  99/* work to do on interrupt/exception return */
 100#define _TIF_WORK_MASK          (_TIF_ALLWORK_MASK & ~(_TIF_SYSCALL_TRACE | \
 101                                 _TIF_SYSCALL_AUDIT | _TIF_SINGLESTEP))
 102
 103#endif /* __KERNEL__ */
 104
 105#endif /* _ASM_THREAD_INFO_H */
 106