linux/arch/um/include/asm/processor-generic.h
<<
>>
Prefs
   1/* 
   2 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
   3 * Licensed under the GPL
   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
  61extern unsigned long thread_saved_pc(struct task_struct *t);
  62
  63static inline void mm_copy_segments(struct mm_struct *from_mm,
  64                                    struct mm_struct *new_mm)
  65{
  66}
  67
  68#define init_stack      (init_thread_union.stack)
  69
  70/*
  71 * User space process size: 3GB (default).
  72 */
  73extern unsigned long task_size;
  74
  75#define TASK_SIZE (task_size)
  76
  77#undef STACK_TOP
  78#undef STACK_TOP_MAX
  79
  80extern unsigned long stacksizelim;
  81
  82#define STACK_ROOM      (stacksizelim)
  83#define STACK_TOP       (TASK_SIZE - 2 * PAGE_SIZE)
  84#define STACK_TOP_MAX   STACK_TOP
  85
  86/* This decides where the kernel will search for a free chunk of vm
  87 * space during mmap's.
  88 */
  89#define TASK_UNMAPPED_BASE      (0x40000000)
  90
  91extern void start_thread(struct pt_regs *regs, unsigned long entry, 
  92                         unsigned long stack);
  93
  94struct cpuinfo_um {
  95        unsigned long loops_per_jiffy;
  96        int ipi_pipe[2];
  97};
  98
  99extern struct cpuinfo_um boot_cpu_data;
 100
 101#define cpu_data (&boot_cpu_data)
 102#define current_cpu_data boot_cpu_data
 103
 104#define KSTK_REG(tsk, reg) get_thread_reg(reg, &tsk->thread.switch_buf)
 105extern unsigned long get_wchan(struct task_struct *p);
 106
 107#endif
 108