diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /include/asm-um/processor-generic.h |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'include/asm-um/processor-generic.h')
-rw-r--r-- | include/asm-um/processor-generic.h | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/include/asm-um/processor-generic.h b/include/asm-um/processor-generic.h new file mode 100644 index 000000000000..038ba6fc88b8 --- /dev/null +++ b/include/asm-um/processor-generic.h | |||
@@ -0,0 +1,150 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) | ||
3 | * Licensed under the GPL | ||
4 | */ | ||
5 | |||
6 | #ifndef __UM_PROCESSOR_GENERIC_H | ||
7 | #define __UM_PROCESSOR_GENERIC_H | ||
8 | |||
9 | struct pt_regs; | ||
10 | |||
11 | struct task_struct; | ||
12 | |||
13 | #include "linux/config.h" | ||
14 | #include "asm/ptrace.h" | ||
15 | #include "choose-mode.h" | ||
16 | |||
17 | struct mm_struct; | ||
18 | |||
19 | struct thread_struct { | ||
20 | int forking; | ||
21 | int nsyscalls; | ||
22 | struct pt_regs regs; | ||
23 | unsigned long cr2; | ||
24 | int err; | ||
25 | unsigned long trap_no; | ||
26 | int singlestep_syscall; | ||
27 | void *fault_addr; | ||
28 | void *fault_catcher; | ||
29 | struct task_struct *prev_sched; | ||
30 | unsigned long temp_stack; | ||
31 | void *exec_buf; | ||
32 | struct arch_thread arch; | ||
33 | union { | ||
34 | #ifdef CONFIG_MODE_TT | ||
35 | struct { | ||
36 | int extern_pid; | ||
37 | int tracing; | ||
38 | int switch_pipe[2]; | ||
39 | int vm_seq; | ||
40 | } tt; | ||
41 | #endif | ||
42 | #ifdef CONFIG_MODE_SKAS | ||
43 | struct { | ||
44 | void *switch_buf; | ||
45 | void *fork_buf; | ||
46 | int mm_count; | ||
47 | } skas; | ||
48 | #endif | ||
49 | } mode; | ||
50 | struct { | ||
51 | int op; | ||
52 | union { | ||
53 | struct { | ||
54 | int pid; | ||
55 | } fork, exec; | ||
56 | struct { | ||
57 | int (*proc)(void *); | ||
58 | void *arg; | ||
59 | } thread; | ||
60 | struct { | ||
61 | void (*proc)(void *); | ||
62 | void *arg; | ||
63 | } cb; | ||
64 | } u; | ||
65 | } request; | ||
66 | }; | ||
67 | |||
68 | #define INIT_THREAD \ | ||
69 | { \ | ||
70 | .forking = 0, \ | ||
71 | .nsyscalls = 0, \ | ||
72 | .regs = EMPTY_REGS, \ | ||
73 | .cr2 = 0, \ | ||
74 | .err = 0, \ | ||
75 | .fault_addr = NULL, \ | ||
76 | .prev_sched = NULL, \ | ||
77 | .temp_stack = 0, \ | ||
78 | .exec_buf = NULL, \ | ||
79 | .arch = INIT_ARCH_THREAD, \ | ||
80 | .request = { 0 } \ | ||
81 | } | ||
82 | |||
83 | typedef struct { | ||
84 | unsigned long seg; | ||
85 | } mm_segment_t; | ||
86 | |||
87 | extern struct task_struct *alloc_task_struct(void); | ||
88 | |||
89 | extern void release_thread(struct task_struct *); | ||
90 | extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); | ||
91 | extern void dump_thread(struct pt_regs *regs, struct user *u); | ||
92 | extern void prepare_to_copy(struct task_struct *tsk); | ||
93 | |||
94 | extern unsigned long thread_saved_pc(struct task_struct *t); | ||
95 | |||
96 | static inline void mm_copy_segments(struct mm_struct *from_mm, | ||
97 | struct mm_struct *new_mm) | ||
98 | { | ||
99 | } | ||
100 | |||
101 | #define init_stack (init_thread_union.stack) | ||
102 | |||
103 | /* | ||
104 | * User space process size: 3GB (default). | ||
105 | */ | ||
106 | extern unsigned long task_size; | ||
107 | |||
108 | #define TASK_SIZE (task_size) | ||
109 | |||
110 | /* This decides where the kernel will search for a free chunk of vm | ||
111 | * space during mmap's. | ||
112 | */ | ||
113 | #define TASK_UNMAPPED_BASE (0x40000000) | ||
114 | |||
115 | extern void start_thread(struct pt_regs *regs, unsigned long entry, | ||
116 | unsigned long stack); | ||
117 | |||
118 | struct cpuinfo_um { | ||
119 | unsigned long loops_per_jiffy; | ||
120 | int ipi_pipe[2]; | ||
121 | }; | ||
122 | |||
123 | extern struct cpuinfo_um boot_cpu_data; | ||
124 | |||
125 | #define my_cpu_data cpu_data[smp_processor_id()] | ||
126 | |||
127 | #ifdef CONFIG_SMP | ||
128 | extern struct cpuinfo_um cpu_data[]; | ||
129 | #define current_cpu_data cpu_data[smp_processor_id()] | ||
130 | #else | ||
131 | #define cpu_data (&boot_cpu_data) | ||
132 | #define current_cpu_data boot_cpu_data | ||
133 | #endif | ||
134 | |||
135 | #define KSTK_EIP(tsk) (PT_REGS_IP(&tsk->thread.regs)) | ||
136 | #define KSTK_ESP(tsk) (PT_REGS_SP(&tsk->thread.regs)) | ||
137 | #define get_wchan(p) (0) | ||
138 | |||
139 | #endif | ||
140 | |||
141 | /* | ||
142 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
143 | * Emacs will notice this stuff at the end of the file and automatically | ||
144 | * adjust the settings for this buffer only. This must remain at the end | ||
145 | * of the file. | ||
146 | * --------------------------------------------------------------------------- | ||
147 | * Local variables: | ||
148 | * c-file-style: "linux" | ||
149 | * End: | ||
150 | */ | ||