source: patches/linux-2.6.17.13-mips-1.patch@ 6e9e1d7

clfs-1.2 clfs-2.1 clfs-3.0.0-systemd clfs-3.0.0-sysvinit systemd sysvinit
Last change on this file since 6e9e1d7 was cef1c09, checked in by Justin Knierim <cross-lfs@…>, 18 years ago

Corrected trunk linux patches to kernel 2.6.17.13.

  • Property mode set to 100644
File size: 124.9 KB
RevLine 
[a66a890]1Submitted By: Jim Gifford (patches at jg555 dot com)
2Date: 2006-07-08
3Initial Package Version: 2.6.17.4
4Origin: Linux-MIPS
5Upstream Status: http://www.linux-mips.org/pub/linux/mips/kernel/v2.6/
6Description: Merges Linux-MIPS and Kernel.org Tree's
7
8diff -Naur linux-2.6.17.4-kernel/arch/mips/cobalt/console.c linux-2.6.17.4-mips/arch/mips/cobalt/console.c
9--- linux-2.6.17.4-kernel/arch/mips/cobalt/console.c 2006-07-06 13:02:28.000000000 -0700
10+++ linux-2.6.17.4-mips/arch/mips/cobalt/console.c 2006-07-06 16:58:16.000000000 -0700
11@@ -41,3 +41,8 @@
12
13 printk("Cobalt: early console registered\n");
14 }
15+
16+void __init disable_early_printk(void)
17+{
18+ unregister_console(&cons_info);
19+}
20diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/atlas_defconfig linux-2.6.17.4-mips/arch/mips/configs/atlas_defconfig
21--- linux-2.6.17.4-kernel/arch/mips/configs/atlas_defconfig 2006-07-06 13:02:28.000000000 -0700
22+++ linux-2.6.17.4-mips/arch/mips/configs/atlas_defconfig 2006-07-06 16:58:16.000000000 -0700
23@@ -67,6 +67,7 @@
24 CONFIG_GENERIC_FIND_NEXT_BIT=y
25 CONFIG_GENERIC_HWEIGHT=y
26 CONFIG_GENERIC_CALIBRATE_DELAY=y
27+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
28 CONFIG_DMA_NONCOHERENT=y
29 CONFIG_DMA_NEED_PCI_MAP_STATE=y
30 CONFIG_MIPS_BONITO64=y
31diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/bigsur_defconfig linux-2.6.17.4-mips/arch/mips/configs/bigsur_defconfig
32--- linux-2.6.17.4-kernel/arch/mips/configs/bigsur_defconfig 2006-07-06 13:02:28.000000000 -0700
33+++ linux-2.6.17.4-mips/arch/mips/configs/bigsur_defconfig 2006-07-06 16:58:16.000000000 -0700
34@@ -83,6 +83,7 @@
35 CONFIG_GENERIC_FIND_NEXT_BIT=y
36 CONFIG_GENERIC_HWEIGHT=y
37 CONFIG_GENERIC_CALIBRATE_DELAY=y
38+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
39 CONFIG_DMA_COHERENT=y
40 CONFIG_CPU_BIG_ENDIAN=y
41 # CONFIG_CPU_LITTLE_ENDIAN is not set
42diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/capcella_defconfig linux-2.6.17.4-mips/arch/mips/configs/capcella_defconfig
43--- linux-2.6.17.4-kernel/arch/mips/configs/capcella_defconfig 2006-07-06 13:02:28.000000000 -0700
44+++ linux-2.6.17.4-mips/arch/mips/configs/capcella_defconfig 2006-07-06 16:58:16.000000000 -0700
45@@ -75,6 +75,7 @@
46 CONFIG_GENERIC_FIND_NEXT_BIT=y
47 CONFIG_GENERIC_HWEIGHT=y
48 CONFIG_GENERIC_CALIBRATE_DELAY=y
49+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
50 CONFIG_DMA_NONCOHERENT=y
51 CONFIG_DMA_NEED_PCI_MAP_STATE=y
52 # CONFIG_CPU_BIG_ENDIAN is not set
53diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/cobalt_defconfig linux-2.6.17.4-mips/arch/mips/configs/cobalt_defconfig
54--- linux-2.6.17.4-kernel/arch/mips/configs/cobalt_defconfig 2006-07-06 13:02:28.000000000 -0700
55+++ linux-2.6.17.4-mips/arch/mips/configs/cobalt_defconfig 2006-07-06 16:58:16.000000000 -0700
56@@ -68,6 +68,7 @@
57 CONFIG_GENERIC_FIND_NEXT_BIT=y
58 CONFIG_GENERIC_HWEIGHT=y
59 CONFIG_GENERIC_CALIBRATE_DELAY=y
60+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
61 CONFIG_DMA_NONCOHERENT=y
62 CONFIG_DMA_NEED_PCI_MAP_STATE=y
63 CONFIG_I8259=y
64diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/db1000_defconfig linux-2.6.17.4-mips/arch/mips/configs/db1000_defconfig
65--- linux-2.6.17.4-kernel/arch/mips/configs/db1000_defconfig 2006-07-06 13:02:28.000000000 -0700
66+++ linux-2.6.17.4-mips/arch/mips/configs/db1000_defconfig 2006-07-06 16:58:16.000000000 -0700
67@@ -67,6 +67,7 @@
68 CONFIG_GENERIC_FIND_NEXT_BIT=y
69 CONFIG_GENERIC_HWEIGHT=y
70 CONFIG_GENERIC_CALIBRATE_DELAY=y
71+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
72 CONFIG_DMA_NONCOHERENT=y
73 CONFIG_DMA_NEED_PCI_MAP_STATE=y
74 # CONFIG_CPU_BIG_ENDIAN is not set
75diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/db1100_defconfig linux-2.6.17.4-mips/arch/mips/configs/db1100_defconfig
76--- linux-2.6.17.4-kernel/arch/mips/configs/db1100_defconfig 2006-07-06 13:02:28.000000000 -0700
77+++ linux-2.6.17.4-mips/arch/mips/configs/db1100_defconfig 2006-07-06 16:58:16.000000000 -0700
78@@ -67,6 +67,7 @@
79 CONFIG_GENERIC_FIND_NEXT_BIT=y
80 CONFIG_GENERIC_HWEIGHT=y
81 CONFIG_GENERIC_CALIBRATE_DELAY=y
82+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
83 CONFIG_DMA_NONCOHERENT=y
84 CONFIG_DMA_NEED_PCI_MAP_STATE=y
85 # CONFIG_CPU_BIG_ENDIAN is not set
86diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/db1200_defconfig linux-2.6.17.4-mips/arch/mips/configs/db1200_defconfig
87--- linux-2.6.17.4-kernel/arch/mips/configs/db1200_defconfig 2006-07-06 13:02:28.000000000 -0700
88+++ linux-2.6.17.4-mips/arch/mips/configs/db1200_defconfig 2006-07-06 16:58:16.000000000 -0700
89@@ -67,6 +67,7 @@
90 CONFIG_GENERIC_FIND_NEXT_BIT=y
91 CONFIG_GENERIC_HWEIGHT=y
92 CONFIG_GENERIC_CALIBRATE_DELAY=y
93+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
94 CONFIG_DMA_COHERENT=y
95 CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y
96 # CONFIG_CPU_BIG_ENDIAN is not set
97diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/db1500_defconfig linux-2.6.17.4-mips/arch/mips/configs/db1500_defconfig
98--- linux-2.6.17.4-kernel/arch/mips/configs/db1500_defconfig 2006-07-06 13:02:28.000000000 -0700
99+++ linux-2.6.17.4-mips/arch/mips/configs/db1500_defconfig 2006-07-06 16:58:16.000000000 -0700
100@@ -67,6 +67,7 @@
101 CONFIG_GENERIC_FIND_NEXT_BIT=y
102 CONFIG_GENERIC_HWEIGHT=y
103 CONFIG_GENERIC_CALIBRATE_DELAY=y
104+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
105 CONFIG_DMA_NONCOHERENT=y
106 CONFIG_DMA_NEED_PCI_MAP_STATE=y
107 CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y
108diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/db1550_defconfig linux-2.6.17.4-mips/arch/mips/configs/db1550_defconfig
109--- linux-2.6.17.4-kernel/arch/mips/configs/db1550_defconfig 2006-07-06 13:02:28.000000000 -0700
110+++ linux-2.6.17.4-mips/arch/mips/configs/db1550_defconfig 2006-07-06 16:58:16.000000000 -0700
111@@ -67,6 +67,7 @@
112 CONFIG_GENERIC_FIND_NEXT_BIT=y
113 CONFIG_GENERIC_HWEIGHT=y
114 CONFIG_GENERIC_CALIBRATE_DELAY=y
115+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
116 CONFIG_DMA_NONCOHERENT=y
117 CONFIG_DMA_NEED_PCI_MAP_STATE=y
118 CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y
119diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ddb5476_defconfig linux-2.6.17.4-mips/arch/mips/configs/ddb5476_defconfig
120--- linux-2.6.17.4-kernel/arch/mips/configs/ddb5476_defconfig 2006-07-06 13:02:28.000000000 -0700
121+++ linux-2.6.17.4-mips/arch/mips/configs/ddb5476_defconfig 2006-07-06 16:58:16.000000000 -0700
122@@ -67,6 +67,7 @@
123 CONFIG_GENERIC_FIND_NEXT_BIT=y
124 CONFIG_GENERIC_HWEIGHT=y
125 CONFIG_GENERIC_CALIBRATE_DELAY=y
126+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
127 CONFIG_DMA_NONCOHERENT=y
128 CONFIG_DMA_NEED_PCI_MAP_STATE=y
129 CONFIG_I8259=y
130diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ddb5477_defconfig linux-2.6.17.4-mips/arch/mips/configs/ddb5477_defconfig
131--- linux-2.6.17.4-kernel/arch/mips/configs/ddb5477_defconfig 2006-07-06 13:02:28.000000000 -0700
132+++ linux-2.6.17.4-mips/arch/mips/configs/ddb5477_defconfig 2006-07-06 16:58:16.000000000 -0700
133@@ -68,6 +68,7 @@
134 CONFIG_GENERIC_FIND_NEXT_BIT=y
135 CONFIG_GENERIC_HWEIGHT=y
136 CONFIG_GENERIC_CALIBRATE_DELAY=y
137+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
138 CONFIG_DMA_NONCOHERENT=y
139 CONFIG_DMA_NEED_PCI_MAP_STATE=y
140 CONFIG_I8259=y
141diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/decstation_defconfig linux-2.6.17.4-mips/arch/mips/configs/decstation_defconfig
142--- linux-2.6.17.4-kernel/arch/mips/configs/decstation_defconfig 2006-07-06 13:02:28.000000000 -0700
143+++ linux-2.6.17.4-mips/arch/mips/configs/decstation_defconfig 2006-07-06 16:58:16.000000000 -0700
144@@ -68,6 +68,7 @@
145 CONFIG_GENERIC_FIND_NEXT_BIT=y
146 CONFIG_GENERIC_HWEIGHT=y
147 CONFIG_GENERIC_CALIBRATE_DELAY=y
148+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
149 CONFIG_DMA_NONCOHERENT=y
150 CONFIG_DMA_NEED_PCI_MAP_STATE=y
151 # CONFIG_CPU_BIG_ENDIAN is not set
152diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/e55_defconfig linux-2.6.17.4-mips/arch/mips/configs/e55_defconfig
153--- linux-2.6.17.4-kernel/arch/mips/configs/e55_defconfig 2006-07-06 13:02:28.000000000 -0700
154+++ linux-2.6.17.4-mips/arch/mips/configs/e55_defconfig 2006-07-06 16:58:16.000000000 -0700
155@@ -73,6 +73,7 @@
156 CONFIG_GENERIC_FIND_NEXT_BIT=y
157 CONFIG_GENERIC_HWEIGHT=y
158 CONFIG_GENERIC_CALIBRATE_DELAY=y
159+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
160 CONFIG_DMA_NONCOHERENT=y
161 CONFIG_DMA_NEED_PCI_MAP_STATE=y
162 # CONFIG_CPU_BIG_ENDIAN is not set
163diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ev64120_defconfig linux-2.6.17.4-mips/arch/mips/configs/ev64120_defconfig
164--- linux-2.6.17.4-kernel/arch/mips/configs/ev64120_defconfig 2006-07-06 13:02:28.000000000 -0700
165+++ linux-2.6.17.4-mips/arch/mips/configs/ev64120_defconfig 2006-07-06 16:58:16.000000000 -0700
166@@ -68,6 +68,7 @@
167 CONFIG_GENERIC_FIND_NEXT_BIT=y
168 CONFIG_GENERIC_HWEIGHT=y
169 CONFIG_GENERIC_CALIBRATE_DELAY=y
170+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
171 CONFIG_DMA_NONCOHERENT=y
172 CONFIG_DMA_NEED_PCI_MAP_STATE=y
173 CONFIG_CPU_BIG_ENDIAN=y
174diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ev96100_defconfig linux-2.6.17.4-mips/arch/mips/configs/ev96100_defconfig
175--- linux-2.6.17.4-kernel/arch/mips/configs/ev96100_defconfig 2006-07-06 13:02:28.000000000 -0700
176+++ linux-2.6.17.4-mips/arch/mips/configs/ev96100_defconfig 2006-07-06 16:58:16.000000000 -0700
177@@ -67,6 +67,7 @@
178 CONFIG_GENERIC_FIND_NEXT_BIT=y
179 CONFIG_GENERIC_HWEIGHT=y
180 CONFIG_GENERIC_CALIBRATE_DELAY=y
181+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
182 CONFIG_DMA_NONCOHERENT=y
183 CONFIG_DMA_NEED_PCI_MAP_STATE=y
184 CONFIG_CPU_BIG_ENDIAN=y
185diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ip22_defconfig linux-2.6.17.4-mips/arch/mips/configs/ip22_defconfig
186--- linux-2.6.17.4-kernel/arch/mips/configs/ip22_defconfig 2006-07-06 13:02:28.000000000 -0700
187+++ linux-2.6.17.4-mips/arch/mips/configs/ip22_defconfig 2006-07-06 16:58:16.000000000 -0700
188@@ -67,6 +67,7 @@
189 CONFIG_GENERIC_FIND_NEXT_BIT=y
190 CONFIG_GENERIC_HWEIGHT=y
191 CONFIG_GENERIC_CALIBRATE_DELAY=y
192+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
193 CONFIG_ARC=y
194 CONFIG_DMA_NONCOHERENT=y
195 CONFIG_DMA_NEED_PCI_MAP_STATE=y
196diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ip27_defconfig linux-2.6.17.4-mips/arch/mips/configs/ip27_defconfig
197--- linux-2.6.17.4-kernel/arch/mips/configs/ip27_defconfig 2006-07-06 13:02:28.000000000 -0700
198+++ linux-2.6.17.4-mips/arch/mips/configs/ip27_defconfig 2006-07-06 16:58:16.000000000 -0700
199@@ -73,6 +73,7 @@
200 CONFIG_GENERIC_FIND_NEXT_BIT=y
201 CONFIG_GENERIC_HWEIGHT=y
202 CONFIG_GENERIC_CALIBRATE_DELAY=y
203+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
204 CONFIG_ARC=y
205 CONFIG_DMA_IP27=y
206 CONFIG_CPU_BIG_ENDIAN=y
207diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ip32_defconfig linux-2.6.17.4-mips/arch/mips/configs/ip32_defconfig
208--- linux-2.6.17.4-kernel/arch/mips/configs/ip32_defconfig 2006-07-06 13:02:28.000000000 -0700
209+++ linux-2.6.17.4-mips/arch/mips/configs/ip32_defconfig 2006-07-06 16:58:16.000000000 -0700
210@@ -67,6 +67,7 @@
211 CONFIG_GENERIC_FIND_NEXT_BIT=y
212 CONFIG_GENERIC_HWEIGHT=y
213 CONFIG_GENERIC_CALIBRATE_DELAY=y
214+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
215 CONFIG_ARC=y
216 CONFIG_DMA_IP32=y
217 CONFIG_DMA_NONCOHERENT=y
218diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/it8172_defconfig linux-2.6.17.4-mips/arch/mips/configs/it8172_defconfig
219--- linux-2.6.17.4-kernel/arch/mips/configs/it8172_defconfig 2006-07-06 13:02:28.000000000 -0700
220+++ linux-2.6.17.4-mips/arch/mips/configs/it8172_defconfig 2006-07-06 16:58:16.000000000 -0700
221@@ -68,6 +68,7 @@
222 CONFIG_GENERIC_FIND_NEXT_BIT=y
223 CONFIG_GENERIC_HWEIGHT=y
224 CONFIG_GENERIC_CALIBRATE_DELAY=y
225+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
226 CONFIG_DMA_NONCOHERENT=y
227 CONFIG_DMA_NEED_PCI_MAP_STATE=y
228 # CONFIG_CPU_BIG_ENDIAN is not set
229diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ivr_defconfig linux-2.6.17.4-mips/arch/mips/configs/ivr_defconfig
230--- linux-2.6.17.4-kernel/arch/mips/configs/ivr_defconfig 2006-07-06 13:02:28.000000000 -0700
231+++ linux-2.6.17.4-mips/arch/mips/configs/ivr_defconfig 2006-07-06 16:58:16.000000000 -0700
232@@ -67,6 +67,7 @@
233 CONFIG_GENERIC_FIND_NEXT_BIT=y
234 CONFIG_GENERIC_HWEIGHT=y
235 CONFIG_GENERIC_CALIBRATE_DELAY=y
236+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
237 CONFIG_DMA_NONCOHERENT=y
238 CONFIG_DMA_NEED_PCI_MAP_STATE=y
239 # CONFIG_CPU_BIG_ENDIAN is not set
240diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/jaguar-atx_defconfig linux-2.6.17.4-mips/arch/mips/configs/jaguar-atx_defconfig
241--- linux-2.6.17.4-kernel/arch/mips/configs/jaguar-atx_defconfig 2006-07-06 13:02:28.000000000 -0700
242+++ linux-2.6.17.4-mips/arch/mips/configs/jaguar-atx_defconfig 2006-07-06 16:58:16.000000000 -0700
243@@ -68,6 +68,7 @@
244 CONFIG_GENERIC_FIND_NEXT_BIT=y
245 CONFIG_GENERIC_HWEIGHT=y
246 CONFIG_GENERIC_CALIBRATE_DELAY=y
247+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
248 CONFIG_DMA_NONCOHERENT=y
249 CONFIG_DMA_NEED_PCI_MAP_STATE=y
250 CONFIG_LIMITED_DMA=y
251diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/jmr3927_defconfig linux-2.6.17.4-mips/arch/mips/configs/jmr3927_defconfig
252--- linux-2.6.17.4-kernel/arch/mips/configs/jmr3927_defconfig 2006-07-06 13:02:28.000000000 -0700
253+++ linux-2.6.17.4-mips/arch/mips/configs/jmr3927_defconfig 2006-07-06 16:58:16.000000000 -0700
254@@ -67,6 +67,7 @@
255 CONFIG_GENERIC_FIND_NEXT_BIT=y
256 CONFIG_GENERIC_HWEIGHT=y
257 CONFIG_GENERIC_CALIBRATE_DELAY=y
258+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
259 CONFIG_DMA_NONCOHERENT=y
260 CONFIG_DMA_NEED_PCI_MAP_STATE=y
261 CONFIG_CPU_BIG_ENDIAN=y
262diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/lasat200_defconfig linux-2.6.17.4-mips/arch/mips/configs/lasat200_defconfig
263--- linux-2.6.17.4-kernel/arch/mips/configs/lasat200_defconfig 2006-07-06 13:02:28.000000000 -0700
264+++ linux-2.6.17.4-mips/arch/mips/configs/lasat200_defconfig 2006-07-06 16:58:16.000000000 -0700
265@@ -71,6 +71,7 @@
266 CONFIG_GENERIC_FIND_NEXT_BIT=y
267 CONFIG_GENERIC_HWEIGHT=y
268 CONFIG_GENERIC_CALIBRATE_DELAY=y
269+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
270 CONFIG_DMA_NONCOHERENT=y
271 CONFIG_DMA_NEED_PCI_MAP_STATE=y
272 CONFIG_MIPS_NILE4=y
273diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/malta_defconfig linux-2.6.17.4-mips/arch/mips/configs/malta_defconfig
274--- linux-2.6.17.4-kernel/arch/mips/configs/malta_defconfig 2006-07-06 13:02:28.000000000 -0700
275+++ linux-2.6.17.4-mips/arch/mips/configs/malta_defconfig 2006-07-06 16:58:16.000000000 -0700
276@@ -67,6 +67,7 @@
277 CONFIG_GENERIC_FIND_NEXT_BIT=y
278 CONFIG_GENERIC_HWEIGHT=y
279 CONFIG_GENERIC_CALIBRATE_DELAY=y
280+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
281 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
282 CONFIG_DMA_NONCOHERENT=y
283 CONFIG_DMA_NEED_PCI_MAP_STATE=y
284diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/mipssim_defconfig linux-2.6.17.4-mips/arch/mips/configs/mipssim_defconfig
285--- linux-2.6.17.4-kernel/arch/mips/configs/mipssim_defconfig 2006-07-06 13:02:28.000000000 -0700
286+++ linux-2.6.17.4-mips/arch/mips/configs/mipssim_defconfig 2006-07-06 16:58:16.000000000 -0700
287@@ -67,6 +67,7 @@
288 CONFIG_GENERIC_FIND_NEXT_BIT=y
289 CONFIG_GENERIC_HWEIGHT=y
290 CONFIG_GENERIC_CALIBRATE_DELAY=y
291+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
292 CONFIG_DMA_NONCOHERENT=y
293 CONFIG_DMA_NEED_PCI_MAP_STATE=y
294 # CONFIG_CPU_BIG_ENDIAN is not set
295diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/mpc30x_defconfig linux-2.6.17.4-mips/arch/mips/configs/mpc30x_defconfig
296--- linux-2.6.17.4-kernel/arch/mips/configs/mpc30x_defconfig 2006-07-06 13:02:28.000000000 -0700
297+++ linux-2.6.17.4-mips/arch/mips/configs/mpc30x_defconfig 2006-07-06 16:58:16.000000000 -0700
298@@ -75,6 +75,7 @@
299 CONFIG_GENERIC_FIND_NEXT_BIT=y
300 CONFIG_GENERIC_HWEIGHT=y
301 CONFIG_GENERIC_CALIBRATE_DELAY=y
302+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
303 CONFIG_DMA_NONCOHERENT=y
304 CONFIG_DMA_NEED_PCI_MAP_STATE=y
305 # CONFIG_CPU_BIG_ENDIAN is not set
306diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ocelot_3_defconfig linux-2.6.17.4-mips/arch/mips/configs/ocelot_3_defconfig
307--- linux-2.6.17.4-kernel/arch/mips/configs/ocelot_3_defconfig 2006-07-06 13:02:28.000000000 -0700
308+++ linux-2.6.17.4-mips/arch/mips/configs/ocelot_3_defconfig 2006-07-06 16:58:16.000000000 -0700
309@@ -67,6 +67,7 @@
310 CONFIG_GENERIC_FIND_NEXT_BIT=y
311 CONFIG_GENERIC_HWEIGHT=y
312 CONFIG_GENERIC_CALIBRATE_DELAY=y
313+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
314 CONFIG_DMA_NONCOHERENT=y
315 CONFIG_DMA_NEED_PCI_MAP_STATE=y
316 CONFIG_CPU_BIG_ENDIAN=y
317diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ocelot_c_defconfig linux-2.6.17.4-mips/arch/mips/configs/ocelot_c_defconfig
318--- linux-2.6.17.4-kernel/arch/mips/configs/ocelot_c_defconfig 2006-07-06 13:02:28.000000000 -0700
319+++ linux-2.6.17.4-mips/arch/mips/configs/ocelot_c_defconfig 2006-07-06 16:58:16.000000000 -0700
320@@ -67,6 +67,7 @@
321 CONFIG_GENERIC_FIND_NEXT_BIT=y
322 CONFIG_GENERIC_HWEIGHT=y
323 CONFIG_GENERIC_CALIBRATE_DELAY=y
324+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
325 CONFIG_DMA_NONCOHERENT=y
326 CONFIG_DMA_NEED_PCI_MAP_STATE=y
327 CONFIG_CPU_BIG_ENDIAN=y
328diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ocelot_defconfig linux-2.6.17.4-mips/arch/mips/configs/ocelot_defconfig
329--- linux-2.6.17.4-kernel/arch/mips/configs/ocelot_defconfig 2006-07-06 13:02:28.000000000 -0700
330+++ linux-2.6.17.4-mips/arch/mips/configs/ocelot_defconfig 2006-07-06 16:58:16.000000000 -0700
331@@ -67,6 +67,7 @@
332 CONFIG_GENERIC_FIND_NEXT_BIT=y
333 CONFIG_GENERIC_HWEIGHT=y
334 CONFIG_GENERIC_CALIBRATE_DELAY=y
335+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
336 CONFIG_DMA_NONCOHERENT=y
337 CONFIG_DMA_NEED_PCI_MAP_STATE=y
338 CONFIG_CPU_BIG_ENDIAN=y
339diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ocelot_g_defconfig linux-2.6.17.4-mips/arch/mips/configs/ocelot_g_defconfig
340--- linux-2.6.17.4-kernel/arch/mips/configs/ocelot_g_defconfig 2006-07-06 13:02:28.000000000 -0700
341+++ linux-2.6.17.4-mips/arch/mips/configs/ocelot_g_defconfig 2006-07-06 16:58:16.000000000 -0700
342@@ -67,6 +67,7 @@
343 CONFIG_GENERIC_FIND_NEXT_BIT=y
344 CONFIG_GENERIC_HWEIGHT=y
345 CONFIG_GENERIC_CALIBRATE_DELAY=y
346+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
347 CONFIG_DMA_NONCOHERENT=y
348 CONFIG_DMA_NEED_PCI_MAP_STATE=y
349 CONFIG_CPU_BIG_ENDIAN=y
350diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/pb1100_defconfig linux-2.6.17.4-mips/arch/mips/configs/pb1100_defconfig
351--- linux-2.6.17.4-kernel/arch/mips/configs/pb1100_defconfig 2006-07-06 13:02:28.000000000 -0700
352+++ linux-2.6.17.4-mips/arch/mips/configs/pb1100_defconfig 2006-07-06 16:58:16.000000000 -0700
353@@ -67,6 +67,7 @@
354 CONFIG_GENERIC_FIND_NEXT_BIT=y
355 CONFIG_GENERIC_HWEIGHT=y
356 CONFIG_GENERIC_CALIBRATE_DELAY=y
357+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
358 CONFIG_DMA_NONCOHERENT=y
359 CONFIG_DMA_NEED_PCI_MAP_STATE=y
360 # CONFIG_CPU_BIG_ENDIAN is not set
361diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/pb1500_defconfig linux-2.6.17.4-mips/arch/mips/configs/pb1500_defconfig
362--- linux-2.6.17.4-kernel/arch/mips/configs/pb1500_defconfig 2006-07-06 13:02:28.000000000 -0700
363+++ linux-2.6.17.4-mips/arch/mips/configs/pb1500_defconfig 2006-07-06 16:58:16.000000000 -0700
364@@ -67,6 +67,7 @@
365 CONFIG_GENERIC_FIND_NEXT_BIT=y
366 CONFIG_GENERIC_HWEIGHT=y
367 CONFIG_GENERIC_CALIBRATE_DELAY=y
368+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
369 CONFIG_DMA_NONCOHERENT=y
370 CONFIG_DMA_NEED_PCI_MAP_STATE=y
371 # CONFIG_CPU_BIG_ENDIAN is not set
372diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/pb1550_defconfig linux-2.6.17.4-mips/arch/mips/configs/pb1550_defconfig
373--- linux-2.6.17.4-kernel/arch/mips/configs/pb1550_defconfig 2006-07-06 13:02:28.000000000 -0700
374+++ linux-2.6.17.4-mips/arch/mips/configs/pb1550_defconfig 2006-07-06 16:58:16.000000000 -0700
375@@ -67,6 +67,7 @@
376 CONFIG_GENERIC_FIND_NEXT_BIT=y
377 CONFIG_GENERIC_HWEIGHT=y
378 CONFIG_GENERIC_CALIBRATE_DELAY=y
379+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
380 CONFIG_DMA_NONCOHERENT=y
381 CONFIG_DMA_NEED_PCI_MAP_STATE=y
382 CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y
383diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/pnx8550-jbs_defconfig linux-2.6.17.4-mips/arch/mips/configs/pnx8550-jbs_defconfig
384--- linux-2.6.17.4-kernel/arch/mips/configs/pnx8550-jbs_defconfig 2006-07-06 13:02:28.000000000 -0700
385+++ linux-2.6.17.4-mips/arch/mips/configs/pnx8550-jbs_defconfig 2006-07-06 16:58:16.000000000 -0700
386@@ -67,6 +67,7 @@
387 CONFIG_GENERIC_FIND_NEXT_BIT=y
388 CONFIG_GENERIC_HWEIGHT=y
389 CONFIG_GENERIC_CALIBRATE_DELAY=y
390+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
391 CONFIG_DMA_NONCOHERENT=y
392 CONFIG_DMA_NEED_PCI_MAP_STATE=y
393 # CONFIG_CPU_BIG_ENDIAN is not set
394diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/pnx8550-v2pci_defconfig linux-2.6.17.4-mips/arch/mips/configs/pnx8550-v2pci_defconfig
395--- linux-2.6.17.4-kernel/arch/mips/configs/pnx8550-v2pci_defconfig 2006-07-06 13:02:28.000000000 -0700
396+++ linux-2.6.17.4-mips/arch/mips/configs/pnx8550-v2pci_defconfig 2006-07-06 16:58:16.000000000 -0700
397@@ -67,6 +67,7 @@
398 CONFIG_GENERIC_FIND_NEXT_BIT=y
399 CONFIG_GENERIC_HWEIGHT=y
400 CONFIG_GENERIC_CALIBRATE_DELAY=y
401+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
402 CONFIG_DMA_NONCOHERENT=y
403 CONFIG_DMA_NEED_PCI_MAP_STATE=y
404 # CONFIG_CPU_BIG_ENDIAN is not set
405diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/qemu_defconfig linux-2.6.17.4-mips/arch/mips/configs/qemu_defconfig
406--- linux-2.6.17.4-kernel/arch/mips/configs/qemu_defconfig 2006-07-06 13:02:28.000000000 -0700
407+++ linux-2.6.17.4-mips/arch/mips/configs/qemu_defconfig 2006-07-06 16:58:16.000000000 -0700
408@@ -67,6 +67,7 @@
409 CONFIG_GENERIC_FIND_NEXT_BIT=y
410 CONFIG_GENERIC_HWEIGHT=y
411 CONFIG_GENERIC_CALIBRATE_DELAY=y
412+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
413 CONFIG_DMA_COHERENT=y
414 CONFIG_GENERIC_ISA_DMA=y
415 CONFIG_I8259=y
416diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/rbhma4500_defconfig linux-2.6.17.4-mips/arch/mips/configs/rbhma4500_defconfig
417--- linux-2.6.17.4-kernel/arch/mips/configs/rbhma4500_defconfig 2006-07-06 13:02:28.000000000 -0700
418+++ linux-2.6.17.4-mips/arch/mips/configs/rbhma4500_defconfig 2006-07-06 16:58:16.000000000 -0700
419@@ -74,6 +74,7 @@
420 CONFIG_GENERIC_FIND_NEXT_BIT=y
421 CONFIG_GENERIC_HWEIGHT=y
422 CONFIG_GENERIC_CALIBRATE_DELAY=y
423+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
424 CONFIG_DMA_NONCOHERENT=y
425 CONFIG_DMA_NEED_PCI_MAP_STATE=y
426 CONFIG_GENERIC_ISA_DMA=y
427diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/rm200_defconfig linux-2.6.17.4-mips/arch/mips/configs/rm200_defconfig
428--- linux-2.6.17.4-kernel/arch/mips/configs/rm200_defconfig 2006-07-06 13:02:28.000000000 -0700
429+++ linux-2.6.17.4-mips/arch/mips/configs/rm200_defconfig 2006-07-06 16:58:16.000000000 -0700
430@@ -67,6 +67,7 @@
431 CONFIG_GENERIC_FIND_NEXT_BIT=y
432 CONFIG_GENERIC_HWEIGHT=y
433 CONFIG_GENERIC_CALIBRATE_DELAY=y
434+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
435 CONFIG_ARC=y
436 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
437 CONFIG_DMA_NONCOHERENT=y
438diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/sb1250-swarm_defconfig linux-2.6.17.4-mips/arch/mips/configs/sb1250-swarm_defconfig
439--- linux-2.6.17.4-kernel/arch/mips/configs/sb1250-swarm_defconfig 2006-07-06 13:02:28.000000000 -0700
440+++ linux-2.6.17.4-mips/arch/mips/configs/sb1250-swarm_defconfig 2006-07-06 16:58:16.000000000 -0700
441@@ -84,6 +84,7 @@
442 CONFIG_GENERIC_FIND_NEXT_BIT=y
443 CONFIG_GENERIC_HWEIGHT=y
444 CONFIG_GENERIC_CALIBRATE_DELAY=y
445+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
446 CONFIG_DMA_COHERENT=y
447 CONFIG_CPU_BIG_ENDIAN=y
448 # CONFIG_CPU_LITTLE_ENDIAN is not set
449diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/sead_defconfig linux-2.6.17.4-mips/arch/mips/configs/sead_defconfig
450--- linux-2.6.17.4-kernel/arch/mips/configs/sead_defconfig 2006-07-06 13:02:28.000000000 -0700
451+++ linux-2.6.17.4-mips/arch/mips/configs/sead_defconfig 2006-07-06 16:58:16.000000000 -0700
452@@ -67,6 +67,7 @@
453 CONFIG_GENERIC_FIND_NEXT_BIT=y
454 CONFIG_GENERIC_HWEIGHT=y
455 CONFIG_GENERIC_CALIBRATE_DELAY=y
456+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
457 CONFIG_DMA_NONCOHERENT=y
458 CONFIG_DMA_NEED_PCI_MAP_STATE=y
459 # CONFIG_CPU_BIG_ENDIAN is not set
460diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/tb0226_defconfig linux-2.6.17.4-mips/arch/mips/configs/tb0226_defconfig
461--- linux-2.6.17.4-kernel/arch/mips/configs/tb0226_defconfig 2006-07-06 13:02:28.000000000 -0700
462+++ linux-2.6.17.4-mips/arch/mips/configs/tb0226_defconfig 2006-07-06 16:58:16.000000000 -0700
463@@ -77,6 +77,7 @@
464 CONFIG_GENERIC_FIND_NEXT_BIT=y
465 CONFIG_GENERIC_HWEIGHT=y
466 CONFIG_GENERIC_CALIBRATE_DELAY=y
467+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
468 CONFIG_DMA_NONCOHERENT=y
469 CONFIG_DMA_NEED_PCI_MAP_STATE=y
470 # CONFIG_CPU_BIG_ENDIAN is not set
471diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/tb0229_defconfig linux-2.6.17.4-mips/arch/mips/configs/tb0229_defconfig
472--- linux-2.6.17.4-kernel/arch/mips/configs/tb0229_defconfig 2006-07-06 13:02:28.000000000 -0700
473+++ linux-2.6.17.4-mips/arch/mips/configs/tb0229_defconfig 2006-07-06 16:58:16.000000000 -0700
474@@ -77,6 +77,7 @@
475 CONFIG_GENERIC_FIND_NEXT_BIT=y
476 CONFIG_GENERIC_HWEIGHT=y
477 CONFIG_GENERIC_CALIBRATE_DELAY=y
478+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
479 CONFIG_DMA_NONCOHERENT=y
480 CONFIG_DMA_NEED_PCI_MAP_STATE=y
481 # CONFIG_CPU_BIG_ENDIAN is not set
482diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/workpad_defconfig linux-2.6.17.4-mips/arch/mips/configs/workpad_defconfig
483--- linux-2.6.17.4-kernel/arch/mips/configs/workpad_defconfig 2006-07-06 13:02:28.000000000 -0700
484+++ linux-2.6.17.4-mips/arch/mips/configs/workpad_defconfig 2006-07-06 16:58:16.000000000 -0700
485@@ -73,6 +73,7 @@
486 CONFIG_GENERIC_FIND_NEXT_BIT=y
487 CONFIG_GENERIC_HWEIGHT=y
488 CONFIG_GENERIC_CALIBRATE_DELAY=y
489+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
490 CONFIG_DMA_NONCOHERENT=y
491 CONFIG_DMA_NEED_PCI_MAP_STATE=y
492 # CONFIG_CPU_BIG_ENDIAN is not set
493diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/yosemite_defconfig linux-2.6.17.4-mips/arch/mips/configs/yosemite_defconfig
494--- linux-2.6.17.4-kernel/arch/mips/configs/yosemite_defconfig 2006-07-06 13:02:28.000000000 -0700
495+++ linux-2.6.17.4-mips/arch/mips/configs/yosemite_defconfig 2006-07-06 16:58:16.000000000 -0700
496@@ -68,6 +68,7 @@
497 CONFIG_GENERIC_FIND_NEXT_BIT=y
498 CONFIG_GENERIC_HWEIGHT=y
499 CONFIG_GENERIC_CALIBRATE_DELAY=y
500+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
501 CONFIG_DMA_COHERENT=y
502 CONFIG_CPU_BIG_ENDIAN=y
503 # CONFIG_CPU_LITTLE_ENDIAN is not set
504diff -Naur linux-2.6.17.4-kernel/arch/mips/defconfig linux-2.6.17.4-mips/arch/mips/defconfig
505--- linux-2.6.17.4-kernel/arch/mips/defconfig 2006-07-06 13:02:28.000000000 -0700
506+++ linux-2.6.17.4-mips/arch/mips/defconfig 2006-07-06 16:58:16.000000000 -0700
507@@ -67,6 +67,7 @@
508 CONFIG_GENERIC_FIND_NEXT_BIT=y
509 CONFIG_GENERIC_HWEIGHT=y
510 CONFIG_GENERIC_CALIBRATE_DELAY=y
511+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
512 CONFIG_ARC=y
513 CONFIG_DMA_NONCOHERENT=y
514 CONFIG_DMA_NEED_PCI_MAP_STATE=y
515diff -Naur linux-2.6.17.4-kernel/arch/mips/Kconfig linux-2.6.17.4-mips/arch/mips/Kconfig
516--- linux-2.6.17.4-kernel/arch/mips/Kconfig 2006-07-06 13:02:28.000000000 -0700
517+++ linux-2.6.17.4-mips/arch/mips/Kconfig 2006-07-06 16:58:16.000000000 -0700
518@@ -278,6 +278,7 @@
519 select SYS_SUPPORTS_64BIT_KERNEL
520 select SYS_SUPPORTS_BIG_ENDIAN
521 select SYS_SUPPORTS_LITTLE_ENDIAN
522+ select SYS_SUPPORTS_MULTITHREADING if EXPERIMENTAL
523 help
524 This enables support for the MIPS Technologies Atlas evaluation
525 board.
526@@ -294,6 +295,7 @@
527 select I8259
528 select MIPS_BOARDS_GEN
529 select MIPS_BONITO64
530+ select MIPS_CPU_SCACHE
531 select MIPS_GT64120
532 select MIPS_MSC
533 select SWAP_IO_SPACE
534@@ -306,6 +308,7 @@
535 select SYS_SUPPORTS_64BIT_KERNEL
536 select SYS_SUPPORTS_BIG_ENDIAN
537 select SYS_SUPPORTS_LITTLE_ENDIAN
538+ select SYS_SUPPORTS_MULTITHREADING
539 help
540 This enables support for the MIPS Technologies Malta evaluation
541 board.
542@@ -438,11 +441,13 @@
543
544 config PNX8550_V2PCI
545 bool "Philips PNX8550 based Viper2-PCI board"
546+ depends on BROKEN
547 select PNX8550
548 select SYS_SUPPORTS_LITTLE_ENDIAN
549
550 config PNX8550_JBS
551 bool "Philips PNX8550 based JBS board"
552+ depends on BROKEN
553 select PNX8550
554 select SYS_SUPPORTS_LITTLE_ENDIAN
555
556@@ -506,8 +511,6 @@
557 config MACH_VR41XX
558 bool "NEC VR41XX-based machines"
559 select SYS_HAS_CPU_VR41XX
560- select SYS_SUPPORTS_32BIT_KERNEL
561- select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
562
563 config PMC_YOSEMITE
564 bool "PMC-Sierra Yosemite eval board"
565@@ -522,6 +525,7 @@
566 select SYS_SUPPORTS_64BIT_KERNEL
567 select SYS_SUPPORTS_BIG_ENDIAN
568 select SYS_SUPPORTS_HIGHMEM
569+ select SYS_SUPPORTS_SMP
570 help
571 Yosemite is an evaluation board for the RM9000x2 processor
572 manufactured by PMC-Sierra.
573@@ -555,6 +559,7 @@
574 select HW_HAS_EISA
575 select IP22_CPU_SCACHE
576 select IRQ_CPU
577+ select NO_ISA if ISA
578 select SWAP_IO_SPACE
579 select SYS_HAS_CPU_R4X00
580 select SYS_HAS_CPU_R5000
581@@ -577,6 +582,7 @@
582 select SYS_HAS_CPU_R10000
583 select SYS_SUPPORTS_64BIT_KERNEL
584 select SYS_SUPPORTS_BIG_ENDIAN
585+ select SYS_SUPPORTS_SMP
586 help
587 This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics
588 workstations. To compile a Linux kernel that runs on these, say Y
589@@ -1035,6 +1041,9 @@
590 config HAVE_STD_PC_SERIAL_PORT
591 bool
592
593+config VR4181
594+ bool
595+
596 config ARC_CONSOLE
597 bool "ARC console support"
598 depends on SGI_IP22 || SNI_RM200_PCI
599@@ -1155,7 +1164,7 @@
600 select CPU_SUPPORTS_32BIT_KERNEL
601 select CPU_SUPPORTS_64BIT_KERNEL
602 help
603- The options selects support for the NEC VR4100 series of processors.
604+ The options selects support for the NEC VR41xx series of processors.
605 Only choose this option if you have one of these processors as a
606 kernel built with this option will not run on any other type of
607 processor or vice versa.
608@@ -1211,7 +1220,7 @@
609 select CPU_SUPPORTS_32BIT_KERNEL
610 help
611 MIPS Technologies R6000 and R6000A series processors. Note these
612- processors are extremly rare and the support for them is incomplete.
613+ processors are extremely rare and the support for them is incomplete.
614
615 config CPU_NEVADA
616 bool "RM52xx"
617@@ -1332,7 +1341,7 @@
618 endmenu
619
620 #
621-# These two indicate any levelof the MIPS32 and MIPS64 architecture
622+# These two indicate any level of the MIPS32 and MIPS64 architecture
623 #
624 config CPU_MIPS32
625 bool
626@@ -1343,7 +1352,7 @@
627 default y if CPU_MIPS64_R1 || CPU_MIPS64_R2
628
629 #
630-# These two indicate the revision of the architecture, either 32 bot 64 bit.
631+# These two indicate the revision of the architecture, either Release 1 or Release 2
632 #
633 config CPU_MIPSR1
634 bool
635@@ -1436,6 +1445,13 @@
636 bool
637 select BOARD_SCACHE
638
639+#
640+# Support for a MIPS32 / MIPS64 style S-caches
641+#
642+config MIPS_CPU_SCACHE
643+ bool
644+ select BOARD_SCACHE
645+
646 config R5000_CPU_SCACHE
647 bool
648 select BOARD_SCACHE
649@@ -1455,32 +1471,57 @@
650 config CPU_HAS_PREFETCH
651 bool
652
653-config MIPS_MT
654- bool "Enable MIPS MT"
655-
656 choice
657 prompt "MIPS MT options"
658- depends on MIPS_MT
659+
660+config MIPS_MT_DISABLED
661+ bool "Disable multithreading support."
662+ help
663+ Use this option if your workload can't take advantage of
664+ MIPS hardware multithreading support. On systems that don't have
665+ the option of an MT-enabled processor this option will be the only
666+ option in this menu.
667
668 config MIPS_MT_SMTC
669 bool "SMTC: Use all TCs on all VPEs for SMP"
670+ depends on CPU_MIPS32_R2
671+ #depends on CPU_MIPS64_R2 # once there is hardware ...
672+ depends on SYS_SUPPORTS_MULTITHREADING
673 select CPU_MIPSR2_IRQ_VI
674 select CPU_MIPSR2_SRS
675+ select MIPS_MT
676 select SMP
677+ help
678+ This is a kernel model which is known a SMTC or lately has been
679+ marketesed into SMVP.
680
681 config MIPS_MT_SMP
682 bool "Use 1 TC on each available VPE for SMP"
683+ depends on SYS_SUPPORTS_MULTITHREADING
684+ select CPU_MIPSR2_IRQ_VI
685+ select CPU_MIPSR2_SRS
686+ select MIPS_MT
687 select SMP
688+ help
689+ This is a kernel model which is also known a VSMP or lately
690+ has been marketesed into SMVP.
691
692 config MIPS_VPE_LOADER
693 bool "VPE loader support."
694- depends on MIPS_MT
695+ depends on SYS_SUPPORTS_MULTITHREADING
696+ select MIPS_MT
697 help
698 Includes a loader for loading an elf relocatable object
699 onto another VPE and running it.
700
701 endchoice
702
703+config MIPS_MT
704+ bool
705+
706+config SYS_SUPPORTS_MULTITHREADING
707+ bool
708+
709 config MIPS_MT_FPAFF
710 bool "Dynamic FPU affinity for FP-intensive threads"
711 depends on MIPS_MT
712@@ -1537,32 +1578,23 @@
713 config CPU_HAS_WB
714 bool
715
716+#
717+# Vectored interrupt mode is an R2 feature
718+#
719 config CPU_MIPSR2_IRQ_VI
720- bool "Vectored interrupt mode"
721- depends on CPU_MIPSR2
722- help
723- Vectored interrupt mode allowing faster dispatching of interrupts.
724- The board support code needs to be written to take advantage of this
725- mode. Compatibility code is included to allow the kernel to run on
726- a CPU that does not support vectored interrupts. It's safe to
727- say Y here.
728+ bool
729
730+#
731+# Extended interrupt mode is an R2 feature
732+#
733 config CPU_MIPSR2_IRQ_EI
734- bool "External interrupt controller mode"
735- depends on CPU_MIPSR2
736- help
737- Extended interrupt mode takes advantage of an external interrupt
738- controller to allow fast dispatching from many possible interrupt
739- sources. Say N unless you know that external interrupt support is
740- required.
741+ bool
742
743+#
744+# Shadow registers are an R2 feature
745+#
746 config CPU_MIPSR2_SRS
747- bool "Make shadow set registers available for interrupt handlers"
748- depends on CPU_MIPSR2_IRQ_VI || CPU_MIPSR2_IRQ_EI
749- help
750- Allow the kernel to use shadow register sets for fast interrupts.
751- Interrupt handlers must be specially written to use shadow sets.
752- Say N unless you know that shadow register set upport is needed.
753+ bool
754
755 config CPU_HAS_SYNC
756 bool
757@@ -1616,8 +1648,8 @@
758
759 config SMP
760 bool "Multi-Processing support"
761- depends on CPU_RM9000 || ((SIBYTE_BCM1x80 || SIBYTE_BCM1x55 || SIBYTE_SB1250 || QEMU) && !SIBYTE_STANDALONE) || SGI_IP27 || MIPS_MT_SMP || MIPS_MT_SMTC
762- ---help---
763+ depends on SYS_SUPPORTS_SMP
764+ help
765 This enables support for systems with more than one CPU. If you have
766 a system with only one CPU, like most personal computers, say N. If
767 you have a system with more than one CPU, say Y.
768@@ -1636,6 +1668,9 @@
769
770 If you don't know what to do here, say N.
771
772+config SYS_SUPPORTS_SMP
773+ bool
774+
775 config NR_CPUS
776 int "Maximum number of CPUs (2-64)"
777 range 2 64
778@@ -1710,6 +1745,9 @@
779 config ISA
780 bool
781
782+config NO_ISA
783+ bool
784+
785 config EISA
786 bool "EISA support"
787 depends on HW_HAS_EISA
788diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/cpu-probe.c linux-2.6.17.4-mips/arch/mips/kernel/cpu-probe.c
789--- linux-2.6.17.4-kernel/arch/mips/kernel/cpu-probe.c 2006-07-06 13:02:28.000000000 -0700
790+++ linux-2.6.17.4-mips/arch/mips/kernel/cpu-probe.c 2006-07-06 16:58:16.000000000 -0700
791@@ -111,7 +111,6 @@
792 case CPU_R5000:
793 case CPU_NEVADA:
794 case CPU_RM7000:
795- case CPU_RM9000:
796 case CPU_TX49XX:
797 case CPU_4KC:
798 case CPU_4KEC:
799@@ -137,6 +136,14 @@
800 } else
801 printk(" unavailable.\n");
802 break;
803+ case CPU_RM9000:
804+ if ((c->processor_id & 0x00ff) >= 0x40) {
805+ cpu_wait = r4k_wait;
806+ printk(" available.\n");
807+ } else {
808+ printk(" unavailable.\n");
809+ }
810+ break;
811 default:
812 printk(" unavailable.\n");
813 break;
814@@ -243,9 +250,15 @@
815 break;
816 case PRID_IMP_VR41XX:
817 switch (c->processor_id & 0xf0) {
818+#ifndef CONFIG_VR4181
819 case PRID_REV_VR4111:
820 c->cputype = CPU_VR4111;
821 break;
822+#else
823+ case PRID_REV_VR4181:
824+ c->cputype = CPU_VR4181;
825+ break;
826+#endif
827 case PRID_REV_VR4121:
828 c->cputype = CPU_VR4121;
829 break;
830@@ -597,8 +610,6 @@
831 break;
832 case PRID_IMP_25KF:
833 c->cputype = CPU_25KF;
834- /* Probe for L2 cache */
835- c->scache.flags &= ~MIPS_CACHE_NOT_PRESENT;
836 break;
837 case PRID_IMP_34K:
838 c->cputype = CPU_34K;
839diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/entry.S linux-2.6.17.4-mips/arch/mips/kernel/entry.S
840--- linux-2.6.17.4-kernel/arch/mips/kernel/entry.S 2006-07-06 13:02:28.000000000 -0700
841+++ linux-2.6.17.4-mips/arch/mips/kernel/entry.S 2006-07-06 16:58:16.000000000 -0700
842@@ -87,7 +87,7 @@
843 ori v1, v0, TCSTATUS_IXMT
844 mtc0 v1, CP0_TCSTATUS
845 andi v0, TCSTATUS_IXMT
846- ehb
847+ _ehb
848 mfc0 t0, CP0_TCCONTEXT
849 DMT 9 # dmt t1
850 jal mips_ihb
851@@ -95,7 +95,7 @@
852 andi t3, t0, 0xff00
853 or t2, t2, t3
854 mtc0 t2, CP0_STATUS
855- ehb
856+ _ehb
857 andi t1, t1, VPECONTROL_TE
858 beqz t1, 1f
859 EMT
860@@ -105,7 +105,7 @@
861 xori v1, v1, TCSTATUS_IXMT
862 or v1, v0, v1
863 mtc0 v1, CP0_TCSTATUS
864- ehb
865+ _ehb
866 xor t0, t0, t3
867 mtc0 t0, CP0_TCCONTEXT
868 #endif /* CONFIG_MIPS_MT_SMTC */
869diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/gdb-low.S linux-2.6.17.4-mips/arch/mips/kernel/gdb-low.S
870--- linux-2.6.17.4-kernel/arch/mips/kernel/gdb-low.S 2006-07-06 13:02:28.000000000 -0700
871+++ linux-2.6.17.4-mips/arch/mips/kernel/gdb-low.S 2006-07-06 16:58:16.000000000 -0700
872@@ -291,7 +291,7 @@
873 ori t1, t2, TCSTATUS_IXMT
874 mtc0 t1, CP0_TCSTATUS
875 andi t2, t2, TCSTATUS_IXMT
876- ehb
877+ _ehb
878 DMT 9 # dmt t1
879 jal mips_ihb
880 nop
881@@ -310,7 +310,7 @@
882 xori t1, t1, TCSTATUS_IXMT
883 or t1, t1, t2
884 mtc0 t1, CP0_TCSTATUS
885- ehb
886+ _ehb
887 #endif /* CONFIG_MIPS_MT_SMTC */
888 LONG_L v0, GDB_FR_STATUS(sp)
889 LONG_L v1, GDB_FR_EPC(sp)
890diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/genex.S linux-2.6.17.4-mips/arch/mips/kernel/genex.S
891--- linux-2.6.17.4-kernel/arch/mips/kernel/genex.S 2006-07-06 13:02:28.000000000 -0700
892+++ linux-2.6.17.4-mips/arch/mips/kernel/genex.S 2006-07-06 16:58:16.000000000 -0700
893@@ -214,7 +214,7 @@
894 mtc0 t0, CP0_TCCONTEXT
895 xor t1, t1, t0
896 mtc0 t1, CP0_STATUS
897- ehb
898+ _ehb
899 #endif /* CONFIG_MIPS_MT_SMTC */
900 CLI
901 move a0, sp
902diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/head.S linux-2.6.17.4-mips/arch/mips/kernel/head.S
903--- linux-2.6.17.4-kernel/arch/mips/kernel/head.S 2006-07-06 13:02:28.000000000 -0700
904+++ linux-2.6.17.4-mips/arch/mips/kernel/head.S 2006-07-06 16:58:16.000000000 -0700
905@@ -96,7 +96,7 @@
906 /* Clear TKSU, leave IXMT */
907 xori t0, 0x00001800
908 mtc0 t0, CP0_TCSTATUS
909- ehb
910+ _ehb
911 /* We need to leave the global IE bit set, but clear EXL...*/
912 mfc0 t0, CP0_STATUS
913 or t0, ST0_CU0 | ST0_EXL | ST0_ERL | \set | \clr
914diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/ptrace.c linux-2.6.17.4-mips/arch/mips/kernel/ptrace.c
915--- linux-2.6.17.4-kernel/arch/mips/kernel/ptrace.c 2006-07-06 13:02:28.000000000 -0700
916+++ linux-2.6.17.4-mips/arch/mips/kernel/ptrace.c 2006-07-06 16:58:16.000000000 -0700
917@@ -21,12 +21,12 @@
918 #include <linux/mm.h>
919 #include <linux/errno.h>
920 #include <linux/ptrace.h>
921-#include <linux/audit.h>
922 #include <linux/smp.h>
923 #include <linux/smp_lock.h>
924 #include <linux/user.h>
925 #include <linux/security.h>
926-#include <linux/signal.h>
927+#include <linux/audit.h>
928+#include <linux/seccomp.h>
929
930 #include <asm/byteorder.h>
931 #include <asm/cpu.h>
932@@ -482,12 +482,16 @@
933 */
934 asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit)
935 {
936+ /* do the secure computing check first */
937+ secure_computing(regs->orig_eax);
938+
939 if (unlikely(current->audit_context) && entryexit)
940 audit_syscall_exit(AUDITSC_RESULT(regs->regs[2]),
941 regs->regs[2]);
942
943 if (!(current->ptrace & PT_PTRACED))
944 goto out;
945+
946 if (!test_thread_flag(TIF_SYSCALL_TRACE))
947 goto out;
948
949@@ -505,9 +509,14 @@
950 send_sig(current->exit_code, current, 1);
951 current->exit_code = 0;
952 }
953- out:
954+
955+out:
956+ /* There is no ->orig_eax and that's quite intensional for now making
957+ this work will require some work in various other place before it's
958+ more than a placebo. */
959+
960 if (unlikely(current->audit_context) && !entryexit)
961- audit_syscall_entry(audit_arch(), regs->regs[2],
962- regs->regs[4], regs->regs[5],
963- regs->regs[6], regs->regs[7]);
964+ audit_syscall_entry(audit_arch(), regs->orig_eax,
965+ regs->regs[4], regs->regs[5],
966+ regs->regs[6], regs->regs[7]);
967 }
968diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/r4k_switch.S linux-2.6.17.4-mips/arch/mips/kernel/r4k_switch.S
969--- linux-2.6.17.4-kernel/arch/mips/kernel/r4k_switch.S 2006-07-06 13:02:28.000000000 -0700
970+++ linux-2.6.17.4-mips/arch/mips/kernel/r4k_switch.S 2006-07-06 16:58:16.000000000 -0700
971@@ -75,8 +75,8 @@
972 and t0, t0, t1
973 LONG_S t0, ST_OFF(t3)
974
975- fpu_save_double a0 t1 t0 t2 # c0_status passed in t1
976- # clobbers t0 and t2
977+ fpu_save_double a0 t0 t1 # c0_status passed in t0
978+ # clobbers t1
979 1:
980
981 /*
982@@ -94,7 +94,7 @@
983 ori t1, t2, TCSTATUS_IXMT
984 mtc0 t1, CP0_TCSTATUS
985 andi t2, t2, TCSTATUS_IXMT
986- ehb
987+ _ehb
988 DMT 8 # dmt t0
989 move t1,ra
990 jal mips_ihb
991@@ -109,7 +109,7 @@
992 or a2, t1
993 mtc0 a2, CP0_STATUS
994 #ifdef CONFIG_MIPS_MT_SMTC
995- ehb
996+ _ehb
997 andi t0, t0, VPECONTROL_TE
998 beqz t0, 1f
999 emt
1000@@ -118,7 +118,7 @@
1001 xori t1, t1, TCSTATUS_IXMT
1002 or t1, t1, t2
1003 mtc0 t1, CP0_TCSTATUS
1004- ehb
1005+ _ehb
1006 #endif /* CONFIG_MIPS_MT_SMTC */
1007 move v0, a0
1008 jr ra
1009@@ -129,9 +129,9 @@
1010 */
1011 LEAF(_save_fp)
1012 #ifdef CONFIG_64BIT
1013- mfc0 t1, CP0_STATUS
1014+ mfc0 t0, CP0_STATUS
1015 #endif
1016- fpu_save_double a0 t1 t0 t2 # clobbers t1
1017+ fpu_save_double a0 t0 t1 # clobbers t1
1018 jr ra
1019 END(_save_fp)
1020
1021@@ -139,7 +139,10 @@
1022 * Restore a thread's fp context.
1023 */
1024 LEAF(_restore_fp)
1025- fpu_restore_double a0, t1 # clobbers t1
1026+#ifdef CONFIG_64BIT
1027+ mfc0 t0, CP0_STATUS
1028+#endif
1029+ fpu_restore_double a0 t0 t1 # clobbers t1
1030 jr ra
1031 END(_restore_fp)
1032
1033diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/scall32-o32.S linux-2.6.17.4-mips/arch/mips/kernel/scall32-o32.S
1034--- linux-2.6.17.4-kernel/arch/mips/kernel/scall32-o32.S 2006-07-06 13:02:28.000000000 -0700
1035+++ linux-2.6.17.4-mips/arch/mips/kernel/scall32-o32.S 2006-07-06 16:58:16.000000000 -0700
1036@@ -497,7 +497,7 @@
1037 sys sys_sched_get_priority_min 1
1038 sys sys_sched_rr_get_interval 2 /* 4165 */
1039 sys sys_nanosleep, 2
1040- sys sys_mremap, 4
1041+ sys sys_mremap, 5
1042 sys sys_accept 3
1043 sys sys_bind 3
1044 sys sys_connect 3 /* 4170 */
1045@@ -647,6 +647,7 @@
1046 sys sys_unshare 1
1047 sys sys_splice 4
1048 sys sys_sync_file_range 7 /* 4305 */
1049+ sys sys_tee 4
1050 .endm
1051
1052 /* We pre-compute the number of _instruction_ bytes needed to
1053diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/scall64-64.S linux-2.6.17.4-mips/arch/mips/kernel/scall64-64.S
1054--- linux-2.6.17.4-kernel/arch/mips/kernel/scall64-64.S 2006-07-06 13:02:28.000000000 -0700
1055+++ linux-2.6.17.4-mips/arch/mips/kernel/scall64-64.S 2006-07-06 16:58:16.000000000 -0700
1056@@ -462,3 +462,4 @@
1057 PTR sys_unshare
1058 PTR sys_splice
1059 PTR sys_sync_file_range
1060+ PTR sys_tee /* 5265 */
1061diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/scall64-n32.S linux-2.6.17.4-mips/arch/mips/kernel/scall64-n32.S
1062--- linux-2.6.17.4-kernel/arch/mips/kernel/scall64-n32.S 2006-07-06 13:02:28.000000000 -0700
1063+++ linux-2.6.17.4-mips/arch/mips/kernel/scall64-n32.S 2006-07-06 16:58:16.000000000 -0700
1064@@ -388,3 +388,4 @@
1065 PTR sys_unshare
1066 PTR sys_splice
1067 PTR sys_sync_file_range
1068+ PTR sys_tee
1069diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/scall64-o32.S linux-2.6.17.4-mips/arch/mips/kernel/scall64-o32.S
1070--- linux-2.6.17.4-kernel/arch/mips/kernel/scall64-o32.S 2006-07-06 13:02:28.000000000 -0700
1071+++ linux-2.6.17.4-mips/arch/mips/kernel/scall64-o32.S 2006-07-06 16:58:16.000000000 -0700
1072@@ -510,4 +510,5 @@
1073 PTR sys_unshare
1074 PTR sys_splice
1075 PTR sys32_sync_file_range /* 4305 */
1076+ PTR sys_tee
1077 .size sys_call_table,.-sys_call_table
1078diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/smp.c linux-2.6.17.4-mips/arch/mips/kernel/smp.c
1079--- linux-2.6.17.4-kernel/arch/mips/kernel/smp.c 2006-07-06 13:02:28.000000000 -0700
1080+++ linux-2.6.17.4-mips/arch/mips/kernel/smp.c 2006-07-06 16:58:16.000000000 -0700
1081@@ -336,7 +336,7 @@
1082 preempt_disable();
1083
1084 if ((atomic_read(&mm->mm_users) != 1) || (current->mm != mm)) {
1085- smp_call_function(flush_tlb_mm_ipi, (void *)mm, 1, 1);
1086+ __on_other_cores(flush_tlb_mm_ipi, (void *)mm);
1087 } else {
1088 int i;
1089 for (i = 0; i < num_online_cpus(); i++)
1090@@ -372,7 +372,7 @@
1091 fd.vma = vma;
1092 fd.addr1 = start;
1093 fd.addr2 = end;
1094- smp_call_function(flush_tlb_range_ipi, (void *)&fd, 1, 1);
1095+ __on_other_cores(flush_tlb_range_ipi, (void *)&fd);
1096 } else {
1097 int i;
1098 for (i = 0; i < num_online_cpus(); i++)
1099@@ -414,7 +414,7 @@
1100
1101 fd.vma = vma;
1102 fd.addr1 = page;
1103- smp_call_function(flush_tlb_page_ipi, (void *)&fd, 1, 1);
1104+ __on_other_cores(flush_tlb_page_ipi, (void *)&fd);
1105 } else {
1106 int i;
1107 for (i = 0; i < num_online_cpus(); i++)
1108@@ -434,8 +434,7 @@
1109
1110 void flush_tlb_one(unsigned long vaddr)
1111 {
1112- smp_call_function(flush_tlb_one_ipi, (void *) vaddr, 1, 1);
1113- local_flush_tlb_one(vaddr);
1114+ __on_each_core(flush_tlb_one_ipi, (void *) vaddr);
1115 }
1116
1117 static DEFINE_PER_CPU(struct cpu, cpu_devices);
1118diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/smtc-asm.S linux-2.6.17.4-mips/arch/mips/kernel/smtc-asm.S
1119--- linux-2.6.17.4-kernel/arch/mips/kernel/smtc-asm.S 2006-07-06 13:02:28.000000000 -0700
1120+++ linux-2.6.17.4-mips/arch/mips/kernel/smtc-asm.S 2006-07-06 16:58:16.000000000 -0700
1121@@ -52,12 +52,12 @@
1122 .set noat
1123 /* Disable thread scheduling to make Status update atomic */
1124 DMT 27 # dmt k1
1125- ehb
1126+ _ehb
1127 /* Set EXL */
1128 mfc0 k0,CP0_STATUS
1129 ori k0,k0,ST0_EXL
1130 mtc0 k0,CP0_STATUS
1131- ehb
1132+ _ehb
1133 /* Thread scheduling now inhibited by EXL. Restore TE state. */
1134 andi k1,k1,VPECONTROL_TE
1135 beqz k1,1f
1136@@ -82,7 +82,7 @@
1137 li k1,ST0_CU0
1138 or k1,k1,k0
1139 mtc0 k1,CP0_STATUS
1140- ehb
1141+ _ehb
1142 get_saved_sp
1143 /* Interrupting TC will have pre-set values in slots in the new frame */
1144 2: subu k1,k1,PT_SIZE
1145@@ -90,7 +90,7 @@
1146 lw k0,PT_TCSTATUS(k1)
1147 /* Write it to TCStatus to restore CU/KSU/IXMT state */
1148 mtc0 k0,$2,1
1149- ehb
1150+ _ehb
1151 lw k0,PT_EPC(k1)
1152 mtc0 k0,CP0_EPC
1153 /* Save all will redundantly recompute the SP, but use it for now */
1154@@ -116,7 +116,7 @@
1155 mfc0 t0,CP0_TCSTATUS
1156 ori t1,t0,TCSTATUS_IXMT
1157 mtc0 t1,CP0_TCSTATUS
1158- ehb
1159+ _ehb
1160 /* We know we're in kernel mode, so prepare stack frame */
1161 subu t1,sp,PT_SIZE
1162 sw ra,PT_EPC(t1)
1163diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/traps.c linux-2.6.17.4-mips/arch/mips/kernel/traps.c
1164--- linux-2.6.17.4-kernel/arch/mips/kernel/traps.c 2006-07-06 13:02:28.000000000 -0700
1165+++ linux-2.6.17.4-mips/arch/mips/kernel/traps.c 2006-07-06 16:58:16.000000000 -0700
1166@@ -1051,7 +1051,7 @@
1167 return (void *)old_handler;
1168 }
1169
1170-#ifdef CONFIG_CPU_MIPSR2
1171+#ifdef CONFIG_CPU_MIPSR2_SRS
1172 /*
1173 * MIPSR2 shadow register set allocation
1174 * FIXME: SMP...
1175@@ -1070,11 +1070,9 @@
1176
1177 static void mips_srs_init(void)
1178 {
1179-#ifdef CONFIG_CPU_MIPSR2_SRS
1180 shadow_registers.sr_supported = ((read_c0_srsctl() >> 26) & 0x0f) + 1;
1181 printk(KERN_INFO "%d MIPSR2 register sets available\n",
1182 shadow_registers.sr_supported);
1183-#endif
1184 shadow_registers.sr_allocated = 1; /* Set 0 used by kernel */
1185 }
1186
1187@@ -1199,7 +1197,14 @@
1188 {
1189 return set_vi_srs_handler(n, addr, 0);
1190 }
1191-#endif
1192+
1193+#else
1194+
1195+static inline void mips_srs_init(void)
1196+{
1197+}
1198+
1199+#endif /* CONFIG_CPU_MIPSR2_SRS */
1200
1201 /*
1202 * This is used by native signal handling
1203@@ -1389,9 +1394,7 @@
1204 else
1205 ebase = CAC_BASE;
1206
1207-#ifdef CONFIG_CPU_MIPSR2
1208 mips_srs_init();
1209-#endif
1210
1211 per_cpu_trap_init();
1212
1213diff -Naur linux-2.6.17.4-kernel/arch/mips/lib/iomap.c linux-2.6.17.4-mips/arch/mips/lib/iomap.c
1214--- linux-2.6.17.4-kernel/arch/mips/lib/iomap.c 2006-07-06 13:02:28.000000000 -0700
1215+++ linux-2.6.17.4-mips/arch/mips/lib/iomap.c 1969-12-31 16:00:00.000000000 -0800
1216@@ -1,78 +0,0 @@
1217-/*
1218- * iomap.c, Memory Mapped I/O routines for MIPS architecture.
1219- *
1220- * This code is based on lib/iomap.c, by Linus Torvalds.
1221- *
1222- * Copyright (C) 2004-2005 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
1223- *
1224- * This program is free software; you can redistribute it and/or modify
1225- * it under the terms of the GNU General Public License as published by
1226- * the Free Software Foundation; either version 2 of the License, or
1227- * (at your option) any later version.
1228- *
1229- * This program is distributed in the hope that it will be useful,
1230- * but WITHOUT ANY WARRANTY; without even the implied warranty of
1231- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1232- * GNU General Public License for more details.
1233- *
1234- * You should have received a copy of the GNU General Public License
1235- * along with this program; if not, write to the Free Software
1236- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1237- */
1238-#include <linux/ioport.h>
1239-#include <linux/module.h>
1240-#include <linux/pci.h>
1241-
1242-#include <asm/io.h>
1243-
1244-void __iomem *ioport_map(unsigned long port, unsigned int nr)
1245-{
1246- unsigned long end;
1247-
1248- end = port + nr - 1UL;
1249- if (ioport_resource.start > port ||
1250- ioport_resource.end < end || port > end)
1251- return NULL;
1252-
1253- return (void __iomem *)(mips_io_port_base + port);
1254-}
1255-
1256-void ioport_unmap(void __iomem *addr)
1257-{
1258-}
1259-EXPORT_SYMBOL(ioport_map);
1260-EXPORT_SYMBOL(ioport_unmap);
1261-
1262-void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)
1263-{
1264- unsigned long start, len, flags;
1265-
1266- if (dev == NULL)
1267- return NULL;
1268-
1269- start = pci_resource_start(dev, bar);
1270- len = pci_resource_len(dev, bar);
1271- if (!start || !len)
1272- return NULL;
1273-
1274- if (maxlen != 0 && len > maxlen)
1275- len = maxlen;
1276-
1277- flags = pci_resource_flags(dev, bar);
1278- if (flags & IORESOURCE_IO)
1279- return ioport_map(start, len);
1280- if (flags & IORESOURCE_MEM) {
1281- if (flags & IORESOURCE_CACHEABLE)
1282- return ioremap_cachable(start, len);
1283- return ioremap_nocache(start, len);
1284- }
1285-
1286- return NULL;
1287-}
1288-
1289-void pci_iounmap(struct pci_dev *dev, void __iomem *addr)
1290-{
1291- iounmap(addr);
1292-}
1293-EXPORT_SYMBOL(pci_iomap);
1294-EXPORT_SYMBOL(pci_iounmap);
1295diff -Naur linux-2.6.17.4-kernel/arch/mips/lib/Makefile linux-2.6.17.4-mips/arch/mips/lib/Makefile
1296--- linux-2.6.17.4-kernel/arch/mips/lib/Makefile 2006-07-06 13:02:28.000000000 -0700
1297+++ linux-2.6.17.4-mips/arch/mips/lib/Makefile 2006-07-06 16:58:16.000000000 -0700
1298@@ -5,6 +5,7 @@
1299 lib-y += csum_partial_copy.o memcpy.o promlib.o strlen_user.o strncpy_user.o \
1300 strnlen_user.o uncached.o
1301
1302-obj-y += iomap.o
1303+# libgcc-style stuff needed in the kernel
1304+lib-y += ashldi3.o ashrdi3.o lshrdi3.o
1305
1306 EXTRA_AFLAGS := $(CFLAGS)
1307diff -Naur linux-2.6.17.4-kernel/arch/mips/lib-32/dump_tlb.c linux-2.6.17.4-mips/arch/mips/lib-32/dump_tlb.c
1308--- linux-2.6.17.4-kernel/arch/mips/lib-32/dump_tlb.c 2006-07-06 13:02:28.000000000 -0700
1309+++ linux-2.6.17.4-mips/arch/mips/lib-32/dump_tlb.c 2006-07-06 16:58:16.000000000 -0700
1310@@ -41,8 +41,6 @@
1311 return "256Mb";
1312 #endif
1313 }
1314-
1315- return "unknown";
1316 }
1317
1318 #define BARRIER() \
1319diff -Naur linux-2.6.17.4-kernel/arch/mips/lib-64/dump_tlb.c linux-2.6.17.4-mips/arch/mips/lib-64/dump_tlb.c
1320--- linux-2.6.17.4-kernel/arch/mips/lib-64/dump_tlb.c 2006-07-06 13:02:28.000000000 -0700
1321+++ linux-2.6.17.4-mips/arch/mips/lib-64/dump_tlb.c 2006-07-06 16:58:16.000000000 -0700
1322@@ -32,8 +32,6 @@
1323 case PM_256M: return "256Mb";
1324 #endif
1325 }
1326-
1327- return "unknown";
1328 }
1329
1330 #define BARRIER() \
1331diff -Naur linux-2.6.17.4-kernel/arch/mips/Makefile linux-2.6.17.4-mips/arch/mips/Makefile
1332--- linux-2.6.17.4-kernel/arch/mips/Makefile 2006-07-06 13:02:28.000000000 -0700
1333+++ linux-2.6.17.4-mips/arch/mips/Makefile 2006-07-06 16:58:16.000000000 -0700
1334@@ -83,6 +83,8 @@
1335 LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
1336 MODFLAGS += -mlong-calls
1337
1338+cflags-y += -ffreestanding
1339+
1340 #
1341 # We explicitly add the endianness specifier if needed, this allows
1342 # to compile kernels with a toolchain for the other endianness. We
1343@@ -365,6 +367,7 @@
1344 cflags-$(CONFIG_PMC_YOSEMITE) += -Iinclude/asm-mips/mach-yosemite
1345 load-$(CONFIG_PMC_YOSEMITE) += 0xffffffff80100000
1346
1347+#
1348 # Qemu simulating MIPS32 4Kc
1349 #
1350 core-$(CONFIG_QEMU) += arch/mips/qemu/
1351diff -Naur linux-2.6.17.4-kernel/arch/mips/mips-boards/generic/memory.c linux-2.6.17.4-mips/arch/mips/mips-boards/generic/memory.c
1352--- linux-2.6.17.4-kernel/arch/mips/mips-boards/generic/memory.c 2006-07-06 13:02:28.000000000 -0700
1353+++ linux-2.6.17.4-mips/arch/mips/mips-boards/generic/memory.c 2006-07-06 16:58:16.000000000 -0700
1354@@ -48,34 +48,45 @@
1355 };
1356 #endif
1357
1358+/* determined physical memory size, not overridden by command line args */
1359+unsigned long physical_memsize = 0L;
1360+
1361 struct prom_pmemblock * __init prom_getmdesc(void)
1362 {
1363 char *memsize_str;
1364 unsigned int memsize;
1365 char cmdline[CL_SIZE], *ptr;
1366
1367- /* Check the command line first for a memsize directive */
1368+ /* otherwise look in the environment */
1369+ memsize_str = prom_getenv("memsize");
1370+ if (!memsize_str) {
1371+ prom_printf("memsize not set in boot prom, set to default (32Mb)\n");
1372+ physical_memsize = 0x02000000;
1373+ } else {
1374+#ifdef DEBUG
1375+ prom_printf("prom_memsize = %s\n", memsize_str);
1376+#endif
1377+ physical_memsize = simple_strtol(memsize_str, NULL, 0);
1378+ }
1379+
1380+#ifdef CONFIG_CPU_BIG_ENDIAN
1381+ /* SOC-it swaps, or perhaps doesn't swap, when DMA'ing the last
1382+ word of physical memory */
1383+ physical_memsize -= PAGE_SIZE;
1384+#endif
1385+
1386+ /* Check the command line for a memsize directive that overrides
1387+ the physical/default amount */
1388 strcpy(cmdline, arcs_cmdline);
1389 ptr = strstr(cmdline, "memsize=");
1390 if (ptr && (ptr != cmdline) && (*(ptr - 1) != ' '))
1391 ptr = strstr(ptr, " memsize=");
1392
1393- if (ptr) {
1394+ if (ptr)
1395 memsize = memparse(ptr + 8, &ptr);
1396- }
1397- else {
1398- /* otherwise look in the environment */
1399- memsize_str = prom_getenv("memsize");
1400- if (!memsize_str) {
1401- prom_printf("memsize not set in boot prom, set to default (32Mb)\n");
1402- memsize = 0x02000000;
1403- } else {
1404-#ifdef DEBUG
1405- prom_printf("prom_memsize = %s\n", memsize_str);
1406-#endif
1407- memsize = simple_strtol(memsize_str, NULL, 0);
1408- }
1409- }
1410+ else
1411+ memsize = physical_memsize;
1412+
1413 memset(mdesc, 0, sizeof(mdesc));
1414
1415 mdesc[0].type = yamon_dontuse;
1416diff -Naur linux-2.6.17.4-kernel/arch/mips/mips-boards/malta/malta_int.c linux-2.6.17.4-mips/arch/mips/mips-boards/malta/malta_int.c
1417--- linux-2.6.17.4-kernel/arch/mips/mips-boards/malta/malta_int.c 2006-07-06 13:02:28.000000000 -0700
1418+++ linux-2.6.17.4-mips/arch/mips/mips-boards/malta/malta_int.c 2006-07-06 16:58:16.000000000 -0700
1419@@ -208,23 +208,23 @@
1420 unsigned int a0 = 7;
1421 unsigned int t0;
1422
1423- t0 = s0 & 0xf000;
1424+ t0 = pending & 0xf000;
1425 t0 = t0 < 1;
1426 t0 = t0 << 2;
1427 a0 = a0 - t0;
1428- s0 = s0 << t0;
1429+ pending = pending << t0;
1430
1431- t0 = s0 & 0xc000;
1432+ t0 = pending & 0xc000;
1433 t0 = t0 < 1;
1434 t0 = t0 << 1;
1435 a0 = a0 - t0;
1436- s0 = s0 << t0;
1437+ pending = pending << t0;
1438
1439- t0 = s0 & 0x8000;
1440+ t0 = pending & 0x8000;
1441 t0 = t0 < 1;
1442 //t0 = t0 << 2;
1443 a0 = a0 - t0;
1444- //s0 = s0 << t0;
1445+ //pending = pending << t0;
1446
1447 return a0;
1448 #endif
1449diff -Naur linux-2.6.17.4-kernel/arch/mips/mm/c-r4k.c linux-2.6.17.4-mips/arch/mips/mm/c-r4k.c
1450--- linux-2.6.17.4-kernel/arch/mips/mm/c-r4k.c 2006-07-06 13:02:28.000000000 -0700
1451+++ linux-2.6.17.4-mips/arch/mips/mm/c-r4k.c 2006-07-06 16:58:16.000000000 -0700
1452@@ -24,32 +24,12 @@
1453 #include <asm/page.h>
1454 #include <asm/pgtable.h>
1455 #include <asm/r4kcache.h>
1456+#include <asm/smp.h>
1457 #include <asm/system.h>
1458 #include <asm/mmu_context.h>
1459 #include <asm/war.h>
1460 #include <asm/cacheflush.h> /* for run_uncached() */
1461
1462-
1463-/*
1464- * Special Variant of smp_call_function for use by cache functions:
1465- *
1466- * o No return value
1467- * o collapses to normal function call on UP kernels
1468- * o collapses to normal function call on systems with a single shared
1469- * primary cache.
1470- */
1471-static inline void r4k_on_each_cpu(void (*func) (void *info), void *info,
1472- int retry, int wait)
1473-{
1474- preempt_disable();
1475-
1476-#if !defined(CONFIG_MIPS_MT_SMP) && !defined(CONFIG_MIPS_MT_SMTC)
1477- smp_call_function(func, info, retry, wait);
1478-#endif
1479- func(info);
1480- preempt_enable();
1481-}
1482-
1483 /*
1484 * Must die.
1485 */
1486@@ -60,13 +40,13 @@
1487 /*
1488 * Dummy cache handling routines for machines without boardcaches
1489 */
1490-static void no_sc_noop(void) {}
1491+static void cache_noop(void) {}
1492
1493 static struct bcache_ops no_sc_ops = {
1494- .bc_enable = (void *)no_sc_noop,
1495- .bc_disable = (void *)no_sc_noop,
1496- .bc_wback_inv = (void *)no_sc_noop,
1497- .bc_inv = (void *)no_sc_noop
1498+ .bc_enable = (void *)cache_noop,
1499+ .bc_disable = (void *)cache_noop,
1500+ .bc_wback_inv = (void *)cache_noop,
1501+ .bc_inv = (void *)cache_noop
1502 };
1503
1504 struct bcache_ops *bcops = &no_sc_ops;
1505@@ -94,7 +74,9 @@
1506 {
1507 unsigned long dc_lsize = cpu_dcache_line_size();
1508
1509- if (dc_lsize == 16)
1510+ if (dc_lsize == 0)
1511+ r4k_blast_dcache_page = (void *)cache_noop;
1512+ else if (dc_lsize == 16)
1513 r4k_blast_dcache_page = blast_dcache16_page;
1514 else if (dc_lsize == 32)
1515 r4k_blast_dcache_page = r4k_blast_dcache_page_dc32;
1516@@ -106,7 +88,9 @@
1517 {
1518 unsigned long dc_lsize = cpu_dcache_line_size();
1519
1520- if (dc_lsize == 16)
1521+ if (dc_lsize == 0)
1522+ r4k_blast_dcache_page_indexed = (void *)cache_noop;
1523+ else if (dc_lsize == 16)
1524 r4k_blast_dcache_page_indexed = blast_dcache16_page_indexed;
1525 else if (dc_lsize == 32)
1526 r4k_blast_dcache_page_indexed = blast_dcache32_page_indexed;
1527@@ -118,7 +102,9 @@
1528 {
1529 unsigned long dc_lsize = cpu_dcache_line_size();
1530
1531- if (dc_lsize == 16)
1532+ if (dc_lsize == 0)
1533+ r4k_blast_dcache = (void *)cache_noop;
1534+ else if (dc_lsize == 16)
1535 r4k_blast_dcache = blast_dcache16;
1536 else if (dc_lsize == 32)
1537 r4k_blast_dcache = blast_dcache32;
1538@@ -201,7 +187,9 @@
1539 {
1540 unsigned long ic_lsize = cpu_icache_line_size();
1541
1542- if (ic_lsize == 16)
1543+ if (ic_lsize == 0)
1544+ r4k_blast_icache_page = (void *)cache_noop;
1545+ else if (ic_lsize == 16)
1546 r4k_blast_icache_page = blast_icache16_page;
1547 else if (ic_lsize == 32)
1548 r4k_blast_icache_page = blast_icache32_page;
1549@@ -216,7 +204,9 @@
1550 {
1551 unsigned long ic_lsize = cpu_icache_line_size();
1552
1553- if (ic_lsize == 16)
1554+ if (ic_lsize == 0)
1555+ r4k_blast_icache_page_indexed = (void *)cache_noop;
1556+ else if (ic_lsize == 16)
1557 r4k_blast_icache_page_indexed = blast_icache16_page_indexed;
1558 else if (ic_lsize == 32) {
1559 if (R4600_V1_INDEX_ICACHEOP_WAR && cpu_is_r4600_v1_x())
1560@@ -238,7 +228,9 @@
1561 {
1562 unsigned long ic_lsize = cpu_icache_line_size();
1563
1564- if (ic_lsize == 16)
1565+ if (ic_lsize == 0)
1566+ r4k_blast_icache = (void *)cache_noop;
1567+ else if (ic_lsize == 16)
1568 r4k_blast_icache = blast_icache16;
1569 else if (ic_lsize == 32) {
1570 if (R4600_V1_INDEX_ICACHEOP_WAR && cpu_is_r4600_v1_x())
1571@@ -258,7 +250,7 @@
1572 unsigned long sc_lsize = cpu_scache_line_size();
1573
1574 if (scache_size == 0)
1575- r4k_blast_scache_page = (void *)no_sc_noop;
1576+ r4k_blast_scache_page = (void *)cache_noop;
1577 else if (sc_lsize == 16)
1578 r4k_blast_scache_page = blast_scache16_page;
1579 else if (sc_lsize == 32)
1580@@ -276,7 +268,7 @@
1581 unsigned long sc_lsize = cpu_scache_line_size();
1582
1583 if (scache_size == 0)
1584- r4k_blast_scache_page_indexed = (void *)no_sc_noop;
1585+ r4k_blast_scache_page_indexed = (void *)cache_noop;
1586 else if (sc_lsize == 16)
1587 r4k_blast_scache_page_indexed = blast_scache16_page_indexed;
1588 else if (sc_lsize == 32)
1589@@ -294,7 +286,7 @@
1590 unsigned long sc_lsize = cpu_scache_line_size();
1591
1592 if (scache_size == 0)
1593- r4k_blast_scache = (void *)no_sc_noop;
1594+ r4k_blast_scache = (void *)cache_noop;
1595 else if (sc_lsize == 16)
1596 r4k_blast_scache = blast_scache16;
1597 else if (sc_lsize == 32)
1598@@ -320,7 +312,7 @@
1599 if (!cpu_has_dc_aliases)
1600 return;
1601
1602- r4k_on_each_cpu(local_r4k_flush_cache_all, NULL, 1, 1);
1603+ __on_each_core(local_r4k_flush_cache_all, NULL);
1604 }
1605
1606 static inline void local_r4k___flush_cache_all(void * args)
1607@@ -342,7 +334,7 @@
1608
1609 static void r4k___flush_cache_all(void)
1610 {
1611- r4k_on_each_cpu(local_r4k___flush_cache_all, NULL, 1, 1);
1612+ __on_each_core(local_r4k___flush_cache_all, NULL);
1613 }
1614
1615 static inline void local_r4k_flush_cache_range(void * args)
1616@@ -363,7 +355,7 @@
1617 static void r4k_flush_cache_range(struct vm_area_struct *vma,
1618 unsigned long start, unsigned long end)
1619 {
1620- r4k_on_each_cpu(local_r4k_flush_cache_range, vma, 1, 1);
1621+ __on_each_core(local_r4k_flush_cache_range, vma);
1622 }
1623
1624 static inline void local_r4k_flush_cache_mm(void * args)
1625@@ -392,7 +384,7 @@
1626 if (!cpu_has_dc_aliases)
1627 return;
1628
1629- r4k_on_each_cpu(local_r4k_flush_cache_mm, mm, 1, 1);
1630+ __on_each_core(local_r4k_flush_cache_mm, mm);
1631 }
1632
1633 struct flush_cache_page_args {
1634@@ -483,7 +475,7 @@
1635 args.addr = addr;
1636 args.pfn = pfn;
1637
1638- r4k_on_each_cpu(local_r4k_flush_cache_page, &args, 1, 1);
1639+ __on_each_core(local_r4k_flush_cache_page, &args);
1640 }
1641
1642 static inline void local_r4k_flush_data_cache_page(void * addr)
1643@@ -493,7 +485,7 @@
1644
1645 static void r4k_flush_data_cache_page(unsigned long addr)
1646 {
1647- r4k_on_each_cpu(local_r4k_flush_data_cache_page, (void *) addr, 1, 1);
1648+ __on_each_core(local_r4k_flush_data_cache_page, (void *) addr);
1649 }
1650
1651 struct flush_icache_range_args {
1652@@ -508,7 +500,7 @@
1653 unsigned long end = fir_args->end;
1654
1655 if (!cpu_has_ic_fills_f_dc) {
1656- if (end - start > dcache_size) {
1657+ if (end - start >= dcache_size) {
1658 r4k_blast_dcache();
1659 } else {
1660 R4600_HIT_CACHEOP_WAR_IMPL;
1661@@ -536,7 +528,7 @@
1662 args.start = start;
1663 args.end = end;
1664
1665- r4k_on_each_cpu(local_r4k_flush_icache_range, &args, 1, 1);
1666+ __on_each_core(local_r4k_flush_icache_range, &args);
1667 instruction_hazard();
1668 }
1669
1670@@ -612,7 +604,7 @@
1671 args.vma = vma;
1672 args.page = page;
1673
1674- r4k_on_each_cpu(local_r4k_flush_icache_page, &args, 1, 1);
1675+ __on_each_core(local_r4k_flush_icache_page, &args);
1676 }
1677
1678
1679@@ -683,10 +675,12 @@
1680 unsigned long addr = (unsigned long) arg;
1681
1682 R4600_HIT_CACHEOP_WAR_IMPL;
1683- protected_writeback_dcache_line(addr & ~(dc_lsize - 1));
1684+ if (dc_lsize)
1685+ protected_writeback_dcache_line(addr & ~(dc_lsize - 1));
1686 if (!cpu_icache_snoops_remote_store && scache_size)
1687 protected_writeback_scache_line(addr & ~(sc_lsize - 1));
1688- protected_flush_icache_line(addr & ~(ic_lsize - 1));
1689+ if (ic_lsize)
1690+ protected_flush_icache_line(addr & ~(ic_lsize - 1));
1691 if (MIPS4K_ICACHE_REFILL_WAR) {
1692 __asm__ __volatile__ (
1693 ".set push\n\t"
1694@@ -711,7 +705,7 @@
1695
1696 static void r4k_flush_cache_sigtramp(unsigned long addr)
1697 {
1698- r4k_on_each_cpu(local_r4k_flush_cache_sigtramp, (void *) addr, 1, 1);
1699+ __on_each_core(local_r4k_flush_cache_sigtramp, (void *) addr);
1700 }
1701
1702 static void r4k_flush_icache_all(void)
1703@@ -973,8 +967,10 @@
1704 c->icache.waysize = icache_size / c->icache.ways;
1705 c->dcache.waysize = dcache_size / c->dcache.ways;
1706
1707- c->icache.sets = icache_size / (c->icache.linesz * c->icache.ways);
1708- c->dcache.sets = dcache_size / (c->dcache.linesz * c->dcache.ways);
1709+ c->icache.sets = c->icache.linesz ?
1710+ icache_size / (c->icache.linesz * c->icache.ways) : 0;
1711+ c->dcache.sets = c->dcache.linesz ?
1712+ dcache_size / (c->dcache.linesz * c->dcache.ways) : 0;
1713
1714 /*
1715 * R10000 and R12000 P-caches are odd in a positive way. They're 32kB
1716@@ -993,10 +989,15 @@
1717 break;
1718 case CPU_24K:
1719 case CPU_34K:
1720- if (!(read_c0_config7() & (1 << 16)))
1721+ if ((read_c0_config7() & (1 << 16))) {
1722+ /* effectively physically indexed dcache,
1723+ thus no virtual aliases. */
1724+ c->dcache.flags |= MIPS_CACHE_PINDEX;
1725+ break;
1726+ }
1727 default:
1728- if (c->dcache.waysize > PAGE_SIZE)
1729- c->dcache.flags |= MIPS_CACHE_ALIASES;
1730+ if (c->dcache.waysize > PAGE_SIZE)
1731+ c->dcache.flags |= MIPS_CACHE_ALIASES;
1732 }
1733
1734 switch (c->cputype) {
1735@@ -1092,6 +1093,7 @@
1736
1737 extern int r5k_sc_init(void);
1738 extern int rm7k_sc_init(void);
1739+extern int mips_sc_init(void);
1740
1741 static void __init setup_scache(void)
1742 {
1743@@ -1139,17 +1141,29 @@
1744 return;
1745
1746 default:
1747+ if (c->isa_level == MIPS_CPU_ISA_M32R1 ||
1748+ c->isa_level == MIPS_CPU_ISA_M32R2 ||
1749+ c->isa_level == MIPS_CPU_ISA_M64R1 ||
1750+ c->isa_level == MIPS_CPU_ISA_M64R2) {
1751+#ifdef CONFIG_MIPS_CPU_SCACHE
1752+ if (mips_sc_init ()) {
1753+ scache_size = c->scache.ways * c->scache.sets * c->scache.linesz;
1754+ printk("MIPS secondary cache %ldkB, %s, linesize %d bytes.\n",
1755+ scache_size >> 10,
1756+ way_string[c->scache.ways], c->scache.linesz);
1757+ }
1758+#else
1759+ if (!(c->scache.flags & MIPS_CACHE_NOT_PRESENT))
1760+ panic("Dunno how to handle MIPS32 / MIPS64 second level cache");
1761+#endif
1762+ return;
1763+ }
1764 sc_present = 0;
1765 }
1766
1767 if (!sc_present)
1768 return;
1769
1770- if ((c->isa_level == MIPS_CPU_ISA_M32R1 ||
1771- c->isa_level == MIPS_CPU_ISA_M64R1) &&
1772- !(c->scache.flags & MIPS_CACHE_NOT_PRESENT))
1773- panic("Dunno how to handle MIPS32 / MIPS64 second level cache");
1774-
1775 /* compute a couple of other cache variables */
1776 c->scache.waysize = scache_size / c->scache.ways;
1777
1778@@ -1246,10 +1260,12 @@
1779 * This code supports virtually indexed processors and will be
1780 * unnecessarily inefficient on physically indexed processors.
1781 */
1782- shm_align_mask = max_t( unsigned long,
1783- c->dcache.sets * c->dcache.linesz - 1,
1784- PAGE_SIZE - 1);
1785-
1786+ if (c->dcache.linesz)
1787+ shm_align_mask = max_t( unsigned long,
1788+ c->dcache.sets * c->dcache.linesz - 1,
1789+ PAGE_SIZE - 1);
1790+ else
1791+ shm_align_mask = PAGE_SIZE-1;
1792 flush_cache_all = r4k_flush_cache_all;
1793 __flush_cache_all = r4k___flush_cache_all;
1794 flush_cache_mm = r4k_flush_cache_mm;
1795diff -Naur linux-2.6.17.4-kernel/arch/mips/mm/Makefile linux-2.6.17.4-mips/arch/mips/mm/Makefile
1796--- linux-2.6.17.4-kernel/arch/mips/mm/Makefile 2006-07-06 13:02:28.000000000 -0700
1797+++ linux-2.6.17.4-mips/arch/mips/mm/Makefile 2006-07-06 16:58:16.000000000 -0700
1798@@ -30,6 +30,7 @@
1799 obj-$(CONFIG_IP22_CPU_SCACHE) += sc-ip22.o
1800 obj-$(CONFIG_R5000_CPU_SCACHE) += sc-r5k.o
1801 obj-$(CONFIG_RM7000_CPU_SCACHE) += sc-rm7k.o
1802+obj-$(CONFIG_MIPS_CPU_SCACHE) += sc-mips.o
1803
1804 #
1805 # Choose one DMA coherency model
1806diff -Naur linux-2.6.17.4-kernel/arch/mips/pci/fixup-tb0219.c linux-2.6.17.4-mips/arch/mips/pci/fixup-tb0219.c
1807--- linux-2.6.17.4-kernel/arch/mips/pci/fixup-tb0219.c 2006-07-06 13:02:28.000000000 -0700
1808+++ linux-2.6.17.4-mips/arch/mips/pci/fixup-tb0219.c 2006-07-06 16:58:16.000000000 -0700
1809@@ -2,7 +2,7 @@
1810 * fixup-tb0219.c, The TANBAC TB0219 specific PCI fixups.
1811 *
1812 * Copyright (C) 2003 Megasolution Inc. <matsu@megasolution.jp>
1813- * Copyright (C) 2004 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
1814+ * Copyright (C) 2004-2005 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
1815 *
1816 * This program is free software; you can redistribute it and/or modify
1817 * it under the terms of the GNU General Public License as published by
1818diff -Naur linux-2.6.17.4-kernel/arch/mips/qemu/Makefile linux-2.6.17.4-mips/arch/mips/qemu/Makefile
1819--- linux-2.6.17.4-kernel/arch/mips/qemu/Makefile 2006-07-06 13:02:28.000000000 -0700
1820+++ linux-2.6.17.4-mips/arch/mips/qemu/Makefile 2006-07-06 16:58:16.000000000 -0700
1821@@ -4,4 +4,5 @@
1822
1823 obj-y = q-firmware.o q-irq.o q-mem.o q-setup.o
1824
1825+obj-$(CONFIG_VT) += q-vga.o
1826 obj-$(CONFIG_SMP) += q-smp.o
1827diff -Naur linux-2.6.17.4-kernel/arch/mips/qemu/q-setup.c linux-2.6.17.4-mips/arch/mips/qemu/q-setup.c
1828--- linux-2.6.17.4-kernel/arch/mips/qemu/q-setup.c 2006-07-06 13:02:28.000000000 -0700
1829+++ linux-2.6.17.4-mips/arch/mips/qemu/q-setup.c 2006-07-06 16:58:16.000000000 -0700
1830@@ -2,6 +2,8 @@
1831 #include <asm/io.h>
1832 #include <asm/time.h>
1833
1834+extern void qvga_init(void);
1835+
1836 #define QEMU_PORT_BASE 0xb4000000
1837
1838 const char *get_system_type(void)
1839@@ -21,5 +23,8 @@
1840 void __init plat_setup(void)
1841 {
1842 set_io_port_base(QEMU_PORT_BASE);
1843+#ifdef CONFIG_VT
1844+ qvga_init();
1845+#endif
1846 board_timer_setup = qemu_timer_setup;
1847 }
1848diff -Naur linux-2.6.17.4-kernel/arch/mips/sgi-ip27/ip27-irq.c linux-2.6.17.4-mips/arch/mips/sgi-ip27/ip27-irq.c
1849--- linux-2.6.17.4-kernel/arch/mips/sgi-ip27/ip27-irq.c 2006-07-06 13:02:28.000000000 -0700
1850+++ linux-2.6.17.4-mips/arch/mips/sgi-ip27/ip27-irq.c 2006-07-06 16:58:16.000000000 -0700
1851@@ -360,7 +360,7 @@
1852
1853 static unsigned long irq_map[NR_IRQS / BITS_PER_LONG];
1854
1855-static int allocate_irqno(void)
1856+int allocate_irqno(void)
1857 {
1858 int irq;
1859
1860diff -Naur linux-2.6.17.4-kernel/arch/mips/sgi-ip27/ip27-timer.c linux-2.6.17.4-mips/arch/mips/sgi-ip27/ip27-timer.c
1861--- linux-2.6.17.4-kernel/arch/mips/sgi-ip27/ip27-timer.c 2006-07-06 13:02:28.000000000 -0700
1862+++ linux-2.6.17.4-mips/arch/mips/sgi-ip27/ip27-timer.c 2006-07-06 16:58:16.000000000 -0700
1863@@ -89,11 +89,13 @@
1864 }
1865 #endif
1866
1867+static unsigned int rt_timer_irq;
1868+
1869 void ip27_rt_timer_interrupt(struct pt_regs *regs)
1870 {
1871 int cpu = smp_processor_id();
1872 int cpuA = cputoslice(cpu) == 0;
1873- int irq = 9; /* XXX Assign number */
1874+ unsigned int irq = rt_timer_irq;
1875
1876 irq_enter();
1877 write_seqlock(&xtime_lock);
1878@@ -179,13 +181,68 @@
1879 return mktime(year, month, date, hour, min, sec);
1880 }
1881
1882+static void startup_rt_irq(unsigned int irq)
1883+{
1884+}
1885+
1886+static void shutdown_rt_irq(unsigned int irq)
1887+{
1888+}
1889+
1890+static void enable_rt_irq(unsigned int irq)
1891+{
1892+}
1893+
1894+static void disable_rt_irq(unsigned int irq)
1895+{
1896+}
1897+
1898+static void mask_and_ack_rt(unsigned int irq)
1899+{
1900+}
1901+
1902+static void end_rt_irq(unsigned int irq)
1903+{
1904+}
1905+
1906+static struct hw_interrupt_type rt_irq_type = {
1907+ .typename = "SN HUB RT timer",
1908+ .startup = startup_rt_irq,
1909+ .shutdown = shutdown_rt_irq,
1910+ .enable = enable_rt_irq,
1911+ .disable = disable_rt_irq,
1912+ .ack = mask_and_ack_rt,
1913+ .end = end_rt_irq,
1914+};
1915+
1916+static struct irqaction rt_irqaction = {
1917+ .handler = ip27_rt_timer_interrupt,
1918+ .flags = SA_INTERRUPT,
1919+ .mask = CPU_MASK_NONE,
1920+ .name = "timer"
1921+};
1922+
1923+extern int allocate_irqno(void);
1924+
1925 static void ip27_timer_setup(struct irqaction *irq)
1926 {
1927+ int irqno = allocate_irqno();
1928+
1929+ if (irqno < 0)
1930+ panic("Can't allocate interrupt number for timer interrupt");
1931+
1932+ irq_desc[irqno].status = IRQ_DISABLED;
1933+ irq_desc[irqno].action = NULL;
1934+ irq_desc[irqno].depth = 1;
1935+ irq_desc[irqno].handler = &rt_irq_type;
1936+
1937 /* over-write the handler, we use our own way */
1938 irq->handler = no_action;
1939
1940 /* setup irqaction */
1941-// setup_irq(IP27_TIMER_IRQ, irq); /* XXX Can't do this yet. */
1942+ irq_desc[irqno].status |= IRQ_PER_CPU;
1943+
1944+ rt_timer_irq = irqno;
1945 }
1946
1947 void __init ip27_time_init(void)
1948diff -Naur linux-2.6.17.4-kernel/arch/mips/sgi-ip27/Kconfig linux-2.6.17.4-mips/arch/mips/sgi-ip27/Kconfig
1949--- linux-2.6.17.4-kernel/arch/mips/sgi-ip27/Kconfig 2006-07-06 13:02:28.000000000 -0700
1950+++ linux-2.6.17.4-mips/arch/mips/sgi-ip27/Kconfig 2006-07-06 16:58:16.000000000 -0700
1951@@ -35,12 +35,13 @@
1952 depends on SGI_IP27
1953 help
1954 Change the way a Linux kernel is loaded into memory on a MIPS64
1955- machine. This is required in order to support text replication and
1956+ machine. This is required in order to support text replication on
1957 NUMA. If you need to understand it, read the source code.
1958
1959 config REPLICATE_KTEXT
1960 bool "Kernel text replication support"
1961 depends on SGI_IP27
1962+ select MAPPED_KERNEL
1963 help
1964 Say Y here to enable replicating the kernel text across multiple
1965 nodes in a NUMA cluster. This trades memory for speed.
1966diff -Naur linux-2.6.17.4-kernel/arch/mips/sibyte/bcm1480/irq.c linux-2.6.17.4-mips/arch/mips/sibyte/bcm1480/irq.c
1967--- linux-2.6.17.4-kernel/arch/mips/sibyte/bcm1480/irq.c 2006-07-06 13:02:28.000000000 -0700
1968+++ linux-2.6.17.4-mips/arch/mips/sibyte/bcm1480/irq.c 2006-07-06 16:58:16.000000000 -0700
1969@@ -503,22 +503,23 @@
1970 #ifdef CONFIG_SIBYTE_BCM1480_PROF
1971 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
1972 sbprof_cpu_intr(exception_epc(regs));
1973+ else
1974 #endif
1975
1976 if (pending & CAUSEF_IP4)
1977 bcm1480_timer_interrupt(regs);
1978
1979 #ifdef CONFIG_SMP
1980- if (pending & CAUSEF_IP3)
1981+ else if (pending & CAUSEF_IP3)
1982 bcm1480_mailbox_interrupt(regs);
1983 #endif
1984
1985 #ifdef CONFIG_KGDB
1986- if (pending & CAUSEF_IP6)
1987+ else if (pending & CAUSEF_IP6)
1988 bcm1480_kgdb_interrupt(regs); /* KGDB (uart 1) */
1989 #endif
1990
1991- if (pending & CAUSEF_IP2) {
1992+ else if (pending & CAUSEF_IP2) {
1993 unsigned long long mask_h, mask_l;
1994 unsigned long base;
1995
1996@@ -534,7 +535,7 @@
1997 mask_l = __raw_readq(
1998 IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_L));
1999
2000- if (!mask_h) {
2001+ if (mask_h) {
2002 if (mask_h ^ 1)
2003 do_IRQ(63 - dclz(mask_h), regs);
2004 else
2005diff -Naur linux-2.6.17.4-kernel/arch/mips/sibyte/bcm1480/time.c linux-2.6.17.4-mips/arch/mips/sibyte/bcm1480/time.c
2006--- linux-2.6.17.4-kernel/arch/mips/sibyte/bcm1480/time.c 2006-07-06 13:02:28.000000000 -0700
2007+++ linux-2.6.17.4-mips/arch/mips/sibyte/bcm1480/time.c 2006-07-06 16:58:16.000000000 -0700
2008@@ -110,17 +110,18 @@
2009 __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS,
2010 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)));
2011
2012- /*
2013- * CPU 0 handles the global timer interrupt job
2014- */
2015 if (cpu == 0) {
2016+ /*
2017+ * CPU 0 handles the global timer interrupt job
2018+ */
2019 ll_timer_interrupt(irq, regs);
2020 }
2021-
2022- /*
2023- * every CPU should do profiling and process accouting
2024- */
2025- ll_local_timer_interrupt(irq, regs);
2026+ else {
2027+ /*
2028+ * other CPUs should just do profiling and process accounting
2029+ */
2030+ ll_local_timer_interrupt(irq, regs);
2031+ }
2032 }
2033
2034 /*
2035diff -Naur linux-2.6.17.4-kernel/arch/mips/sibyte/Kconfig linux-2.6.17.4-mips/arch/mips/sibyte/Kconfig
2036--- linux-2.6.17.4-kernel/arch/mips/sibyte/Kconfig 2006-07-06 13:02:28.000000000 -0700
2037+++ linux-2.6.17.4-mips/arch/mips/sibyte/Kconfig 2006-07-06 16:58:16.000000000 -0700
2038@@ -3,6 +3,7 @@
2039 select HW_HAS_PCI
2040 select SIBYTE_HAS_LDT
2041 select SIBYTE_SB1xxx_SOC
2042+ select SYS_SUPPORTS_SMP
2043
2044 config SIBYTE_BCM1120
2045 bool
2046@@ -30,11 +31,13 @@
2047 bool
2048 select HW_HAS_PCI
2049 select SIBYTE_SB1xxx_SOC
2050+ select SYS_SUPPORTS_SMP
2051
2052 config SIBYTE_BCM1x55
2053 bool
2054 select HW_HAS_PCI
2055 select SIBYTE_SB1xxx_SOC
2056+ select SYS_SUPPORTS_SMP
2057
2058 config SIBYTE_SB1xxx_SOC
2059 bool
2060diff -Naur linux-2.6.17.4-kernel/arch/mips/sibyte/sb1250/irq.c linux-2.6.17.4-mips/arch/mips/sibyte/sb1250/irq.c
2061--- linux-2.6.17.4-kernel/arch/mips/sibyte/sb1250/irq.c 2006-07-06 13:02:28.000000000 -0700
2062+++ linux-2.6.17.4-mips/arch/mips/sibyte/sb1250/irq.c 2006-07-06 16:58:16.000000000 -0700
2063@@ -435,13 +435,17 @@
2064 return lz;
2065 }
2066
2067+extern void sb1250_timer_interrupt(struct pt_regs *regs);
2068+extern void sb1250_mailbox_interrupt(struct pt_regs *regs);
2069+extern void sb1250_kgdb_interrupt(struct pt_regs *regs);
2070+
2071 asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
2072 {
2073 unsigned int pending;
2074
2075 #ifdef CONFIG_SIBYTE_SB1250_PROF
2076 /* Set compare to count to silence count/compare timer interrupts */
2077- write_c0_count(read_c0_count());
2078+ write_c0_compare(read_c0_count());
2079 #endif
2080
2081 /*
2082@@ -457,32 +461,32 @@
2083 pending = read_c0_cause();
2084
2085 #ifdef CONFIG_SIBYTE_SB1250_PROF
2086- if (pending & CAUSEF_IP7) { /* Cpu performance counter interrupt */
2087+ if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
2088 sbprof_cpu_intr(exception_epc(regs));
2089- }
2090+ else
2091 #endif
2092
2093 if (pending & CAUSEF_IP4)
2094 sb1250_timer_interrupt(regs);
2095
2096 #ifdef CONFIG_SMP
2097- if (pending & CAUSEF_IP3)
2098+ else if (pending & CAUSEF_IP3)
2099 sb1250_mailbox_interrupt(regs);
2100 #endif
2101
2102 #ifdef CONFIG_KGDB
2103- if (pending & CAUSEF_IP6) /* KGDB (uart 1) */
2104+ else if (pending & CAUSEF_IP6) /* KGDB (uart 1) */
2105 sb1250_kgdb_interrupt(regs);
2106 #endif
2107
2108- if (pending & CAUSEF_IP2) {
2109+ else if (pending & CAUSEF_IP2) {
2110 unsigned long long mask;
2111
2112 /*
2113 * Default...we've hit an IP[2] interrupt, which means we've
2114 * got to check the 1250 interrupt registers to figure out what
2115 * to do. Need to detect which CPU we're on, now that
2116- ~ smp_affinity is supported.
2117+ * smp_affinity is supported.
2118 */
2119 mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(),
2120 R_IMR_INTERRUPT_STATUS_BASE)));
2121diff -Naur linux-2.6.17.4-kernel/arch/mips/sibyte/swarm/setup.c linux-2.6.17.4-mips/arch/mips/sibyte/swarm/setup.c
2122--- linux-2.6.17.4-kernel/arch/mips/sibyte/swarm/setup.c 2006-07-06 13:02:28.000000000 -0700
2123+++ linux-2.6.17.4-mips/arch/mips/sibyte/swarm/setup.c 2006-07-06 16:58:16.000000000 -0700
2124@@ -72,8 +72,10 @@
2125
2126 void __init swarm_time_init(void)
2127 {
2128+#if defined(CONFIG_SIBYTE_SB1250) || defined(CONFIG_SIBYTE_BCM112X)
2129 /* Setup HPT */
2130 sb1250_hpt_setup();
2131+#endif
2132 }
2133
2134 void __init swarm_timer_setup(struct irqaction *irq)
2135diff -Naur linux-2.6.17.4-kernel/Documentation/feature-removal-schedule.txt linux-2.6.17.4-mips/Documentation/feature-removal-schedule.txt
2136--- linux-2.6.17.4-kernel/Documentation/feature-removal-schedule.txt 2006-07-06 13:02:28.000000000 -0700
2137+++ linux-2.6.17.4-mips/Documentation/feature-removal-schedule.txt 2006-07-06 16:58:16.000000000 -0700
2138@@ -147,16 +147,6 @@
2139
2140 ---------------------------
2141
2142-What: au1x00_uart driver
2143-When: January 2006
2144-Why: The 8250 serial driver now has the ability to deal with the differences
2145- between the standard 8250 family of UARTs and their slightly strange
2146- brother on Alchemy SOCs. The loss of features is not considered an
2147- issue.
2148-Who: Ralf Baechle <ralf@linux-mips.org>
2149-
2150----------------------------
2151-
2152 What: eepro100 network driver
2153 When: January 2007
2154 Why: replaced by the e100 driver
2155diff -Naur linux-2.6.17.4-kernel/drivers/char/decserial.c linux-2.6.17.4-mips/drivers/char/decserial.c
2156--- linux-2.6.17.4-kernel/drivers/char/decserial.c 2006-07-06 13:02:28.000000000 -0700
2157+++ linux-2.6.17.4-mips/drivers/char/decserial.c 2006-07-06 16:58:16.000000000 -0700
2158@@ -14,87 +14,85 @@
2159 * device. Added support for PROM console in drivers/char/tty_io.c
2160 * instead. Although it may work to enable more than one
2161 * console device I strongly recommend to use only one.
2162+ *
2163+ * Copyright (C) 2004 Maciej W. Rozycki
2164 */
2165
2166 #include <linux/config.h>
2167+#include <linux/errno.h>
2168 #include <linux/init.h>
2169-#include <asm/dec/machtype.h>
2170-
2171-#ifdef CONFIG_ZS
2172-extern int zs_init(void);
2173-#endif
2174
2175-#ifdef CONFIG_DZ
2176-extern int dz_init(void);
2177-#endif
2178+#include <asm/dec/machtype.h>
2179+#include <asm/dec/serial.h>
2180
2181-#ifdef CONFIG_SERIAL_CONSOLE
2182+extern int register_zs_hook(unsigned int channel,
2183+ struct dec_serial_hook *hook);
2184+extern int unregister_zs_hook(unsigned int channel);
2185
2186+int register_dec_serial_hook(unsigned int channel,
2187+ struct dec_serial_hook *hook)
2188+{
2189 #ifdef CONFIG_ZS
2190-extern void zs_serial_console_init(void);
2191-#endif
2192-
2193-#ifdef CONFIG_DZ
2194-extern void dz_serial_console_init(void);
2195+ if (IOASIC)
2196+ return register_zs_hook(channel, hook);
2197 #endif
2198+ return 0;
2199+}
2200
2201+int unregister_dec_serial_hook(unsigned int channel)
2202+{
2203+#ifdef CONFIG_ZS
2204+ if (IOASIC)
2205+ return unregister_zs_hook(channel);
2206 #endif
2207+ return 0;
2208+}
2209
2210-/* rs_init - starts up the serial interface -
2211- handle normal case of starting up the serial interface */
2212
2213-#ifdef CONFIG_SERIAL
2214+extern int zs_init(void);
2215+extern int dz_init(void);
2216
2217+/*
2218+ * rs_init - starts up the serial interface -
2219+ * handle normal case of starting up the serial interface
2220+ */
2221 int __init rs_init(void)
2222 {
2223-
2224-#if defined(CONFIG_ZS) && defined(CONFIG_DZ)
2225- if (IOASIC)
2226- return zs_init();
2227- else
2228- return dz_init();
2229-#else
2230-
2231 #ifdef CONFIG_ZS
2232- return zs_init();
2233+ if (IOASIC)
2234+ return zs_init();
2235 #endif
2236-
2237 #ifdef CONFIG_DZ
2238- return dz_init();
2239-#endif
2240-
2241+ if (!IOASIC)
2242+ return dz_init();
2243 #endif
2244+ return -ENXIO;
2245 }
2246
2247 __initcall(rs_init);
2248
2249-#endif
2250
2251-#ifdef CONFIG_SERIAL_CONSOLE
2252+#ifdef CONFIG_SERIAL_DEC_CONSOLE
2253+
2254+extern void zs_serial_console_init(void);
2255+extern void dz_serial_console_init(void);
2256
2257-/* serial_console_init handles the special case of starting
2258- * up the console on the serial port
2259+/*
2260+ * dec_serial_console_init handles the special case of starting
2261+ * up the console on the serial port
2262 */
2263-static int __init decserial_console_init(void)
2264+static int __init dec_serial_console_init(void)
2265 {
2266-#if defined(CONFIG_ZS) && defined(CONFIG_DZ)
2267- if (IOASIC)
2268- zs_serial_console_init();
2269- else
2270- dz_serial_console_init();
2271-#else
2272-
2273 #ifdef CONFIG_ZS
2274- zs_serial_console_init();
2275+ if (IOASIC)
2276+ zs_serial_console_init();
2277 #endif
2278-
2279 #ifdef CONFIG_DZ
2280- dz_serial_console_init();
2281-#endif
2282-
2283+ if (!IOASIC)
2284+ dz_serial_console_init();
2285 #endif
2286 return 0;
2287 }
2288-console_initcall(decserial_console_init);
2289+console_initcall(dec_serial_console_init);
2290
2291 #endif
2292diff -Naur linux-2.6.17.4-kernel/drivers/char/Kconfig linux-2.6.17.4-mips/drivers/char/Kconfig
2293--- linux-2.6.17.4-kernel/drivers/char/Kconfig 2006-07-06 13:02:28.000000000 -0700
2294+++ linux-2.6.17.4-mips/drivers/char/Kconfig 2006-07-06 16:58:16.000000000 -0700
2295@@ -340,23 +340,68 @@
2296 To compile this driver as a module, choose M here: the
2297 module will be called istallion.
2298
2299-config AU1000_UART
2300- bool "Enable Au1000 UART Support"
2301- depends on SERIAL_NONSTANDARD && MIPS
2302- help
2303- If you have an Alchemy AU1000 processor (MIPS based) and you want
2304- to use serial ports, say Y. Otherwise, say N.
2305-
2306-config AU1000_SERIAL_CONSOLE
2307- bool "Enable Au1000 serial console"
2308- depends on AU1000_UART
2309+config AU1X00_GPIO
2310+ tristate "Alchemy Au1000 GPIO device support"
2311+ depends on MIPS && SOC_AU1X00
2312+
2313+config TS_AU1X00_ADS7846
2314+ tristate "Au1000/ADS7846 touchscreen support"
2315+ depends on MIPS && SOC_AU1X00
2316+
2317+config AU1X00_USB_TTY
2318+ tristate "Au1000 USB TTY Device support"
2319+ depends on MIPS && MIPS_AU1000 && AU1000_USB_DEVICE=y && AU1000_USB_DEVICE
2320+
2321+config AU1X00_USB_RAW
2322+ tristate "Au1000 USB Raw Device support"
2323+ depends on MIPS && MIPS_AU1000 && AU1000_USB_DEVICE=y && AU1000_USB_TTY!=y && AU1X00_USB_DEVICE
2324+
2325+config SIBYTE_SB1250_DUART
2326+ bool "Support for BCM1xxx onchip DUART"
2327+ depends on MIPS && SIBYTE_SB1xxx_SOC=y
2328+
2329+config SIBYTE_SB1250_DUART_CONSOLE
2330+ bool "Console on BCM1xxx DUART"
2331+ depends on SIBYTE_SB1250_DUART
2332+
2333+config SERIAL_DEC
2334+ bool "DECstation serial support"
2335+ depends on MACH_DECSTATION
2336+ default y
2337 help
2338- If you have an Alchemy AU1000 processor (MIPS based) and you want
2339- to use a console on a serial port, say Y. Otherwise, say N.
2340+ This selects whether you want to be asked about drivers for
2341+ DECstation serial ports.
2342+
2343+ Note that the answer to this question won't directly affect the
2344+ kernel: saying N will just cause the configurator to skip all
2345+ the questions about DECstation serial ports.
2346+
2347+ If unsure, say Y.
2348+
2349+config SERIAL_DEC_CONSOLE
2350+ bool "Support for console on a DECstation serial port"
2351+ depends on SERIAL_DEC
2352+ default y
2353+ help
2354+ If you say Y here, it will be possible to use a serial port as the
2355+ system console (the system console is the device which receives all
2356+ kernel messages and warnings and which allows logins in single user
2357+ mode). Note that the firmware uses ttyS0 as the serial console on
2358+ the Maxine and ttyS2 on the others.
2359+
2360+ If unsure, say Y.
2361+
2362+config ZS
2363+ bool "Z85C30 Serial Support"
2364+ depends on SERIAL_DEC
2365+ default y
2366+ help
2367+ Documentation on the Zilog 85C350 serial communications controller
2368+ is downloadable at <http://www.zilog.com/pdfs/serial/z85c30.pdf>.
2369
2370 config QTRONIX_KEYBOARD
2371 bool "Enable Qtronix 990P Keyboard Support"
2372- depends on IT8712
2373+ depends on MIPS && (MIPS_ITE8172 || MIPS_IVR)
2374 help
2375 Images of Qtronix keyboards are at
2376 <http://www.qtronix.com/keyboard.html>.
2377@@ -368,7 +413,7 @@
2378
2379 config IT8172_SCR0
2380 bool "Enable Smart Card Reader 0 Support "
2381- depends on IT8712
2382+ depends on MIPS && (MIPS_ITE8172 || MIPS_IVR)
2383 help
2384 Say Y here to support smart-card reader 0 (SCR0) on the Integrated
2385 Technology Express, Inc. ITE8172 SBC. Vendor page at
2386@@ -377,13 +422,17 @@
2387
2388 config IT8172_SCR1
2389 bool "Enable Smart Card Reader 1 Support "
2390- depends on IT8712
2391+ depends on MIPS && (MIPS_ITE8172 || MIPS_IVR)
2392 help
2393 Say Y here to support smart-card reader 1 (SCR1) on the Integrated
2394 Technology Express, Inc. ITE8172 SBC. Vendor page at
2395 <http://www.ite.com.tw/ia/brief_it8172bsp.htm>; picture of the
2396 board at <http://www.mvista.com/partners/semiconductor/ite.html>.
2397
2398+config ITE_GPIO
2399+ tristate "ITE GPIO"
2400+ depends on MIPS && MIPS_ITE8172
2401+
2402 config A2232
2403 tristate "Commodore A2232 serial support (EXPERIMENTAL)"
2404 depends on EXPERIMENTAL && ZORRO && BROKEN_ON_SMP
2405diff -Naur linux-2.6.17.4-kernel/drivers/char/Makefile linux-2.6.17.4-mips/drivers/char/Makefile
2406--- linux-2.6.17.4-kernel/drivers/char/Makefile 2006-07-06 13:02:28.000000000 -0700
2407+++ linux-2.6.17.4-mips/drivers/char/Makefile 2006-07-06 16:58:16.000000000 -0700
2408@@ -31,6 +31,7 @@
2409 obj-$(CONFIG_A2232) += ser_a2232.o generic_serial.o
2410 obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o
2411 obj-$(CONFIG_MOXA_SMARTIO) += mxser.o
2412+obj-$(CONFIG_SIBYTE_SB1250_DUART) += sb1250_duart.o
2413 obj-$(CONFIG_COMPUTONE) += ip2/
2414 obj-$(CONFIG_RISCOM8) += riscom8.o
2415 obj-$(CONFIG_ISI) += isicom.o
2416@@ -51,6 +52,7 @@
2417 obj-$(CONFIG_VIOTAPE) += viotape.o
2418 obj-$(CONFIG_HVCS) += hvcs.o
2419 obj-$(CONFIG_SGI_MBCS) += mbcs.o
2420+obj-$(CONFIG_SERIAL_DEC) += decserial.o
2421
2422 obj-$(CONFIG_PRINTER) += lp.o
2423 obj-$(CONFIG_TIPAR) += tipar.o
2424@@ -78,6 +80,10 @@
2425 obj-$(CONFIG_HW_RANDOM) += hw_random.o
2426 obj-$(CONFIG_FTAPE) += ftape/
2427 obj-$(CONFIG_COBALT_LCD) += lcd.o
2428+obj-$(CONFIG_ITE_GPIO) += ite_gpio.o
2429+obj-$(CONFIG_AU1000_GPIO) += au1000_gpio.o
2430+obj-$(CONFIG_AU1000_USB_TTY) += au1000_usbtty.o
2431+obj-$(CONFIG_AU1000_USB_RAW) += au1000_usbraw.o
2432 obj-$(CONFIG_PPDEV) += ppdev.o
2433 obj-$(CONFIG_NWBUTTON) += nwbutton.o
2434 obj-$(CONFIG_NWFLASH) += nwflash.o
2435diff -Naur linux-2.6.17.4-kernel/drivers/char/qtronix.c linux-2.6.17.4-mips/drivers/char/qtronix.c
2436--- linux-2.6.17.4-kernel/drivers/char/qtronix.c 2006-07-06 13:02:28.000000000 -0700
2437+++ linux-2.6.17.4-mips/drivers/char/qtronix.c 2006-07-06 16:58:16.000000000 -0700
2438@@ -535,8 +535,7 @@
2439 i--;
2440 }
2441 if (count-i) {
2442- struct inode *inode = file->f_dentry->d_inode;
2443- inode->i_atime = current_fs_time(inode->i_sb);
2444+ file->f_dentry->d_inode->i_atime = get_seconds();
2445 return count-i;
2446 }
2447 if (signal_pending(current))
2448diff -Naur linux-2.6.17.4-kernel/drivers/char/rtc.c linux-2.6.17.4-mips/drivers/char/rtc.c
2449--- linux-2.6.17.4-kernel/drivers/char/rtc.c 2006-07-06 13:02:28.000000000 -0700
2450+++ linux-2.6.17.4-mips/drivers/char/rtc.c 2006-07-06 16:58:16.000000000 -0700
2451@@ -35,23 +35,22 @@
2452 * 1.09a Pete Zaitcev: Sun SPARC
2453 * 1.09b Jeff Garzik: Modularize, init cleanup
2454 * 1.09c Jeff Garzik: SMP cleanup
2455- * 1.10 Paul Barton-Davis: add support for async I/O
2456+ * 1.10 Paul Barton-Davis: add support for async I/O
2457 * 1.10a Andrea Arcangeli: Alpha updates
2458 * 1.10b Andrew Morton: SMP lock fix
2459 * 1.10c Cesar Barros: SMP locking fixes and cleanup
2460 * 1.10d Paul Gortmaker: delete paranoia check in rtc_exit
2461 * 1.10e Maciej W. Rozycki: Handle DECstation's year weirdness.
2462- * 1.11 Takashi Iwai: Kernel access functions
2463+ * 1.11 Takashi Iwai: Kernel access functions
2464 * rtc_register/rtc_unregister/rtc_control
2465 * 1.11a Daniele Bellucci: Audit create_proc_read_entry in rtc_init
2466- * 1.12 Venkatesh Pallipadi: Hooks for emulating rtc on HPET base-timer
2467+ * 1.12 Venkatesh Pallipadi: Hooks for emulating rtc on HPET base-timer
2468 * CONFIG_HPET_EMULATE_RTC
2469+ * 1.12a Maciej W. Rozycki: Handle memory-mapped chips properly.
2470 * 1.12ac Alan Cox: Allow read access to the day of week register
2471 */
2472
2473-#define RTC_VERSION "1.12ac"
2474-
2475-#define RTC_IO_EXTENT 0x8
2476+#define RTC_VERSION "1.12a"
2477
2478 /*
2479 * Note that *all* calls to CMOS_READ and CMOS_WRITE are done with
2480@@ -338,7 +337,15 @@
2481 if (rtc_has_irq == 0)
2482 return -EIO;
2483
2484- if (count < sizeof(unsigned))
2485+ /*
2486+ * Historically this function used to assume that sizeof(unsigned long)
2487+ * is the same in userspace and kernelspace. This lead to problems
2488+ * for configurations with multiple ABIs such a the MIPS o32 and 64
2489+ * ABIs supported on the same kernel. So now we support read of both
2490+ * 4 and 8 bytes and assume that's the sizeof(unsigned long) in the
2491+ * userspace ABI.
2492+ */
2493+ if (count != sizeof(unsigned int) && count != sizeof(unsigned long))
2494 return -EINVAL;
2495
2496 add_wait_queue(&rtc_wait, &wait);
2497@@ -369,10 +376,12 @@
2498 schedule();
2499 } while (1);
2500
2501- if (count < sizeof(unsigned long))
2502- retval = put_user(data, (unsigned int __user *)buf) ?: sizeof(int);
2503+ if (count == sizeof(unsigned int))
2504+ retval = put_user(data, (unsigned int __user *)buf) ?: sizeof(int);
2505 else
2506 retval = put_user(data, (unsigned long __user *)buf) ?: sizeof(long);
2507+ if (!retval)
2508+ retval = count;
2509 out:
2510 current->state = TASK_RUNNING;
2511 remove_wait_queue(&rtc_wait, &wait);
2512@@ -924,6 +933,9 @@
2513 struct sparc_isa_device *isa_dev;
2514 #endif
2515 #endif
2516+#ifndef __sparc__
2517+ void *r;
2518+#endif
2519
2520 #ifdef __sparc__
2521 for_each_ebus(ebus) {
2522@@ -969,8 +981,13 @@
2523 }
2524 no_irq:
2525 #else
2526- if (!request_region(RTC_PORT(0), RTC_IO_EXTENT, "rtc")) {
2527- printk(KERN_ERR "rtc: I/O port %d is not free.\n", RTC_PORT (0));
2528+ if (RTC_IOMAPPED)
2529+ r = request_region(RTC_PORT(0), RTC_IO_EXTENT, "rtc");
2530+ else
2531+ r = request_mem_region(RTC_PORT(0), RTC_IO_EXTENT, "rtc");
2532+ if (!r) {
2533+ printk(KERN_ERR "rtc: I/O resource %lx is not free.\n",
2534+ (long)(RTC_PORT(0)));
2535 return -EIO;
2536 }
2537
2538@@ -984,7 +1001,10 @@
2539 if(request_irq(RTC_IRQ, rtc_int_handler_ptr, SA_INTERRUPT, "rtc", NULL)) {
2540 /* Yeah right, seeing as irq 8 doesn't even hit the bus. */
2541 printk(KERN_ERR "rtc: IRQ %d is not free.\n", RTC_IRQ);
2542- release_region(RTC_PORT(0), RTC_IO_EXTENT);
2543+ if (RTC_IOMAPPED)
2544+ release_region(RTC_PORT(0), RTC_IO_EXTENT);
2545+ else
2546+ release_mem_region(RTC_PORT(0), RTC_IO_EXTENT);
2547 return -EIO;
2548 }
2549 hpet_rtc_timer_init();
2550@@ -1084,7 +1104,10 @@
2551 if (rtc_has_irq)
2552 free_irq (rtc_irq, &rtc_port);
2553 #else
2554- release_region (RTC_PORT (0), RTC_IO_EXTENT);
2555+ if (RTC_IOMAPPED)
2556+ release_region(RTC_PORT(0), RTC_IO_EXTENT);
2557+ else
2558+ release_mem_region(RTC_PORT(0), RTC_IO_EXTENT);
2559 #ifdef RTC_IRQ
2560 if (rtc_has_irq)
2561 free_irq (RTC_IRQ, NULL);
2562diff -Naur linux-2.6.17.4-kernel/drivers/ide/mips/Makefile linux-2.6.17.4-mips/drivers/ide/mips/Makefile
2563--- linux-2.6.17.4-kernel/drivers/ide/mips/Makefile 2006-07-06 13:02:28.000000000 -0700
2564+++ linux-2.6.17.4-mips/drivers/ide/mips/Makefile 2006-07-06 16:58:16.000000000 -0700
2565@@ -1,4 +1,4 @@
2566 obj-$(CONFIG_BLK_DEV_IDE_SWARM) += swarm.o
2567 obj-$(CONFIG_BLK_DEV_IDE_AU1XXX) += au1xxx-ide.o
2568
2569-EXTRA_CFLAGS := -Idrivers/ide
2570+CFLAGS_au1xxx-ide.o := -Idrivers/ide
2571diff -Naur linux-2.6.17.4-kernel/drivers/mtd/devices/docprobe.c linux-2.6.17.4-mips/drivers/mtd/devices/docprobe.c
2572--- linux-2.6.17.4-kernel/drivers/mtd/devices/docprobe.c 2006-07-06 13:02:28.000000000 -0700
2573+++ linux-2.6.17.4-mips/drivers/mtd/devices/docprobe.c 2006-07-06 16:58:16.000000000 -0700
2574@@ -84,10 +84,10 @@
2575 0xe4000000,
2576 #elif defined(CONFIG_MOMENCO_OCELOT)
2577 0x2f000000,
2578- 0xff000000,
2579+ 0xff000000,
2580 #elif defined(CONFIG_MOMENCO_OCELOT_G) || defined (CONFIG_MOMENCO_OCELOT_C)
2581- 0xff000000,
2582-##else
2583+ 0xff000000,
2584+#else
2585 #warning Unknown architecture for DiskOnChip. No default probe locations defined
2586 #endif
2587 0xffffffff };
2588diff -Naur linux-2.6.17.4-kernel/drivers/mtd/devices/Kconfig linux-2.6.17.4-mips/drivers/mtd/devices/Kconfig
2589--- linux-2.6.17.4-kernel/drivers/mtd/devices/Kconfig 2006-07-06 13:02:28.000000000 -0700
2590+++ linux-2.6.17.4-mips/drivers/mtd/devices/Kconfig 2006-07-06 16:58:16.000000000 -0700
2591@@ -47,6 +47,11 @@
2592 accelerator. Say Y here if you have a DECstation 5000/2x0 or a
2593 DECsystem 5900 equipped with such a module.
2594
2595+ If you want to compile this driver as a module ( = code which can be
2596+ inserted in and removed from the running kernel whenever you want),
2597+ say M here and read <file:Documentation/modules.txt>. The module will
2598+ be called ms02-nv.o.
2599+
2600 config MTD_DATAFLASH
2601 tristate "Support for AT45xxx DataFlash"
2602 depends on MTD && SPI_MASTER && EXPERIMENTAL
2603diff -Naur linux-2.6.17.4-kernel/drivers/mtd/maps/Kconfig linux-2.6.17.4-mips/drivers/mtd/maps/Kconfig
2604--- linux-2.6.17.4-kernel/drivers/mtd/maps/Kconfig 2006-07-06 13:02:28.000000000 -0700
2605+++ linux-2.6.17.4-mips/drivers/mtd/maps/Kconfig 2006-07-06 16:58:16.000000000 -0700
2606@@ -200,8 +200,8 @@
2607 Support for the flash chip on Tsunami TIG bus.
2608
2609 config MTD_LASAT
2610- tristate "Flash chips on LASAT board"
2611- depends on LASAT
2612+ tristate "LASAT flash device"
2613+ depends on LASAT && MTD_CFI
2614 help
2615 Support for the flash chips on the Lasat 100 and 200 boards.
2616
2617@@ -299,6 +299,18 @@
2618 Mapping for the Flaga digital module. If you don't have one, ignore
2619 this setting.
2620
2621+config MTD_XXS1500
2622+ tristate "MyCable XXS1500 Flash device"
2623+ depends on MIPS && MIPS_XXS1500
2624+ help
2625+ Flash memory access on MyCable XXS1500 Board
2626+
2627+config MTD_MTX1
2628+ tristate "4-G Systems MTX-1 Flash device"
2629+ depends on MIPS && MIPS_MTX1
2630+ help
2631+ Flash memory access on 4-G Systems MTX-1 Board
2632+
2633 config MTD_BEECH
2634 tristate "CFI Flash device mapped on IBM 405LP Beech"
2635 depends on MTD_CFI && BEECH
2636diff -Naur linux-2.6.17.4-kernel/drivers/mtd/maps/lasat.c linux-2.6.17.4-mips/drivers/mtd/maps/lasat.c
2637--- linux-2.6.17.4-kernel/drivers/mtd/maps/lasat.c 2006-07-06 13:02:28.000000000 -0700
2638+++ linux-2.6.17.4-mips/drivers/mtd/maps/lasat.c 2006-07-06 16:58:16.000000000 -0700
2639@@ -7,7 +7,7 @@
2640 * modify it under the terms of the GNU General Public License version
2641 * 2 as published by the Free Software Foundation.
2642 *
2643- * $Id: lasat.c,v 1.9 2004/11/04 13:24:15 gleixner Exp $
2644+ * $Id: lasat.c,v 1.7 2004/07/12 21:59:44 dwmw2 Exp $
2645 *
2646 */
2647
2648@@ -50,7 +50,7 @@
2649 ENABLE_VPP((&lasat_map));
2650
2651 lasat_map.phys = lasat_flash_partition_start(LASAT_MTD_BOOTLOADER);
2652- lasat_map.virt = ioremap_nocache(
2653+ lasat_map.virt = (unsigned long)ioremap_nocache(
2654 lasat_map.phys, lasat_board_info.li_flash_size);
2655 lasat_map.size = lasat_board_info.li_flash_size;
2656
2657diff -Naur linux-2.6.17.4-kernel/drivers/net/declance.c linux-2.6.17.4-mips/drivers/net/declance.c
2658--- linux-2.6.17.4-kernel/drivers/net/declance.c 2006-07-06 13:02:28.000000000 -0700
2659+++ linux-2.6.17.4-mips/drivers/net/declance.c 2006-07-06 16:58:16.000000000 -0700
2660@@ -704,8 +704,8 @@
2661 return IRQ_HANDLED;
2662 }
2663
2664-static irqreturn_t
2665-lance_interrupt(const int irq, void *dev_id, struct pt_regs *regs)
2666+static irqreturn_t lance_interrupt(const int irq, void *dev_id,
2667+ struct pt_regs *regs)
2668 {
2669 struct net_device *dev = (struct net_device *) dev_id;
2670 struct lance_private *lp = netdev_priv(dev);
2671@@ -1255,7 +1255,7 @@
2672 return 0;
2673
2674 err_out_free_dev:
2675- kfree(dev);
2676+ free_netdev(dev);
2677
2678 err_out:
2679 return ret;
2680@@ -1301,6 +1301,7 @@
2681 while (root_lance_dev) {
2682 struct net_device *dev = root_lance_dev;
2683 struct lance_private *lp = netdev_priv(dev);
2684+
2685 unregister_netdev(dev);
2686 #ifdef CONFIG_TC
2687 if (lp->slot >= 0)
2688diff -Naur linux-2.6.17.4-kernel/drivers/net/gt64240eth.h linux-2.6.17.4-mips/drivers/net/gt64240eth.h
2689--- linux-2.6.17.4-kernel/drivers/net/gt64240eth.h 2006-07-06 13:02:28.000000000 -0700
2690+++ linux-2.6.17.4-mips/drivers/net/gt64240eth.h 2006-07-06 16:58:16.000000000 -0700
2691@@ -9,6 +9,7 @@
2692 * Copyright 2000 MontaVista Software Inc.
2693 * Author: MontaVista Software, Inc.
2694 * stevel@mvista.com or support@mvista.com
2695+ * Copyright 2004, 05 Ralf Baechle (ralf@linux-mips.org)
2696 *
2697 * This program is free software; you can distribute it and/or modify it
2698 * under the terms of the GNU General Public License (Version 2) as
2699@@ -31,6 +32,7 @@
2700 #ifndef _GT64240ETH_H
2701 #define _GT64240ETH_H
2702
2703+#include <linux/config.h>
2704 #include <asm/gt64240.h>
2705
2706 #define ETHERNET_PORTS_DIFFERENCE_OFFSETS 0x400
2707@@ -108,10 +110,10 @@
2708 #define REV_GT64240A 0x10
2709
2710 #define GT64240ETH_READ(gp, offset) \
2711- GT_READ((gp)->port_offset + (offset))
2712+ MV_READ((gp)->port_offset + (offset))
2713
2714 #define GT64240ETH_WRITE(gp, offset, data) \
2715- GT_WRITE((gp)->port_offset + (offset), (data))
2716+ MV_WRITE((gp)->port_offset + (offset), (data))
2717
2718 #define GT64240ETH_SETBIT(gp, offset, bits) \
2719 GT64240ETH_WRITE((gp), (offset), \
2720@@ -121,8 +123,8 @@
2721 GT64240ETH_WRITE((gp), (offset), \
2722 GT64240ETH_READ((gp), (offset)) & ~(bits))
2723
2724-#define GT64240_READ(ofs) GT_READ(ofs)
2725-#define GT64240_WRITE(ofs, data) GT_WRITE((ofs), (data))
2726+#define GT64240_READ(ofs) MV_READ(ofs)
2727+#define GT64240_WRITE(ofs, data) MV_WRITE((ofs), (data))
2728
2729 /* Bit definitions of the SMI Reg */
2730 enum {
2731diff -Naur linux-2.6.17.4-kernel/drivers/net/Kconfig linux-2.6.17.4-mips/drivers/net/Kconfig
2732--- linux-2.6.17.4-kernel/drivers/net/Kconfig 2006-07-06 13:02:28.000000000 -0700
2733+++ linux-2.6.17.4-mips/drivers/net/Kconfig 2006-07-06 16:58:16.000000000 -0700
2734@@ -438,6 +438,14 @@
2735 This is the driver for the onboard card of MIPS Magnum 4000,
2736 Acer PICA, Olivetti M700-10 and a few other identical OEM systems.
2737
2738+config GALILEO_64240_ETH
2739+ tristate "Galileo GT64240 Ethernet support"
2740+ depends on NET_ETHERNET && MOMENCO_OCELOT_G
2741+ select MII
2742+ help
2743+ This is the driver for the ethernet interfaces integrated into
2744+ the Galileo (now Marvell) GT64240 chipset.
2745+
2746 config MIPS_GT96100ETH
2747 bool "MIPS GT96100 Ethernet support"
2748 depends on NET_ETHERNET && MIPS_GT96100
2749@@ -452,10 +460,6 @@
2750 If you have an Alchemy Semi AU1X00 based system
2751 say Y. Otherwise, say N.
2752
2753-config NET_SB1250_MAC
2754- tristate "SB1250 Ethernet support"
2755- depends on NET_ETHERNET && SIBYTE_SB1xxx_SOC
2756-
2757 config SGI_IOC3_ETH
2758 bool "SGI IOC3 Ethernet"
2759 depends on NET_ETHERNET && PCI && SGI_IP27
2760@@ -494,6 +498,14 @@
2761 emulated by the MIPS Simulator.
2762 If you are not using a MIPSsim or are unsure, say N.
2763
2764+config MIPS_SIM_NET
2765+ tristate "MIPS simulator Network device (EXPERIMENTAL)"
2766+ depends on NETDEVICES && MIPS_SIM && EXPERIMENTAL
2767+ help
2768+ The MIPSNET device is a simple Ethernet network device which is
2769+ emulated by the MIPS Simulator.
2770+ If you are not using a MIPSsim or are unsure, say N.
2771+
2772 config SGI_O2MACE_ETH
2773 tristate "SGI O2 MACE Fast Ethernet support"
2774 depends on NET_ETHERNET && SGI_IP32=y
2775@@ -1993,6 +2005,10 @@
2776
2777 If in doubt, say N.
2778
2779+config NET_SB1250_MAC
2780+ tristate "SB1250 Ethernet support"
2781+ depends on SIBYTE_SB1xxx_SOC
2782+
2783 config R8169_VLAN
2784 bool "VLAN support"
2785 depends on R8169 && VLAN_8021Q
2786@@ -2195,8 +2211,8 @@
2787 select MII
2788 help
2789 This driver supports the gigabit Ethernet on the Marvell MV643XX
2790- chipset which is used in the Momenco Ocelot C and Jaguar ATX and
2791- Pegasos II, amongst other PPC and MIPS boards.
2792+ chipset which is used in the Momenco Ocelot C Ocelot, Jaguar ATX
2793+ and Pegasos II, amongst other PPC and MIPS boards.
2794
2795 config MV643XX_ETH_0
2796 bool "MV-643XX Port 0"
2797@@ -2219,6 +2235,20 @@
2798 This enables support for Port 2 of the Marvell MV643XX Gigabit
2799 Ethernet.
2800
2801+config BIG_SUR_FE
2802+ bool "PMC-Sierra TITAN Fast Ethernet Support"
2803+ depends on NET_ETHERNET && PMC_BIG_SUR
2804+ help
2805+ This enables support for the the integrated ethernet of
2806+ PMC-Sierra's Big Sur SoC.
2807+
2808+config TITAN_GE
2809+ bool "PMC-Sierra TITAN Gigabit Ethernet Support"
2810+ depends on PMC_YOSEMITE
2811+ help
2812+ This enables support for the the integrated ethernet of
2813+ PMC-Sierra's Titan SoC.
2814+
2815 endmenu
2816
2817 #
2818diff -Naur linux-2.6.17.4-kernel/drivers/net/Makefile linux-2.6.17.4-mips/drivers/net/Makefile
2819--- linux-2.6.17.4-kernel/drivers/net/Makefile 2006-07-06 13:02:28.000000000 -0700
2820+++ linux-2.6.17.4-mips/drivers/net/Makefile 2006-07-06 16:58:16.000000000 -0700
2821@@ -111,6 +111,11 @@
2822
2823 obj-$(CONFIG_MV643XX_ETH) += mv643xx_eth.o
2824
2825+obj-$(CONFIG_GALILEO_64240_ETH) += gt64240eth.o
2826+obj-$(CONFIG_MV64340_ETH) += mv64340_eth.o
2827+obj-$(CONFIG_BIG_SUR_FE) += big_sur_ge.o
2828+obj-$(CONFIG_TITAN_GE) += titan_mdio.o titan_ge.o
2829+
2830 obj-$(CONFIG_PPP) += ppp_generic.o slhc.o
2831 obj-$(CONFIG_PPP_ASYNC) += ppp_async.o
2832 obj-$(CONFIG_PPP_SYNC_TTY) += ppp_synctty.o
2833diff -Naur linux-2.6.17.4-kernel/drivers/net/sb1250-mac.c linux-2.6.17.4-mips/drivers/net/sb1250-mac.c
2834--- linux-2.6.17.4-kernel/drivers/net/sb1250-mac.c 2006-07-06 13:02:28.000000000 -0700
2835+++ linux-2.6.17.4-mips/drivers/net/sb1250-mac.c 2006-07-06 16:58:16.000000000 -0700
2836@@ -156,6 +156,10 @@
2837
2838 #define NUMCACHEBLKS(x) (((x)+SMP_CACHE_BYTES-1)/SMP_CACHE_BYTES)
2839
2840+#define SBMAC_READCSR(t) __raw_readq((unsigned long)t)
2841+#define SBMAC_WRITECSR(t,v) __raw_writeq(v, (unsigned long)t)
2842+
2843+
2844 #define SBMAC_MAX_TXDESCR 32
2845 #define SBMAC_MAX_RXDESCR 32
2846
2847@@ -2416,6 +2420,11 @@
2848 sc->sbm_dev->name);
2849 }
2850
2851+ if (periph_rev >= 2) {
2852+ printk(KERN_INFO "%s: enabling TCP rcv checksum\n",
2853+ sc->sbm_dev->name);
2854+ }
2855+
2856 /*
2857 * Display Ethernet address (this is called during the config
2858 * process so we need to finish off the config message that
2859diff -Naur linux-2.6.17.4-kernel/drivers/scsi/dec_esp.c linux-2.6.17.4-mips/drivers/scsi/dec_esp.c
2860--- linux-2.6.17.4-kernel/drivers/scsi/dec_esp.c 2006-07-06 13:02:28.000000000 -0700
2861+++ linux-2.6.17.4-mips/drivers/scsi/dec_esp.c 2006-07-06 16:58:16.000000000 -0700
2862@@ -55,7 +55,7 @@
2863
2864 static int dma_bytes_sent(struct NCR_ESP *esp, int fifo_count);
2865 static void dma_drain(struct NCR_ESP *esp);
2866-static int dma_can_transfer(struct NCR_ESP *esp, struct scsi_cmnd *sp);
2867+static int dma_can_transfer(struct NCR_ESP *esp, struct scsi_cmnd * sp);
2868 static void dma_dump_state(struct NCR_ESP *esp);
2869 static void dma_init_read(struct NCR_ESP *esp, u32 vaddress, int length);
2870 static void dma_init_write(struct NCR_ESP *esp, u32 vaddress, int length);
2871@@ -230,7 +230,7 @@
2872 mem_start = get_tc_base_addr(slot);
2873
2874 /* Store base addr into esp struct */
2875- esp->slot = CPHYSADDR(mem_start);
2876+ esp->slot = mem_start;
2877
2878 esp->dregs = 0;
2879 esp->eregs = (void *)CKSEG1ADDR(mem_start +
2880diff -Naur linux-2.6.17.4-kernel/drivers/scsi/NCR53C9x.h linux-2.6.17.4-mips/drivers/scsi/NCR53C9x.h
2881--- linux-2.6.17.4-kernel/drivers/scsi/NCR53C9x.h 2006-07-06 13:02:28.000000000 -0700
2882+++ linux-2.6.17.4-mips/drivers/scsi/NCR53C9x.h 2006-07-06 16:58:16.000000000 -0700
2883@@ -145,12 +145,7 @@
2884
2885 #ifndef MULTIPLE_PAD_SIZES
2886
2887-#ifdef CONFIG_CPU_HAS_WB
2888-#include <asm/wbflush.h>
2889-#define esp_write(__reg, __val) do{(__reg) = (__val); wbflush();} while(0)
2890-#else
2891-#define esp_write(__reg, __val) ((__reg) = (__val))
2892-#endif
2893+#define esp_write(__reg, __val) do{(__reg) = (__val); iob();} while(0)
2894 #define esp_read(__reg) (__reg)
2895
2896 struct ESP_regs {
2897diff -Naur linux-2.6.17.4-kernel/drivers/scsi/sgiwd93.c linux-2.6.17.4-mips/drivers/scsi/sgiwd93.c
2898--- linux-2.6.17.4-kernel/drivers/scsi/sgiwd93.c 2006-07-06 13:02:28.000000000 -0700
2899+++ linux-2.6.17.4-mips/drivers/scsi/sgiwd93.c 2006-07-06 16:58:16.000000000 -0700
2900@@ -14,6 +14,7 @@
2901 #include <linux/interrupt.h>
2902 #include <linux/types.h>
2903 #include <linux/mm.h>
2904+#include <linux/module.h>
2905 #include <linux/blkdev.h>
2906 #include <linux/delay.h>
2907 #include <linux/dma-mapping.h>
2908@@ -197,6 +198,7 @@
2909 udelay(50);
2910 hregs->ctrl = 0;
2911 }
2912+EXPORT_SYMBOL_GPL(sgiwd93_reset);
2913
2914 static inline void init_hpc_chain(struct hpc_data *hd)
2915 {
2916diff -Naur linux-2.6.17.4-kernel/drivers/serial/ip22zilog.c linux-2.6.17.4-mips/drivers/serial/ip22zilog.c
2917--- linux-2.6.17.4-kernel/drivers/serial/ip22zilog.c 2006-07-06 13:02:28.000000000 -0700
2918+++ linux-2.6.17.4-mips/drivers/serial/ip22zilog.c 2006-07-06 16:58:16.000000000 -0700
2919@@ -866,6 +866,7 @@
2920 up->cflag = termios->c_cflag;
2921
2922 ip22zilog_maybe_update_regs(up, ZILOG_CHANNEL_FROM_PORT(port));
2923+ uart_update_timeout(port, termios->c_cflag, baud);
2924
2925 spin_unlock_irqrestore(&up->port.lock, flags);
2926 }
2927@@ -1027,6 +1028,8 @@
2928 }
2929
2930 con->cflag = cflag | CS8; /* 8N1 */
2931+
2932+ uart_update_timeout(&ip22zilog_port_table[con->index].port, cflag, baud);
2933 }
2934
2935 static int __init ip22zilog_console_setup(struct console *con, char *options)
2936diff -Naur linux-2.6.17.4-kernel/drivers/serial/Kconfig linux-2.6.17.4-mips/drivers/serial/Kconfig
2937--- linux-2.6.17.4-kernel/drivers/serial/Kconfig 2006-07-06 13:02:28.000000000 -0700
2938+++ linux-2.6.17.4-mips/drivers/serial/Kconfig 2006-07-06 16:58:16.000000000 -0700
2939@@ -647,6 +647,25 @@
2940 depends on SERIAL_SH_SCI=y
2941 select SERIAL_CORE_CONSOLE
2942
2943+config SERIAL_IP3106
2944+ bool "Enable IP3106 UART Support (Philips PNX 8xx0 SoCs)"
2945+ depends on MIPS && (SOC_PNX8550 || SOC_PNX8330)
2946+ select SERIAL_CORE
2947+ help
2948+ If you have a Philips SoC with an IP 3106 UART in it, such as
2949+ the PNX8550 or PNX8330 (MIPS based) and you want to use
2950+ serial ports, say Y. Otherwise, say N.
2951+
2952+config SERIAL_IP3106_CONSOLE
2953+ bool "Enable PNX8XX0 serial console"
2954+ depends on SERIAL_IP3106
2955+ select SERIAL_CORE_CONSOLE
2956+ help
2957+ If you have a Philips SoC with an IP 3106 UART in it, such as
2958+ the PNX8550 or PNX8330 (MIPS based) and you want to use
2959+ a serial console, say Y.
2960+ Otherwise, say N.
2961+
2962 config SERIAL_CORE
2963 tristate
2964
2965diff -Naur linux-2.6.17.4-kernel/drivers/serial/Makefile linux-2.6.17.4-mips/drivers/serial/Makefile
2966--- linux-2.6.17.4-kernel/drivers/serial/Makefile 2006-07-06 13:02:28.000000000 -0700
2967+++ linux-2.6.17.4-mips/drivers/serial/Makefile 2006-07-06 16:58:16.000000000 -0700
2968@@ -39,6 +39,7 @@
2969 obj-$(CONFIG_V850E_UART) += v850e_uart.o
2970 obj-$(CONFIG_SERIAL_PMACZILOG) += pmac_zilog.o
2971 obj-$(CONFIG_SERIAL_LH7A40X) += serial_lh7a40x.o
2972+obj-$(CONFIG_SERIAL_IP3106) += ip3106_uart.o
2973 obj-$(CONFIG_SERIAL_DZ) += dz.o
2974 obj-$(CONFIG_SERIAL_SH_SCI) += sh-sci.o
2975 obj-$(CONFIG_SERIAL_SGI_L1_CONSOLE) += sn_console.o
2976diff -Naur linux-2.6.17.4-kernel/drivers/usb/gadget/net2280.c linux-2.6.17.4-mips/drivers/usb/gadget/net2280.c
2977--- linux-2.6.17.4-kernel/drivers/usb/gadget/net2280.c 2006-07-06 13:02:28.000000000 -0700
2978+++ linux-2.6.17.4-mips/drivers/usb/gadget/net2280.c 2006-07-06 16:58:16.000000000 -0700
2979@@ -468,7 +468,8 @@
2980 #elif defined(CONFIG_PPC) && !defined(CONFIG_NOT_COHERENT_CACHE)
2981 #define USE_KMALLOC
2982
2983-#elif defined(CONFIG_MIPS) && !defined(CONFIG_DMA_NONCOHERENT)
2984+#elif defined(CONFIG_MIPS) && \
2985+ (defined(CONFIG_DMA_COHERENT) || defined(CONFIG_DMA_IP27))
2986 #define USE_KMALLOC
2987
2988 /* FIXME there are other cases, including an x86-64 one ... */
2989diff -Naur linux-2.6.17.4-kernel/drivers/usb/host/ohci-hcd.c linux-2.6.17.4-mips/drivers/usb/host/ohci-hcd.c
2990--- linux-2.6.17.4-kernel/drivers/usb/host/ohci-hcd.c 2006-07-06 13:02:28.000000000 -0700
2991+++ linux-2.6.17.4-mips/drivers/usb/host/ohci-hcd.c 2006-07-06 16:58:16.000000000 -0700
2992@@ -906,6 +906,10 @@
2993 #include "ohci-au1xxx.c"
2994 #endif
2995
2996+#ifdef CONFIG_PNX8550
2997+#include "ohci-pnx8550.c"
2998+#endif
2999+
3000 #ifdef CONFIG_USB_OHCI_HCD_PPC_SOC
3001 #include "ohci-ppc-soc.c"
3002 #endif
3003diff -Naur linux-2.6.17.4-kernel/drivers/video/au1100fb.c linux-2.6.17.4-mips/drivers/video/au1100fb.c
3004--- linux-2.6.17.4-kernel/drivers/video/au1100fb.c 2006-07-06 13:02:28.000000000 -0700
3005+++ linux-2.6.17.4-mips/drivers/video/au1100fb.c 2006-07-06 16:58:16.000000000 -0700
3006@@ -38,6 +38,7 @@
3007 * with this program; if not, write to the Free Software Foundation, Inc.,
3008 * 675 Mass Ave, Cambridge, MA 02139, USA.
3009 */
3010+
3011 #include <linux/config.h>
3012 #include <linux/module.h>
3013 #include <linux/kernel.h>
3014diff -Naur linux-2.6.17.4-kernel/drivers/video/Kconfig linux-2.6.17.4-mips/drivers/video/Kconfig
3015--- linux-2.6.17.4-kernel/drivers/video/Kconfig 2006-07-06 13:02:28.000000000 -0700
3016+++ linux-2.6.17.4-mips/drivers/video/Kconfig 2006-07-06 16:58:16.000000000 -0700
3017@@ -1142,6 +1142,17 @@
3018 Please read the <file:Documentation/fb/README-sstfb.txt> for supported
3019 options and other important info support.
3020
3021+config FB_SMIVGX
3022+ tristate "Silicon Motion VoyagerGX support"
3023+ depends on FB && PCI && (MIPS || EXPERIMENTAL)
3024+ select FB_CFB_FILLRECT
3025+ select FB_CFB_COPYAREA
3026+ select FB_CFB_IMAGEBLIT
3027+ ---help---
3028+ This drivers supports SMI VoyagerGX 501 based PCI boards
3029+ The default settings drive both a CRT and LCD. The CRT
3030+ can be turned off by passing in the no_crt option
3031+
3032 config FB_CYBLA
3033 tristate "Cyberblade/i1 support"
3034 depends on FB && PCI && X86_32 && !64BIT
3035@@ -1206,7 +1217,25 @@
3036
3037 config FB_AU1100
3038 bool "Au1100 LCD Driver"
3039- depends on (FB = y) && EXPERIMENTAL && PCI && MIPS && MIPS_PB1100=y
3040+ depends on FB && MIPS && SOC_AU1100
3041+ select FB_CFB_FILLRECT
3042+ select FB_CFB_COPYAREA
3043+ select FB_CFB_IMAGEBLIT
3044+ help
3045+ This is the framebuffer driver for the AMD Au1100 SOC. It can drive
3046+ various panels and CRTs by passing in kernel cmd line option
3047+ au1100fb:panel=<name>.
3048+
3049+config FB_AU1200
3050+ bool "Au1200 LCD Driver"
3051+ depends on FB && MIPS && SOC_AU1200
3052+ select FB_CFB_FILLRECT
3053+ select FB_CFB_COPYAREA
3054+ select FB_CFB_IMAGEBLIT
3055+ help
3056+ This is the framebuffer driver for the AMD Au1200 SOC. It can drive
3057+ various panels and CRTs by passing in kernel cmd line option
3058+ au1200fb:panel=<name>.
3059
3060 config FB_AU1200
3061 bool "Au1200 LCD Driver"
3062@@ -1322,8 +1351,8 @@
3063 select FB_CFB_IMAGEBLIT
3064 help
3065 Support for the PMAGB-B TURBOchannel framebuffer card used mainly
3066- in the MIPS-based DECstation series. The card is currently only
3067- supported in 1280x1024x8 mode.
3068+ in the MIPS-based DECstation series. The card is currently only
3069+ supported in 1280x1024x8 mode.
3070
3071 config FB_MAXINE
3072 bool "Maxine (Personal DECstation) onboard framebuffer support"
3073diff -Naur linux-2.6.17.4-kernel/drivers/video/Makefile linux-2.6.17.4-mips/drivers/video/Makefile
3074--- linux-2.6.17.4-kernel/drivers/video/Makefile 2006-07-06 13:02:28.000000000 -0700
3075+++ linux-2.6.17.4-mips/drivers/video/Makefile 2006-07-06 16:58:16.000000000 -0700
3076@@ -93,6 +93,7 @@
3077 obj-$(CONFIG_FB_TX3912) += tx3912fb.o
3078 obj-$(CONFIG_FB_S1D13XXX) += s1d13xxxfb.o
3079 obj-$(CONFIG_FB_IMX) += imxfb.o
3080+obj-$(CONFIG_FB_SMIVGX) += smivgxfb.o
3081 obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o
3082
3083 # Platform or fallback drivers go here
3084diff -Naur linux-2.6.17.4-kernel/include/asm-mips/asmmacro-32.h linux-2.6.17.4-mips/include/asm-mips/asmmacro-32.h
3085--- linux-2.6.17.4-kernel/include/asm-mips/asmmacro-32.h 2006-07-06 13:02:28.000000000 -0700
3086+++ linux-2.6.17.4-mips/include/asm-mips/asmmacro-32.h 2006-07-06 16:58:16.000000000 -0700
3087@@ -12,7 +12,7 @@
3088 #include <asm/fpregdef.h>
3089 #include <asm/mipsregs.h>
3090
3091- .macro fpu_save_double thread status tmp1=t0 tmp2
3092+ .macro fpu_save_double thread status tmp1=t0
3093 cfc1 \tmp1, fcr31
3094 sdc1 $f0, THREAD_FPR0(\thread)
3095 sdc1 $f2, THREAD_FPR2(\thread)
3096@@ -70,7 +70,7 @@
3097 sw \tmp, THREAD_FCR31(\thread)
3098 .endm
3099
3100- .macro fpu_restore_double thread tmp=t0
3101+ .macro fpu_restore_double thread status tmp=t0
3102 lw \tmp, THREAD_FCR31(\thread)
3103 ldc1 $f0, THREAD_FPR0(\thread)
3104 ldc1 $f2, THREAD_FPR2(\thread)
3105diff -Naur linux-2.6.17.4-kernel/include/asm-mips/asmmacro-64.h linux-2.6.17.4-mips/include/asm-mips/asmmacro-64.h
3106--- linux-2.6.17.4-kernel/include/asm-mips/asmmacro-64.h 2006-07-06 13:02:28.000000000 -0700
3107+++ linux-2.6.17.4-mips/include/asm-mips/asmmacro-64.h 2006-07-06 16:58:16.000000000 -0700
3108@@ -53,12 +53,12 @@
3109 sdc1 $f31, THREAD_FPR31(\thread)
3110 .endm
3111
3112- .macro fpu_save_double thread status tmp1 tmp2
3113- sll \tmp2, \tmp1, 5
3114- bgez \tmp2, 2f
3115+ .macro fpu_save_double thread status tmp
3116+ sll \tmp, \status, 5
3117+ bgez \tmp, 2f
3118 fpu_save_16odd \thread
3119 2:
3120- fpu_save_16even \thread \tmp1 # clobbers t1
3121+ fpu_save_16even \thread \tmp
3122 .endm
3123
3124 .macro fpu_restore_16even thread tmp=t0
3125@@ -101,13 +101,12 @@
3126 ldc1 $f31, THREAD_FPR31(\thread)
3127 .endm
3128
3129- .macro fpu_restore_double thread tmp
3130- mfc0 t0, CP0_STATUS
3131- sll t1, t0, 5
3132- bgez t1, 1f # 16 register mode?
3133+ .macro fpu_restore_double thread status tmp
3134+ sll \tmp, \status, 5
3135+ bgez \tmp, 1f # 16 register mode?
3136
3137- fpu_restore_16odd a0
3138-1: fpu_restore_16even a0, t0 # clobbers t0
3139+ fpu_restore_16odd \thread
3140+1: fpu_restore_16even \thread \tmp
3141 .endm
3142
3143 .macro cpu_save_nonscratch thread
3144diff -Naur linux-2.6.17.4-kernel/include/asm-mips/asmmacro.h linux-2.6.17.4-mips/include/asm-mips/asmmacro.h
3145--- linux-2.6.17.4-kernel/include/asm-mips/asmmacro.h 2006-07-06 13:02:28.000000000 -0700
3146+++ linux-2.6.17.4-mips/include/asm-mips/asmmacro.h 2006-07-06 16:58:16.000000000 -0700
3147@@ -27,14 +27,14 @@
3148 ori \reg, \reg, TCSTATUS_IXMT
3149 xori \reg, \reg, TCSTATUS_IXMT
3150 mtc0 \reg, CP0_TCSTATUS
3151- ehb
3152+ _ehb
3153 .endm
3154
3155 .macro local_irq_disable reg=t0
3156 mfc0 \reg, CP0_TCSTATUS
3157 ori \reg, \reg, TCSTATUS_IXMT
3158 mtc0 \reg, CP0_TCSTATUS
3159- ehb
3160+ _ehb
3161 .endm
3162 #else
3163 .macro local_irq_enable reg=t0
3164diff -Naur linux-2.6.17.4-kernel/include/asm-mips/cpu-features.h linux-2.6.17.4-mips/include/asm-mips/cpu-features.h
3165--- linux-2.6.17.4-kernel/include/asm-mips/cpu-features.h 2006-07-06 13:02:28.000000000 -0700
3166+++ linux-2.6.17.4-mips/include/asm-mips/cpu-features.h 2006-07-06 16:58:16.000000000 -0700
3167@@ -144,12 +144,8 @@
3168 #define cpu_has_dsp (cpu_data[0].ases & MIPS_ASE_DSP)
3169 #endif
3170
3171-#ifdef CONFIG_MIPS_MT
3172 #ifndef cpu_has_mipsmt
3173-# define cpu_has_mipsmt (cpu_data[0].ases & MIPS_ASE_MIPSMT)
3174-#endif
3175-#else
3176-# define cpu_has_mipsmt 0
3177+#define cpu_has_mipsmt (cpu_data[0].ases & MIPS_ASE_MIPSMT)
3178 #endif
3179
3180 #ifdef CONFIG_32BIT
3181@@ -188,19 +184,15 @@
3182 # endif
3183 #endif
3184
3185-#ifdef CONFIG_CPU_MIPSR2
3186-# if defined(CONFIG_CPU_MIPSR2_IRQ_VI) && !defined(cpu_has_vint)
3187-# define cpu_has_vint (cpu_data[0].options & MIPS_CPU_VINT)
3188-# else
3189-# define cpu_has_vint 0
3190-# endif
3191-# if defined(CONFIG_CPU_MIPSR2_IRQ_EI) && !defined(cpu_has_veic)
3192-# define cpu_has_veic (cpu_data[0].options & MIPS_CPU_VEIC)
3193-# else
3194-# define cpu_has_veic 0
3195-# endif
3196-#else
3197+#if defined(CONFIG_CPU_MIPSR2_IRQ_VI) && !defined(cpu_has_vint)
3198+# define cpu_has_vint (cpu_data[0].options & MIPS_CPU_VINT)
3199+#elif !defined(cpu_has_vint)
3200 # define cpu_has_vint 0
3201+#endif
3202+
3203+#if defined(CONFIG_CPU_MIPSR2_IRQ_EI) && !defined(cpu_has_veic)
3204+# define cpu_has_veic (cpu_data[0].options & MIPS_CPU_VEIC)
3205+#elif !defined(cpu_has_veic)
3206 # define cpu_has_veic 0
3207 #endif
3208
3209diff -Naur linux-2.6.17.4-kernel/include/asm-mips/futex.h linux-2.6.17.4-mips/include/asm-mips/futex.h
3210--- linux-2.6.17.4-kernel/include/asm-mips/futex.h 2006-07-06 13:02:28.000000000 -0700
3211+++ linux-2.6.17.4-mips/include/asm-mips/futex.h 2006-07-06 16:58:16.000000000 -0700
3212@@ -22,51 +22,53 @@
3213 " .set push \n" \
3214 " .set noat \n" \
3215 " .set mips3 \n" \
3216- "1: ll %1, (%3) # __futex_atomic_op \n" \
3217+ "1: ll %1, %4 # __futex_atomic_op \n" \
3218 " .set mips0 \n" \
3219 " " insn " \n" \
3220 " .set mips3 \n" \
3221- "2: sc $1, (%3) \n" \
3222+ "2: sc $1, %2 \n" \
3223 " beqzl $1, 1b \n" \
3224 __FUTEX_SMP_SYNC \
3225 "3: \n" \
3226 " .set pop \n" \
3227 " .set mips0 \n" \
3228 " .section .fixup,\"ax\" \n" \
3229- "4: li %0, %5 \n" \
3230+ "4: li %0, %6 \n" \
3231 " j 2b \n" \
3232 " .previous \n" \
3233 " .section __ex_table,\"a\" \n" \
3234 " "__UA_ADDR "\t1b, 4b \n" \
3235 " "__UA_ADDR "\t2b, 4b \n" \
3236 " .previous \n" \
3237- : "=r" (ret), "=r" (oldval) \
3238- : "0" (0), "r" (uaddr), "Jr" (oparg), "i" (-EFAULT)); \
3239+ : "=r" (ret), "=&r" (oldval), "=R" (*uaddr) \
3240+ : "0" (0), "R" (*uaddr), "Jr" (oparg), "i" (-EFAULT) \
3241+ : "memory"); \
3242 } else if (cpu_has_llsc) { \
3243 __asm__ __volatile__( \
3244 " .set push \n" \
3245 " .set noat \n" \
3246 " .set mips3 \n" \
3247- "1: ll %1, (%3) # __futex_atomic_op \n" \
3248+ "1: ll %1, %4 # __futex_atomic_op \n" \
3249 " .set mips0 \n" \
3250 " " insn " \n" \
3251 " .set mips3 \n" \
3252- "2: sc $1, (%3) \n" \
3253+ "2: sc $1, %2 \n" \
3254 " beqz $1, 1b \n" \
3255 __FUTEX_SMP_SYNC \
3256 "3: \n" \
3257 " .set pop \n" \
3258 " .set mips0 \n" \
3259 " .section .fixup,\"ax\" \n" \
3260- "4: li %0, %5 \n" \
3261+ "4: li %0, %6 \n" \
3262 " j 2b \n" \
3263 " .previous \n" \
3264 " .section __ex_table,\"a\" \n" \
3265 " "__UA_ADDR "\t1b, 4b \n" \
3266 " "__UA_ADDR "\t2b, 4b \n" \
3267 " .previous \n" \
3268- : "=r" (ret), "=r" (oldval) \
3269- : "0" (0), "r" (uaddr), "Jr" (oparg), "i" (-EFAULT)); \
3270+ : "=r" (ret), "=&r" (oldval), "=R" (*uaddr) \
3271+ : "0" (0), "R" (*uaddr), "Jr" (oparg), "i" (-EFAULT) \
3272+ : "memory"); \
3273 } else \
3274 ret = -ENOSYS; \
3275 }
3276@@ -89,23 +91,23 @@
3277
3278 switch (op) {
3279 case FUTEX_OP_SET:
3280- __futex_atomic_op("move $1, %z4", ret, oldval, uaddr, oparg);
3281+ __futex_atomic_op("move $1, %z5", ret, oldval, uaddr, oparg);
3282 break;
3283
3284 case FUTEX_OP_ADD:
3285- __futex_atomic_op("addu $1, %1, %z4",
3286+ __futex_atomic_op("addu $1, %1, %z5",
3287 ret, oldval, uaddr, oparg);
3288 break;
3289 case FUTEX_OP_OR:
3290- __futex_atomic_op("or $1, %1, %z4",
3291+ __futex_atomic_op("or $1, %1, %z5",
3292 ret, oldval, uaddr, oparg);
3293 break;
3294 case FUTEX_OP_ANDN:
3295- __futex_atomic_op("and $1, %1, %z4",
3296+ __futex_atomic_op("and $1, %1, %z5",
3297 ret, oldval, uaddr, ~oparg);
3298 break;
3299 case FUTEX_OP_XOR:
3300- __futex_atomic_op("xor $1, %1, %z4",
3301+ __futex_atomic_op("xor $1, %1, %z5",
3302 ret, oldval, uaddr, oparg);
3303 break;
3304 default:
3305diff -Naur linux-2.6.17.4-kernel/include/asm-mips/hazards.h linux-2.6.17.4-mips/include/asm-mips/hazards.h
3306--- linux-2.6.17.4-kernel/include/asm-mips/hazards.h 2006-07-06 13:02:28.000000000 -0700
3307+++ linux-2.6.17.4-mips/include/asm-mips/hazards.h 2006-07-06 16:58:16.000000000 -0700
3308@@ -70,10 +70,10 @@
3309 * Use a macro for ehb unless explicit support for MIPSR2 is enabled
3310 */
3311
3312-#define irq_enable_hazard
3313+#define irq_enable_hazard \
3314 _ehb
3315
3316-#define irq_disable_hazard
3317+#define irq_disable_hazard \
3318 _ehb
3319
3320 #elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_RM9000)
3321diff -Naur linux-2.6.17.4-kernel/include/asm-mips/io.h linux-2.6.17.4-mips/include/asm-mips/io.h
3322--- linux-2.6.17.4-kernel/include/asm-mips/io.h 2006-07-06 13:02:28.000000000 -0700
3323+++ linux-2.6.17.4-mips/include/asm-mips/io.h 2006-07-06 16:58:16.000000000 -0700
3324@@ -519,34 +519,6 @@
3325 }
3326
3327 /*
3328- * Memory Mapped I/O
3329- */
3330-#define ioread8(addr) readb(addr)
3331-#define ioread16(addr) readw(addr)
3332-#define ioread32(addr) readl(addr)
3333-
3334-#define iowrite8(b,addr) writeb(b,addr)
3335-#define iowrite16(w,addr) writew(w,addr)
3336-#define iowrite32(l,addr) writel(l,addr)
3337-
3338-#define ioread8_rep(a,b,c) readsb(a,b,c)
3339-#define ioread16_rep(a,b,c) readsw(a,b,c)
3340-#define ioread32_rep(a,b,c) readsl(a,b,c)
3341-
3342-#define iowrite8_rep(a,b,c) writesb(a,b,c)
3343-#define iowrite16_rep(a,b,c) writesw(a,b,c)
3344-#define iowrite32_rep(a,b,c) writesl(a,b,c)
3345-
3346-/* Create a virtual mapping cookie for an IO port range */
3347-extern void __iomem *ioport_map(unsigned long port, unsigned int nr);
3348-extern void ioport_unmap(void __iomem *);
3349-
3350-/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
3351-struct pci_dev;
3352-extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
3353-extern void pci_iounmap(struct pci_dev *dev, void __iomem *);
3354-
3355-/*
3356 * ISA space is 'always mapped' on currently supported MIPS systems, no need
3357 * to explicitly ioremap() it. The fact that the ISA IO space is mapped
3358 * to PAGE_OFFSET is pure coincidence - it does not mean ISA values
3359diff -Naur linux-2.6.17.4-kernel/include/asm-mips/irq.h linux-2.6.17.4-mips/include/asm-mips/irq.h
3360--- linux-2.6.17.4-kernel/include/asm-mips/irq.h 2006-07-06 13:02:28.000000000 -0700
3361+++ linux-2.6.17.4-mips/include/asm-mips/irq.h 2006-07-06 16:58:16.000000000 -0700
3362@@ -77,4 +77,8 @@
3363 unsigned long hwmask);
3364 #endif /* CONFIG_MIPS_MT_SMTC */
3365
3366+#ifdef CONFIG_SMP
3367+#define ARCH_HAS_IRQ_PER_CPU
3368+#endif
3369+
3370 #endif /* _ASM_IRQ_H */
3371diff -Naur linux-2.6.17.4-kernel/include/asm-mips/mach-au1x00/au1xxx_ide.h linux-2.6.17.4-mips/include/asm-mips/mach-au1x00/au1xxx_ide.h
3372--- linux-2.6.17.4-kernel/include/asm-mips/mach-au1x00/au1xxx_ide.h 2006-07-06 13:02:28.000000000 -0700
3373+++ linux-2.6.17.4-mips/include/asm-mips/mach-au1x00/au1xxx_ide.h 2006-07-06 16:58:16.000000000 -0700
3374@@ -84,6 +84,7 @@
3375 } _auide_hwif;
3376
3377 #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
3378+
3379 /* HD white list */
3380 static const struct drive_list_entry dma_white_list [] = {
3381 /*
3382diff -Naur linux-2.6.17.4-kernel/include/asm-mips/mach-mips/irq.h linux-2.6.17.4-mips/include/asm-mips/mach-mips/irq.h
3383--- linux-2.6.17.4-kernel/include/asm-mips/mach-mips/irq.h 2006-07-06 13:02:28.000000000 -0700
3384+++ linux-2.6.17.4-mips/include/asm-mips/mach-mips/irq.h 2006-07-06 16:58:16.000000000 -0700
3385@@ -5,10 +5,4 @@
3386
3387 #define NR_IRQS 256
3388
3389-#ifdef CONFIG_SMP
3390-
3391-#define ARCH_HAS_IRQ_PER_CPU
3392-
3393-#endif
3394-
3395 #endif /* __ASM_MACH_MIPS_IRQ_H */
3396diff -Naur linux-2.6.17.4-kernel/include/asm-mips/mipsregs.h linux-2.6.17.4-mips/include/asm-mips/mipsregs.h
3397--- linux-2.6.17.4-kernel/include/asm-mips/mipsregs.h 2006-07-06 13:02:28.000000000 -0700
3398+++ linux-2.6.17.4-mips/include/asm-mips/mipsregs.h 2006-07-06 16:58:16.000000000 -0700
3399@@ -1462,7 +1462,8 @@
3400 static inline void __ehb(void)
3401 {
3402 __asm__ __volatile__(
3403- " ehb \n");
3404+ " .set mips32r2 \n"
3405+ " ehb \n" " .set mips0 \n");
3406 }
3407
3408 /*
3409diff -Naur linux-2.6.17.4-kernel/include/asm-mips/smp.h linux-2.6.17.4-mips/include/asm-mips/smp.h
3410--- linux-2.6.17.4-kernel/include/asm-mips/smp.h 2006-07-06 13:02:28.000000000 -0700
3411+++ linux-2.6.17.4-mips/include/asm-mips/smp.h 2006-07-06 16:58:16.000000000 -0700
3412@@ -114,4 +114,33 @@
3413
3414 #endif /* CONFIG_SMP */
3415
3416+int smp_call_function(void(*func)(void *info), void *info, int retry, int wait);
3417+
3418+/*
3419+ * Special Variant of smp_call_function for use by cache functions:
3420+ *
3421+ * o No return value
3422+ * o collapses to normal function call on UP kernels
3423+ * o collapses to normal function call on systems with a single shared
3424+ * primary cache.
3425+ * o Both CONFIG_MIPS_MT_SMP and CONFIG_MIPS_MT_SMTC currently imply there
3426+ * is only one physical core.
3427+ */
3428+static inline void __on_other_cores(void (*func) (void *info), void *info)
3429+{
3430+#if !defined(CONFIG_MIPS_MT_SMP) && !defined(CONFIG_MIPS_MT_SMTC)
3431+ smp_call_function(func, info, 1, 1);
3432+#endif
3433+}
3434+
3435+static inline void __on_each_core(void (*func) (void *info), void *info)
3436+{
3437+ preempt_disable();
3438+
3439+ __on_other_cores(func, info);
3440+ func(info);
3441+
3442+ preempt_enable();
3443+}
3444+
3445 #endif /* __ASM_SMP_H */
3446diff -Naur linux-2.6.17.4-kernel/include/asm-mips/stackframe.h linux-2.6.17.4-mips/include/asm-mips/stackframe.h
3447--- linux-2.6.17.4-kernel/include/asm-mips/stackframe.h 2006-07-06 13:02:28.000000000 -0700
3448+++ linux-2.6.17.4-mips/include/asm-mips/stackframe.h 2006-07-06 16:58:16.000000000 -0700
3449@@ -305,7 +305,7 @@
3450 mfc0 v0, CP0_TCSTATUS
3451 ori v0, TCSTATUS_IXMT
3452 mtc0 v0, CP0_TCSTATUS
3453- ehb
3454+ _ehb
3455 DMT 5 # dmt a1
3456 jal mips_ihb
3457 #endif /* CONFIG_MIPS_MT_SMTC */
3458@@ -326,14 +326,14 @@
3459 * restore TCStatus.IXMT.
3460 */
3461 LONG_L v1, PT_TCSTATUS(sp)
3462- ehb
3463+ _ehb
3464 mfc0 v0, CP0_TCSTATUS
3465 andi v1, TCSTATUS_IXMT
3466 /* We know that TCStatua.IXMT should be set from above */
3467 xori v0, v0, TCSTATUS_IXMT
3468 or v0, v0, v1
3469 mtc0 v0, CP0_TCSTATUS
3470- ehb
3471+ _ehb
3472 andi a1, a1, VPECONTROL_TE
3473 beqz a1, 1f
3474 emt
3475@@ -412,7 +412,7 @@
3476 /* Clear TKSU, leave IXMT */
3477 xori t0, 0x00001800
3478 mtc0 t0, CP0_TCSTATUS
3479- ehb
3480+ _ehb
3481 /* We need to leave the global IE bit set, but clear EXL...*/
3482 mfc0 t0, CP0_STATUS
3483 ori t0, ST0_EXL | ST0_ERL
3484@@ -439,7 +439,7 @@
3485 * and enable interrupts only for the
3486 * current TC, using the TCStatus register.
3487 */
3488- ehb
3489+ _ehb
3490 mfc0 t0,CP0_TCSTATUS
3491 /* Fortunately CU 0 is in the same place in both registers */
3492 /* Set TCU0, TKSU (for later inversion) and IXMT */
3493@@ -448,7 +448,7 @@
3494 /* Clear TKSU *and* IXMT */
3495 xori t0, 0x00001c00
3496 mtc0 t0, CP0_TCSTATUS
3497- ehb
3498+ _ehb
3499 /* We need to leave the global IE bit set, but clear EXL...*/
3500 mfc0 t0, CP0_STATUS
3501 ori t0, ST0_EXL
3502@@ -480,7 +480,7 @@
3503 andi v1, v0, TCSTATUS_IXMT
3504 ori v0, TCSTATUS_IXMT
3505 mtc0 v0, CP0_TCSTATUS
3506- ehb
3507+ _ehb
3508 DMT 2 # dmt v0
3509 /*
3510 * We don't know a priori if ra is "live"
3511@@ -496,7 +496,7 @@
3512 xori t0, 0x1e
3513 mtc0 t0, CP0_STATUS
3514 #ifdef CONFIG_MIPS_MT_SMTC
3515- ehb
3516+ _ehb
3517 andi v0, v0, VPECONTROL_TE
3518 beqz v0, 2f
3519 nop /* delay slot */
3520diff -Naur linux-2.6.17.4-kernel/include/asm-mips/unistd.h linux-2.6.17.4-mips/include/asm-mips/unistd.h
3521--- linux-2.6.17.4-kernel/include/asm-mips/unistd.h 2006-07-06 13:02:28.000000000 -0700
3522+++ linux-2.6.17.4-mips/include/asm-mips/unistd.h 2006-07-06 16:58:16.000000000 -0700
3523@@ -326,16 +326,17 @@
3524 #define __NR_unshare (__NR_Linux + 303)
3525 #define __NR_splice (__NR_Linux + 304)
3526 #define __NR_sync_file_range (__NR_Linux + 305)
3527+#define __NR_tee (__NR_Linux + 306)
3528
3529 /*
3530 * Offset of the last Linux o32 flavoured syscall
3531 */
3532-#define __NR_Linux_syscalls 305
3533+#define __NR_Linux_syscalls 306
3534
3535 #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
3536
3537 #define __NR_O32_Linux 4000
3538-#define __NR_O32_Linux_syscalls 305
3539+#define __NR_O32_Linux_syscalls 306
3540
3541 #if _MIPS_SIM == _MIPS_SIM_ABI64
3542
3543@@ -608,16 +609,17 @@
3544 #define __NR_unshare (__NR_Linux + 262)
3545 #define __NR_splice (__NR_Linux + 263)
3546 #define __NR_sync_file_range (__NR_Linux + 264)
3547+#define __NR_tee (__NR_Linux + 265)
3548
3549 /*
3550 * Offset of the last Linux 64-bit flavoured syscall
3551 */
3552-#define __NR_Linux_syscalls 264
3553+#define __NR_Linux_syscalls 265
3554
3555 #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */
3556
3557 #define __NR_64_Linux 5000
3558-#define __NR_64_Linux_syscalls 264
3559+#define __NR_64_Linux_syscalls 265
3560
3561 #if _MIPS_SIM == _MIPS_SIM_NABI32
3562
3563@@ -894,16 +896,17 @@
3564 #define __NR_unshare (__NR_Linux + 266)
3565 #define __NR_splice (__NR_Linux + 267)
3566 #define __NR_sync_file_range (__NR_Linux + 268)
3567+#define __NR_tee (__NR_Linux + 269)
3568
3569 /*
3570 * Offset of the last N32 flavoured syscall
3571 */
3572-#define __NR_Linux_syscalls 268
3573+#define __NR_Linux_syscalls 269
3574
3575 #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */
3576
3577 #define __NR_N32_Linux 6000
3578-#define __NR_N32_Linux_syscalls 268
3579+#define __NR_N32_Linux_syscalls 269
3580
3581 #ifndef __ASSEMBLY__
3582
3583diff -Naur linux-2.6.17.4-kernel/include/linux/elf.h linux-2.6.17.4-mips/include/linux/elf.h
3584--- linux-2.6.17.4-kernel/include/linux/elf.h 2006-07-06 13:02:28.000000000 -0700
3585+++ linux-2.6.17.4-mips/include/linux/elf.h 2006-07-06 16:58:16.000000000 -0700
3586@@ -67,7 +67,7 @@
3587
3588 #define EM_MIPS 8 /* MIPS R3000 (officially, big-endian only) */
3589
3590-#define EM_MIPS_RS4_BE 10 /* MIPS R4000 big-endian */
3591+#define EM_MIPS_RS3_LE 10 /* MIPS R3000 little-endian */
3592
3593 #define EM_PARISC 15 /* HPPA */
3594
3595diff -Naur linux-2.6.17.4-kernel/include/linux/mc146818rtc.h linux-2.6.17.4-mips/include/linux/mc146818rtc.h
3596--- linux-2.6.17.4-kernel/include/linux/mc146818rtc.h 2006-07-06 13:02:28.000000000 -0700
3597+++ linux-2.6.17.4-mips/include/linux/mc146818rtc.h 2006-07-06 16:58:16.000000000 -0700
3598@@ -89,4 +89,12 @@
3599 # define RTC_VRT 0x80 /* valid RAM and time */
3600 /**********************************************************************/
3601
3602+#ifndef RTC_IO_EXTENT
3603+#define RTC_IO_EXTENT 0x8
3604+#endif
3605+
3606+#ifndef RTC_IOMAPPED
3607+#define RTC_IOMAPPED 1 /* Default to I/O mapping. */
3608+#endif
3609+
3610 #endif /* _MC146818RTC_H */
3611diff -Naur linux-2.6.17.4-kernel/include/linux/pci_ids.h linux-2.6.17.4-mips/include/linux/pci_ids.h
3612--- linux-2.6.17.4-kernel/include/linux/pci_ids.h 2006-07-06 13:02:28.000000000 -0700
3613+++ linux-2.6.17.4-mips/include/linux/pci_ids.h 2006-07-06 16:58:16.000000000 -0700
3614@@ -1569,6 +1569,9 @@
3615 #define PCI_VENDOR_ID_SATSAGEM 0x1267
3616 #define PCI_DEVICE_ID_SATSAGEM_NICCY 0x1016
3617
3618+#define PCI_VENDOR_ID_SILICON_MOTION 0x126f
3619+#define PCI_DEVICE_ID_SM501_VOYAGER_GX_REV_AA 0x0501
3620+#define PCI_DEVICE_ID_SM501_VOYAGER_GX_REV_B 0x0510
3621
3622 #define PCI_VENDOR_ID_ENSONIQ 0x1274
3623 #define PCI_DEVICE_ID_ENSONIQ_CT5880 0x5880
3624diff -Naur linux-2.6.17.4-kernel/include/linux/serial.h linux-2.6.17.4-mips/include/linux/serial.h
3625--- linux-2.6.17.4-kernel/include/linux/serial.h 2006-07-06 13:02:28.000000000 -0700
3626+++ linux-2.6.17.4-mips/include/linux/serial.h 2006-07-06 16:58:16.000000000 -0700
3627@@ -76,7 +76,8 @@
3628 #define PORT_16654 11
3629 #define PORT_16850 12
3630 #define PORT_RSA 13 /* RSA-DV II/S card */
3631-#define PORT_MAX 13
3632+#define PORT_SB1250 14
3633+#define PORT_MAX 14
3634
3635 #define SERIAL_IO_PORT 0
3636 #define SERIAL_IO_HUB6 1
3637diff -Naur linux-2.6.17.4-kernel/include/linux/serial_ip3106.h linux-2.6.17.4-mips/include/linux/serial_ip3106.h
3638--- linux-2.6.17.4-kernel/include/linux/serial_ip3106.h 2006-07-06 13:02:28.000000000 -0700
3639+++ linux-2.6.17.4-mips/include/linux/serial_ip3106.h 2006-07-06 16:58:16.000000000 -0700
3640@@ -78,4 +78,16 @@
3641 #define IP3106_UART_FIFO_RXFIFO 0x00001F00
3642 #define IP3106_UART_FIFO_RBRTHR 0x000000FF
3643
3644+#define ip3106_lcr(base,port) *(volatile u32 *)(base+(port*0x1000) + 0x000)
3645+#define ip3106_mcr(base, port) *(volatile u32 *)(base+(port*0x1000) + 0x004)
3646+#define ip3106_baud(base, port) *(volatile u32 *)(base+(port*0x1000) + 0x008)
3647+#define ip3106_cfg(base, port) *(volatile u32 *)(base+(port*0x1000) + 0x00C)
3648+#define ip3106_fifo(base, port) *(volatile u32 *)(base+(port*0x1000) + 0x028)
3649+#define ip3106_istat(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFE0)
3650+#define ip3106_ien(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFE4)
3651+#define ip3106_iclr(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFE8)
3652+#define ip3106_iset(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFEC)
3653+#define ip3106_pd(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFF4)
3654+#define ip3106_mid(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFFC)
3655+
3656 #endif
3657diff -Naur linux-2.6.17.4-kernel/sound/oss/au1550_ac97.c linux-2.6.17.4-mips/sound/oss/au1550_ac97.c
3658--- linux-2.6.17.4-kernel/sound/oss/au1550_ac97.c 2006-07-06 13:02:28.000000000 -0700
3659+++ linux-2.6.17.4-mips/sound/oss/au1550_ac97.c 2006-07-06 16:58:16.000000000 -0700
3660@@ -60,6 +60,7 @@
3661 #include <asm/mach-au1x00/au1000.h>
3662 #include <asm/mach-au1x00/au1xxx_psc.h>
3663 #include <asm/mach-au1x00/au1xxx_dbdma.h>
3664+#include <asm/mach-pb1x00/pb1550.h>
3665
3666 #undef OSS_DOCUMENTED_MIXER_SEMANTICS
3667
3668diff -Naur linux-2.6.17.4-kernel/sound/oss/Kconfig linux-2.6.17.4-mips/sound/oss/Kconfig
3669--- linux-2.6.17.4-kernel/sound/oss/Kconfig 2006-07-06 13:02:28.000000000 -0700
3670+++ linux-2.6.17.4-mips/sound/oss/Kconfig 2006-07-06 16:58:16.000000000 -0700
3671@@ -117,6 +117,10 @@
3672 tristate "Au1550 AC97 Sound"
3673 depends on SOUND_PRIME && SOC_AU1550
3674
3675+config SOUND_AU1550_I2S
3676+ tristate "Au1550 I2S Sound"
3677+ depends on SOUND_PRIME && SOC_AU1550
3678+
3679 config SOUND_TRIDENT
3680 tristate "Trident 4DWave DX/NX, SiS 7018 or ALi 5451 PCI Audio Core"
3681 depends on SOUND_PRIME && PCI
3682diff -Naur linux-2.6.17.4-kernel/sound/oss/Makefile linux-2.6.17.4-mips/sound/oss/Makefile
3683--- linux-2.6.17.4-kernel/sound/oss/Makefile 2006-07-06 13:02:28.000000000 -0700
3684+++ linux-2.6.17.4-mips/sound/oss/Makefile 2006-07-06 16:58:16.000000000 -0700
3685@@ -66,6 +66,7 @@
3686 obj-$(CONFIG_SOUND_VRC5477) += nec_vrc5477.o ac97_codec.o
3687 obj-$(CONFIG_SOUND_AU1000) += au1000.o ac97_codec.o
3688 obj-$(CONFIG_SOUND_AU1550_AC97) += au1550_ac97.o ac97_codec.o
3689+obj-$(CONFIG_SOUND_AU1550_I2S) += au1550_i2s.o
3690 obj-$(CONFIG_SOUND_ESSSOLO1) += esssolo1.o
3691 obj-$(CONFIG_SOUND_FUSION) += cs46xx.o ac97_codec.o
3692 obj-$(CONFIG_SOUND_MAESTRO) += maestro.o
3693
3694
Note: See TracBrowser for help on using the repository browser.