Files

103 lines
1.9 KiB
C
Raw Permalink Normal View History

2005-04-16 15:20:36 -07:00
/*
2007-10-16 01:27:00 -07:00
* Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
2005-04-16 15:20:36 -07:00
* Licensed under the GPL
*/
#ifndef __UM_PROCESSOR_GENERIC_H
#define __UM_PROCESSOR_GENERIC_H
struct pt_regs;
struct task_struct;
#include <asm/ptrace.h>
#include <registers.h>
#include <sysdep/archsetjmp.h>
2005-04-16 15:20:36 -07:00
2011-05-24 17:13:03 -07:00
#include <linux/prefetch.h>
2005-04-16 15:20:36 -07:00
struct mm_struct;
struct thread_struct {
struct pt_regs regs;
struct pt_regs *segv_regs;
2005-04-16 15:20:36 -07:00
int singlestep_syscall;
void *fault_addr;
2007-10-16 01:27:05 -07:00
jmp_buf *fault_catcher;
2005-04-16 15:20:36 -07:00
struct task_struct *prev_sched;
struct arch_thread arch;
jmp_buf switch_buf;
2005-04-16 15:20:36 -07:00
struct {
int op;
union {
struct {
int pid;
} fork, exec;
struct {
int (*proc)(void *);
void *arg;
} thread;
struct {
void (*proc)(void *);
void *arg;
} cb;
} u;
} request;
};
#define INIT_THREAD \
{ \
2007-10-16 01:27:00 -07:00
.regs = EMPTY_REGS, \
2005-04-16 15:20:36 -07:00
.fault_addr = NULL, \
.prev_sched = NULL, \
.arch = INIT_ARCH_THREAD, \
.request = { 0 } \
}
static inline void release_thread(struct task_struct *task)
{
}
static inline void mm_copy_segments(struct mm_struct *from_mm,
struct mm_struct *new_mm)
{
}
2005-04-16 15:20:36 -07:00
/*
* User space process size: 3GB (default).
*/
2008-02-08 04:22:07 -08:00
extern unsigned long task_size;
#define TASK_SIZE (task_size)
2005-04-16 15:20:36 -07:00
#undef STACK_TOP
#undef STACK_TOP_MAX
extern unsigned long stacksizelim;
#define STACK_ROOM (stacksizelim)
#define STACK_TOP (TASK_SIZE - 2 * PAGE_SIZE)
#define STACK_TOP_MAX STACK_TOP
2005-04-16 15:20:36 -07:00
/* This decides where the kernel will search for a free chunk of vm
* space during mmap's.
*/
#define TASK_UNMAPPED_BASE (0x40000000)
extern void start_thread(struct pt_regs *regs, unsigned long entry,
unsigned long stack);
struct cpuinfo_um {
unsigned long loops_per_jiffy;
int ipi_pipe[2];
};
extern struct cpuinfo_um boot_cpu_data;
#define cpu_data (&boot_cpu_data)
#define current_cpu_data boot_cpu_data
#define KSTK_REG(tsk, reg) get_thread_reg(reg, &tsk->thread.switch_buf)
2008-02-04 22:30:36 -08:00
extern unsigned long get_wchan(struct task_struct *p);
2005-04-16 15:20:36 -07:00
#endif