linux/arch/um/include/asm/processor-generic.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/* 
   3 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
   4 */
   5
   6#ifndef __UM_PROCESSOR_GENERIC_H
   7#define __UM_PROCESSOR_GENERIC_H
   8
   9struct pt_regs;
  10
  11struct task_struct;
  12
  13#include <asm/ptrace.h>
  14#include <registers.h>
  15#include <sysdep/archsetjmp.h>
  16
  17#include <linux/prefetch.h>
  18
  19struct mm_struct;
  20
  21struct thread_struct {
  22        struct pt_regs regs;
  23        struct pt_regs *segv_regs;
  24        int singlestep_syscall;
  25        void *fault_addr;
  26        jmp_buf *fault_catcher;
  27        struct task_struct *prev_sched;
  28        struct arch_thread arch;
  29        jmp_buf switch_buf;
  30        struct {
  31                int op;
  32                union {
  33                        struct {
  34                                int pid;
  35                        } fork, exec;
  36                        struct {
  37                                int (*proc)(void *);
  38                                void *arg;
  39                        } thread;
  40                        struct {
  41                                void (*proc)(void *);
  42                                void *arg;
  43                        } cb;
  44                } u;
  45        } request;
  46};
  47
  48#define INIT_THREAD \
  49{ \
  50        .regs                   = EMPTY_REGS,   \
  51        .fault_addr             = NULL, \
  52        .prev_sched             = NULL, \
  53        .arch                   = INIT_ARCH_THREAD, \
  54        .request                = { 0 } \
  55}
  56
  57static inline void release_thread(struct task_struct *task)
  58{
  59}
  60
  61static inline void mm_copy_segments(struct mm_struct *from_mm,
  62                                    struct mm_struct *new_mm)
  63{
  64}
  65
  66/*
  67 * User space process size: 3GB (default).
  68 */
  69extern unsigned long task_size;
  70
  71#define TASK_SIZE (task_size)
  72
  73#undef STACK_TOP
  74#undef STACK_TOP_MAX
  75
  76extern unsigned long stacksizelim;
  77
  78#define STACK_ROOM      (stacksizelim)
  79#define STACK_TOP       (TASK_SIZE - 2 * PAGE_SIZE)
  80#define STACK_TOP_MAX   STACK_TOP
  81
  82/* This decides where the kernel will search for a free chunk of vm
  83 * space during mmap's.
  84 */
  85#define TASK_UNMAPPED_BASE      (0x40000000)
  86
  87extern void start_thread(struct pt_regs *regs, unsigned long entry, 
  88                         unsigned long stack);
  89
  90struct cpuinfo_um {
  91        unsigned long loops_per_jiffy;
  92        int ipi_pipe[2];
  93};
  94
  95extern struct cpuinfo_um boot_cpu_data;
  96
  97#define cpu_data (&boot_cpu_data)
  98#define current_cpu_data boot_cpu_data
  99
 100#define KSTK_REG(tsk, reg) get_thread_reg(reg, &tsk->thread.switch_buf)
 101extern unsigned long get_wchan(struct task_struct *p);
 102
 103#endif
 104