]>
Commit | Line | Data |
---|---|---|
5de4fc43 | 1 | diff -Naur linux-2.6.0-test8/arch/m68knommu/Kconfig linux-2.6.0-test8-uc0/arch/m68knommu/Kconfig |
2 | --- linux-2.6.0-test8/arch/m68knommu/Kconfig 2003-10-20 09:10:57.875635776 +1000 | |
3 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/Kconfig 2003-10-20 09:11:53.701149008 +1000 | |
4 | @@ -560,6 +560,14 @@ | |
5 | help | |
6 | Enable debuging symbols on kernel build. | |
7 | ||
8 | +config FRAME_POINTER | |
9 | + bool "Compile the kernel with frame pointers" | |
10 | + help | |
11 | + If you say Y here the resulting kernel image will be slightly larger | |
12 | + and slower, but it will give very useful debugging information. | |
13 | + If you don't debug the kernel, you can say N, but we may not be able | |
14 | + to solve problems without frame pointers. | |
15 | + | |
16 | config MAGIC_SYSRQ | |
17 | bool "Magic SysRq key" | |
18 | help | |
19 | diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/comempci.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/comempci.c | |
20 | --- linux-2.6.0-test8/arch/m68knommu/kernel/comempci.c 2003-10-20 09:10:57.723658880 +1000 | |
21 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/comempci.c 2003-10-20 09:11:54.088090184 +1000 | |
22 | @@ -89,7 +89,7 @@ | |
23 | int i; | |
24 | ||
25 | #ifdef DEBUGPCI | |
26 | - printk("pci_resetbus()\n"); | |
27 | + printk(KERN_DEBUG "pci_resetbus()\n"); | |
28 | #endif | |
29 | ||
30 | *((volatile unsigned short *) (MCF_MBAR+MCFSIM_PADDR)) |= eLIA_PCIRESET; | |
31 | @@ -113,7 +113,7 @@ | |
32 | int bar; | |
33 | ||
34 | #ifdef DEBUGPCI | |
35 | - printk("pcibios_assign_resource_slot(slot=%x)\n", slot); | |
36 | + printk(KERN_INFO "pcibios_assign_resource_slot(slot=%x)\n", slot); | |
37 | #endif | |
38 | ||
39 | rp = (volatile unsigned long *) COMEM_BASE; | |
40 | @@ -125,9 +125,9 @@ | |
41 | rp[LREG(COMEM_DAHBASE)] = COMEM_DA_CFGRD | idsel; | |
42 | val = rp[LREG(addr)]; | |
43 | #ifdef DEBUGRES | |
44 | - printk("-----------------------------------" | |
45 | + printk(KERN_DEBUG "-----------------------------------" | |
46 | "-------------------------------------\n"); | |
47 | - printk("BAR[%d]: read=%08x ", bar, val); | |
48 | + printk(KERN_DEBUG "BAR[%d]: read=%08x ", bar, val); | |
49 | #endif | |
50 | ||
51 | rp[LREG(COMEM_DAHBASE)] = COMEM_DA_CFGWR | idsel; | |
52 | @@ -136,11 +136,11 @@ | |
53 | rp[LREG(COMEM_DAHBASE)] = COMEM_DA_CFGRD | idsel; | |
54 | val = rp[LREG(addr)]; | |
55 | #ifdef DEBUGRES | |
56 | - printk("write=%08x ", val); | |
57 | + printk(KERN_DEBUG "write=%08x ", val); | |
58 | #endif | |
59 | if (val == 0) { | |
60 | #ifdef DEBUGRES | |
61 | - printk("\n"); | |
62 | + printk(KERN_DEBUG "\n"); | |
63 | #endif | |
64 | continue; | |
65 | } | |
66 | @@ -153,7 +153,7 @@ | |
67 | } | |
68 | ||
69 | #ifdef DEBUGRES | |
70 | - printk("size=%08x(%d)\n", (0x1 << i), i); | |
71 | + printk(KERN_DEBUG "size=%08x(%d)\n", (0x1 << i), i); | |
72 | #endif | |
73 | i = 0x1 << i; | |
74 | ||
75 | @@ -162,14 +162,14 @@ | |
76 | if (i < PCI_MINIO) | |
77 | i = PCI_MINIO; | |
78 | #ifdef DEBUGRES | |
79 | - printk("BAR[%d]: IO size=%08x iobase=%08x\n", | |
80 | + printk(KERN_DEBUG "BAR[%d]: IO size=%08x iobase=%08x\n", | |
81 | bar, i, pci_iobase); | |
82 | #endif | |
83 | if (i > 0xffff) { | |
84 | /* Invalid size?? */ | |
85 | val = 0 | PCI_BASE_ADDRESS_SPACE_IO; | |
86 | #ifdef DEBUGRES | |
87 | - printk("BAR[%d]: too big for IO??\n", bar); | |
88 | + printk(KERN_DEBUG "BAR[%d]: too big for IO??\n", bar); | |
89 | #endif | |
90 | } else { | |
91 | /* Check for un-alignment */ | |
92 | @@ -182,7 +182,7 @@ | |
93 | if (i < PCI_MINMEM) | |
94 | i = PCI_MINMEM; | |
95 | #ifdef DEBUGRES | |
96 | - printk("BAR[%d]: MEMORY size=%08x membase=%08x\n", | |
97 | + printk(KERN_DEBUG "BAR[%d]: MEMORY size=%08x membase=%08x\n", | |
98 | bar, i, pci_membase); | |
99 | #endif | |
100 | /* Check for un-alignment */ | |
101 | @@ -196,12 +196,12 @@ | |
102 | rp[LREG(COMEM_DAHBASE)] = COMEM_DA_CFGWR | idsel; | |
103 | rp[LREG(addr)] = val; | |
104 | #ifdef DEBUGRES | |
105 | - printk("BAR[%d]: assigned bar=%08x\n", bar, val); | |
106 | + printk(KERN_DEBUG "BAR[%d]: assigned bar=%08x\n", bar, val); | |
107 | #endif | |
108 | } | |
109 | ||
110 | #ifdef DEBUGRES | |
111 | - printk("-----------------------------------" | |
112 | + printk(KERN_DEBUG "-----------------------------------" | |
113 | "-------------------------------------\n"); | |
114 | #endif | |
115 | ||
116 | @@ -215,7 +215,7 @@ | |
117 | addr = (PCI_INTERRUPT_LINE & 0xfc)+(~PCI_INTERRUPT_LINE & 0x03); | |
118 | ip[addr] = 25; | |
119 | #ifdef DEBUGRES | |
120 | - printk("IRQ LINE=25\n"); | |
121 | + printk(KERN_DEBUG "IRQ LINE=25\n"); | |
122 | #endif | |
123 | } | |
124 | ||
125 | @@ -232,7 +232,7 @@ | |
126 | unsigned short cmd; | |
127 | ||
128 | #ifdef DEBUGPCI | |
129 | - printk("pcibios_enbale_slot(slot=%x)\n", slot); | |
130 | + printk(KERN_DEBUG "pcibios_enbale_slot(slot=%x)\n", slot); | |
131 | #endif | |
132 | ||
133 | rp = (volatile unsigned long *) COMEM_BASE; | |
134 | @@ -273,7 +273,7 @@ | |
135 | rp[LREG(COMEM_PCIBUS)] = 0; /* Clear bus */ | |
136 | id = rp[LREG(COMEM_PCIBUS)]; | |
137 | if ((id != 0) && ((id & 0xffff0000) != (sel & 0xffff0000))) { | |
138 | - printk("PCI: slot=%d id=%08x\n", slot, (int) id); | |
139 | + printk(KERN_INFO "PCI: slot=%d id=%08x\n", slot, (int) id); | |
140 | pci_slotmask |= 0x1 << slot; | |
141 | pcibios_assign_resource_slot(slot); | |
142 | pcibios_enable_slot(slot); | |
143 | @@ -290,7 +290,7 @@ | |
144 | int slot; | |
145 | ||
146 | #ifdef DEBUGPCI | |
147 | - printk("pcibios_init()\n"); | |
148 | + printk(KERN_DEBUG "pcibios_init()\n"); | |
149 | #endif | |
150 | ||
151 | pci_resetbus(); | |
152 | @@ -302,7 +302,7 @@ | |
153 | */ | |
154 | rp = (volatile unsigned long *) COMEM_BASE; | |
155 | if ((rp[LREG(COMEM_LBUSCFG)] & 0xff) != 0x50) { | |
156 | - printk("PCI: no PCI bus present\n"); | |
157 | + printk(KERN_INFO "PCI: no PCI bus present\n"); | |
158 | return(0); | |
159 | } | |
160 | ||
161 | @@ -317,11 +317,11 @@ | |
162 | rp[LREG(COMEM_PCIBUS)] = 0; /* Clear bus */ | |
163 | id = rp[LREG(COMEM_PCIBUS)]; | |
164 | if ((id == 0) || ((id & 0xffff0000) == (sel & 0xffff0000))) { | |
165 | - printk("PCI: no PCI bus bridge present\n"); | |
166 | + printk(KERN_INFO "PCI: no PCI bus bridge present\n"); | |
167 | return(0); | |
168 | } | |
169 | ||
170 | - printk("PCI: bridge device at slot=%d id=%08x\n", slot, (int) id); | |
171 | + printk(KERN_INFO "PCI: bridge device at slot=%d id=%08x\n", slot, (int) id); | |
172 | pci_slotmask |= 0x1 << slot; | |
173 | pci_shmemaddr = pci_membase; | |
174 | pcibios_assign_resource_slot(slot); | |
175 | @@ -332,7 +332,7 @@ | |
176 | ||
177 | /* Get PCI irq for local vectoring */ | |
178 | if (request_irq(COMEM_IRQ, pci_interrupt, 0, "PCI bridge", NULL)) { | |
179 | - printk("PCI: failed to acquire interrupt %d\n", COMEM_IRQ); | |
180 | + printk(KERN_WARNING "PCI: failed to acquire interrupt %d\n", COMEM_IRQ); | |
181 | } else { | |
182 | mcf_autovector(COMEM_IRQ); | |
183 | } | |
184 | @@ -379,7 +379,7 @@ | |
185 | ||
186 | void pcibios_update_resource(struct pci_dev *dev, struct resource *root, struct resource *r, int resource) | |
187 | { | |
188 | - printk("%s(%d): no support for changing PCI resources...\n", | |
189 | + printk(KERN_WARNING "%s(%d): no support for changing PCI resources...\n", | |
190 | __FILE__, __LINE__); | |
191 | } | |
192 | ||
193 | @@ -401,7 +401,7 @@ | |
194 | volatile unsigned char *bp; | |
195 | ||
196 | #ifdef DEBUGIO | |
197 | - printk("pci_outb(val=%02x,addr=%x)\n", val, addr); | |
198 | + printk(KERN_DEBUG "pci_outb(val=%02x,addr=%x)\n", val, addr); | |
199 | #endif | |
200 | ||
201 | rp = (volatile unsigned long *) COMEM_BASE; | |
202 | @@ -419,7 +419,7 @@ | |
203 | volatile unsigned short *sp; | |
204 | ||
205 | #ifdef DEBUGIO | |
206 | - printk("pci_outw(val=%04x,addr=%x)", val, addr); | |
207 | + printk(KERN_DEBUG "pci_outw(val=%04x,addr=%x)", val, addr); | |
208 | #endif | |
209 | ||
210 | rp = (volatile unsigned long *) COMEM_BASE; | |
211 | @@ -439,7 +439,7 @@ | |
212 | volatile unsigned int *lp; | |
213 | ||
214 | #ifdef DEBUGIO | |
215 | - printk("pci_outl(val=%08x,addr=%x)\n", val, addr); | |
216 | + printk(KERN_DEBUG "pci_outl(val=%08x,addr=%x)\n", val, addr); | |
217 | #endif | |
218 | ||
219 | rp = (volatile unsigned long *) COMEM_BASE; | |
220 | @@ -470,7 +470,7 @@ | |
221 | unsigned char val; | |
222 | ||
223 | #ifdef DEBUGIO | |
224 | - printk("pci_inb(addr=%x)", addr); | |
225 | + printk(KERN_DEBUG "pci_inb(addr=%x)", addr); | |
226 | #endif | |
227 | ||
228 | rp = (volatile unsigned long *) COMEM_BASE; | |
229 | @@ -501,7 +501,7 @@ | |
230 | unsigned short val; | |
231 | ||
232 | #ifdef DEBUGIO | |
233 | - printk("pci_inw(addr=%x)", addr); | |
234 | + printk(KERN_DEBUG "pci_inw(addr=%x)", addr); | |
235 | #endif | |
236 | ||
237 | rp = (volatile unsigned long *) COMEM_BASE; | |
238 | @@ -514,7 +514,7 @@ | |
239 | if (pci_byteswap) | |
240 | val = ((val & 0xff) << 8) | ((val >> 8) & 0xff); | |
241 | #ifdef DEBUGIO | |
242 | - printk("=%04x\n", val); | |
243 | + printk(KERN_DEBUG "=%04x\n", val); | |
244 | #endif | |
245 | return(val); | |
246 | } | |
247 | @@ -528,7 +528,7 @@ | |
248 | unsigned int val; | |
249 | ||
250 | #ifdef DEBUGIO | |
251 | - printk("pci_inl(addr=%x)", addr); | |
252 | + printk(KERN_DEBUG "pci_inl(addr=%x)", addr); | |
253 | #endif | |
254 | ||
255 | rp = (volatile unsigned long *) COMEM_BASE; | |
256 | @@ -541,7 +541,7 @@ | |
257 | ((val & 0x00ff0000) >> 8) | (val >> 24); | |
258 | ||
259 | #ifdef DEBUGIO | |
260 | - printk("=%08x\n", val); | |
261 | + printk(KERN_DEBUG "=%08x\n", val); | |
262 | #endif | |
263 | return(val); | |
264 | } | |
265 | @@ -556,7 +556,7 @@ | |
266 | unsigned int a = (unsigned int) addr; | |
267 | ||
268 | #ifdef DEBUGIO | |
269 | - printk("pci_outsb(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
270 | + printk(KERN_DEBUG "pci_outsb(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
271 | #endif | |
272 | ||
273 | rp = (volatile unsigned long *) COMEM_BASE; | |
274 | @@ -580,7 +580,7 @@ | |
275 | unsigned int a = (unsigned int) addr; | |
276 | ||
277 | #ifdef DEBUGIO | |
278 | - printk("pci_outsw(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
279 | + printk(KERN_DEBUG "pci_outsw(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
280 | #endif | |
281 | ||
282 | rp = (volatile unsigned long *) COMEM_BASE; | |
283 | @@ -608,7 +608,7 @@ | |
284 | unsigned int a = (unsigned int) addr; | |
285 | ||
286 | #ifdef DEBUGIO | |
287 | - printk("pci_outsl(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
288 | + printk(KERN_DEBUG "pci_outsl(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
289 | #endif | |
290 | ||
291 | rp = (volatile unsigned long *) COMEM_BASE; | |
292 | @@ -636,7 +636,7 @@ | |
293 | unsigned int a = (unsigned int) addr; | |
294 | ||
295 | #ifdef DEBUGIO | |
296 | - printk("pci_insb(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
297 | + printk(KERN_DEBUG "pci_insb(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
298 | #endif | |
299 | ||
300 | rp = (volatile unsigned long *) COMEM_BASE; | |
301 | @@ -660,7 +660,7 @@ | |
302 | unsigned int a = (unsigned int) addr; | |
303 | ||
304 | #ifdef DEBUGIO | |
305 | - printk("pci_insw(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
306 | + printk(KERN_DEBUG "pci_insw(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
307 | #endif | |
308 | ||
309 | rp = (volatile unsigned long *) COMEM_BASE; | |
310 | @@ -688,7 +688,7 @@ | |
311 | unsigned int a = (unsigned int) addr; | |
312 | ||
313 | #ifdef DEBUGIO | |
314 | - printk("pci_insl(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
315 | + printk(KERN_DEBUG "pci_insl(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len); | |
316 | #endif | |
317 | ||
318 | rp = (volatile unsigned long *) COMEM_BASE; | |
319 | @@ -725,7 +725,7 @@ | |
320 | int i; | |
321 | ||
322 | #ifdef DEBUGIO | |
323 | - printk("pci_request_irq(irq=%d,handler=%x,flags=%x,device=%s," | |
324 | + printk(KERN_DEBUG "pci_request_irq(irq=%d,handler=%x,flags=%x,device=%s," | |
325 | "dev_id=%x)\n", irq, (int) handler, (int) flags, device, | |
326 | (int) dev_id); | |
327 | #endif | |
328 | @@ -757,7 +757,7 @@ | |
329 | int i; | |
330 | ||
331 | #ifdef DEBUGIO | |
332 | - printk("pci_free_irq(irq=%d,dev_id=%x)\n", irq, (int) dev_id); | |
333 | + printk(KERN_DEBUG "pci_free_irq(irq=%d,dev_id=%x)\n", irq, (int) dev_id); | |
334 | #endif | |
335 | ||
336 | if (dev_id == (void *) NULL) | |
337 | @@ -781,7 +781,7 @@ | |
338 | int i; | |
339 | ||
340 | #ifdef DEBUGIO | |
341 | - printk("pci_interrupt(irq=%d,id=%x,fp=%x)\n", irq, (int) id, (int) fp); | |
342 | + printk(KERN_DEBUG "pci_interrupt(irq=%d,id=%x,fp=%x)\n", irq, (int) id, (int) fp); | |
343 | #endif | |
344 | ||
345 | for (i = 0; (i < COMEM_MAXPCI); i++) { | |
346 | @@ -809,7 +809,7 @@ | |
347 | int i, j, nrslots; | |
348 | ||
349 | #ifdef DEBUGIO | |
350 | - printk("pci_bmalloc(size=%d)\n", size); | |
351 | + printk(KERN_DEBUG "pci_bmalloc(size=%d)\n", size); | |
352 | #endif | |
353 | ||
354 | if (size <= 0) | |
355 | @@ -841,7 +841,7 @@ | |
356 | int i, j, nrslots; | |
357 | ||
358 | #ifdef DEBUGIO | |
359 | - printk("pci_bmfree(mp=%x,size=%d)\n", (int) mp, size); | |
360 | + printk(KERN_DEBUG "pci_bmfree(mp=%x,size=%d)\n", (int) mp, size); | |
361 | #endif | |
362 | ||
363 | nrslots = size / PCI_MEMSLOTSIZE; | |
364 | @@ -859,12 +859,12 @@ | |
365 | unsigned long l; | |
366 | ||
367 | #ifdef DEBUGIO | |
368 | - printk("pci_virt_to_bus(address=%x)", (int) address); | |
369 | + printk(KERN_DEBUG "pci_virt_to_bus(address=%x)", (int) address); | |
370 | #endif | |
371 | ||
372 | l = ((unsigned long) address) - COMEM_BASE; | |
373 | #ifdef DEBUGIO | |
374 | - printk("=%x\n", (int) (l+pci_shmemaddr)); | |
375 | + printk(KERN_DEBUG "=%x\n", (int) (l+pci_shmemaddr)); | |
376 | #endif | |
377 | return(l + pci_shmemaddr); | |
378 | } | |
379 | @@ -876,12 +876,12 @@ | |
380 | unsigned long l; | |
381 | ||
382 | #ifdef DEBUGIO | |
383 | - printk("pci_bus_to_virt(address=%x)", (int) address); | |
384 | + printk(KERN_DEBUG "pci_bus_to_virt(address=%x)", (int) address); | |
385 | #endif | |
386 | ||
387 | l = address - pci_shmemaddr; | |
388 | #ifdef DEBUGIO | |
389 | - printk("=%x\n", (int) (address + COMEM_BASE)); | |
390 | + printk(KERN_DEBUG "=%x\n", (int) (address + COMEM_BASE)); | |
391 | #endif | |
392 | return((void *) (address + COMEM_BASE)); | |
393 | } | |
394 | @@ -895,7 +895,7 @@ | |
395 | int i, j; | |
396 | ||
397 | #ifdef DEBUGIO | |
398 | - printk("pci_bmcpyto(dst=%x,src=%x,len=%d)\n", (int)dst, (int)src, len); | |
399 | + printk(KERN_DEBUG "pci_bmcpyto(dst=%x,src=%x,len=%d)\n", (int)dst, (int)src, len); | |
400 | #endif | |
401 | ||
402 | dp = (unsigned long *) dst; | |
403 | @@ -903,13 +903,13 @@ | |
404 | i = len >> 2; | |
405 | ||
406 | #if 0 | |
407 | - printk("DATA:"); | |
408 | + printk(KERN_INFO "DATA:"); | |
409 | scp = (unsigned char *) sp; | |
410 | for (i = 0; (i < len); i++) { | |
411 | - if ((i % 16) == 0) printk("\n%04x: ", i); | |
412 | - printk("%02x ", *scp++); | |
413 | + if ((i % 16) == 0) printk(KERN_INFO "\n%04x: ", i); | |
414 | + printk(KERN_INFO "%02x ", *scp++); | |
415 | } | |
416 | - printk("\n"); | |
417 | + printk(KERN_INFO "\n"); | |
418 | #endif | |
419 | ||
420 | for (j = 0; (i >= 0); i--, j++) { | |
421 | @@ -936,7 +936,7 @@ | |
422 | int i; | |
423 | ||
424 | #ifdef DEBUGIO | |
425 | - printk("pci_bmcpyfrom(dst=%x,src=%x,len=%d)\n",(int)dst,(int)src,len); | |
426 | + printk(KERN_DEBUG "pci_bmcpyfrom(dst=%x,src=%x,len=%d)\n",(int)dst,(int)src,len); | |
427 | #endif | |
428 | ||
429 | dp = (unsigned long *) dst; | |
430 | @@ -958,13 +958,13 @@ | |
431 | } | |
432 | ||
433 | #if 0 | |
434 | - printk("DATA:"); | |
435 | + printk(KERN_INFO "DATA:"); | |
436 | dcp = (unsigned char *) dst; | |
437 | for (i = 0; (i < len); i++) { | |
438 | - if ((i % 16) == 0) printk("\n%04x: ", i); | |
439 | - printk("%02x ", *dcp++); | |
440 | + if ((i % 16) == 0) printk(KERN_INFO "\n%04x: ", i); | |
441 | + printk(KERN_INFO "%02x ", *dcp++); | |
442 | } | |
443 | - printk("\n"); | |
444 | + printk(KERN_INFO "\n"); | |
445 | #endif | |
446 | } | |
447 | ||
448 | diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/Makefile linux-2.6.0-test8-uc0/arch/m68knommu/kernel/Makefile | |
449 | --- linux-2.6.0-test8/arch/m68knommu/kernel/Makefile 2003-10-20 09:10:57.721659184 +1000 | |
450 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/Makefile 2003-10-20 09:11:54.086090488 +1000 | |
451 | @@ -4,8 +4,8 @@ | |
452 | ||
453 | extra-y := vmlinux.lds.s | |
454 | ||
455 | -obj-y += entry.o init_task.o m68k_ksyms.o process.o ptrace.o \ | |
456 | - semaphore.o setup.o signal.o syscalltable.o sys_m68k.o time.o \ | |
457 | - traps.o | |
458 | +obj-y += entry.o init_task.o m68k_ksyms.o process.o ptrace.o semaphore.o \ | |
459 | + setup.o signal.o syscalltable.o sys_m68k.o time.o traps.o | |
460 | ||
461 | +obj-$(CONFIG_MODULES) += module.o | |
462 | obj-$(CONFIG_COMEMPCI) += comempci.o | |
463 | diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/module.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/module.c | |
464 | --- linux-2.6.0-test8/arch/m68knommu/kernel/module.c 1970-01-01 10:00:00.000000000 +1000 | |
465 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/module.c 2003-10-20 09:11:54.095089120 +1000 | |
466 | @@ -0,0 +1,99 @@ | |
467 | +#include <linux/moduleloader.h> | |
468 | +#include <linux/elf.h> | |
469 | +#include <linux/vmalloc.h> | |
470 | +#include <linux/fs.h> | |
471 | +#include <linux/string.h> | |
472 | +#include <linux/kernel.h> | |
473 | + | |
474 | +#if 0 | |
475 | +#define DEBUGP printk | |
476 | +#else | |
477 | +#define DEBUGP(fmt...) | |
478 | +#endif | |
479 | + | |
480 | +void *module_alloc(unsigned long size) | |
481 | +{ | |
482 | + if (size == 0) | |
483 | + return NULL; | |
484 | + return vmalloc(size); | |
485 | +} | |
486 | + | |
487 | + | |
488 | +/* Free memory returned from module_alloc */ | |
489 | +void module_free(struct module *mod, void *module_region) | |
490 | +{ | |
491 | + vfree(module_region); | |
492 | + /* FIXME: If module_region == mod->init_region, trim exception | |
493 | + table entries. */ | |
494 | +} | |
495 | + | |
496 | +/* We don't need anything special. */ | |
497 | +int module_frob_arch_sections(Elf_Ehdr *hdr, | |
498 | + Elf_Shdr *sechdrs, | |
499 | + char *secstrings, | |
500 | + struct module *mod) | |
501 | +{ | |
502 | + return 0; | |
503 | +} | |
504 | + | |
505 | +int apply_relocate(Elf32_Shdr *sechdrs, | |
506 | + const char *strtab, | |
507 | + unsigned int symindex, | |
508 | + unsigned int relsec, | |
509 | + struct module *me) | |
510 | +{ | |
511 | + unsigned int i; | |
512 | + Elf32_Rel *rel = (void *)sechdrs[relsec].sh_addr; | |
513 | + Elf32_Sym *sym; | |
514 | + uint32_t *location; | |
515 | + | |
516 | + DEBUGP("Applying relocate section %u to %u\n", relsec, | |
517 | + sechdrs[relsec].sh_info); | |
518 | + for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) { | |
519 | + /* This is where to make the change */ | |
520 | + location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr | |
521 | + + rel[i].r_offset; | |
522 | + /* This is the symbol it is referring to. Note that all | |
523 | + undefined symbols have been resolved. */ | |
524 | + sym = (Elf32_Sym *)sechdrs[symindex].sh_addr | |
525 | + + ELF32_R_SYM(rel[i].r_info); | |
526 | + | |
527 | + switch (ELF32_R_TYPE(rel[i].r_info)) { | |
528 | + case R_68K_32: | |
529 | + /* We add the value into the location given */ | |
530 | + *location += sym->st_value; | |
531 | + break; | |
532 | + case R_68K_PC32: | |
533 | + /* Add the value, subtract its postition */ | |
534 | + *location += sym->st_value - (uint32_t)location; | |
535 | + break; | |
536 | + default: | |
537 | + printk(KERN_ERR "module %s: Unknown relocation: %u\n", | |
538 | + me->name, ELF32_R_TYPE(rel[i].r_info)); | |
539 | + return -ENOEXEC; | |
540 | + } | |
541 | + } | |
542 | + return 0; | |
543 | +} | |
544 | + | |
545 | +int apply_relocate_add(Elf32_Shdr *sechdrs, | |
546 | + const char *strtab, | |
547 | + unsigned int symindex, | |
548 | + unsigned int relsec, | |
549 | + struct module *me) | |
550 | +{ | |
551 | + printk(KERN_ERR "module %s: ADD RELOCATION unsupported\n", | |
552 | + me->name); | |
553 | + return -ENOEXEC; | |
554 | +} | |
555 | + | |
556 | +int module_finalize(const Elf_Ehdr *hdr, | |
557 | + const Elf_Shdr *sechdrs, | |
558 | + struct module *me) | |
559 | +{ | |
560 | + return 0; | |
561 | +} | |
562 | + | |
563 | +void module_arch_cleanup(struct module *mod) | |
564 | +{ | |
565 | +} | |
566 | diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/process.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/process.c | |
567 | --- linux-2.6.0-test8/arch/m68knommu/kernel/process.c 2003-10-20 09:10:57.720659336 +1000 | |
568 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/process.c 2003-10-20 09:11:54.102088056 +1000 | |
569 | @@ -95,17 +95,17 @@ | |
570 | ||
571 | void show_regs(struct pt_regs * regs) | |
572 | { | |
573 | - printk("\n"); | |
574 | - printk("Format %02x Vector: %04x PC: %08lx Status: %04x %s\n", | |
575 | + printk(KERN_NOTICE "\n"); | |
576 | + printk(KERN_NOTICE "Format %02x Vector: %04x PC: %08lx Status: %04x %s\n", | |
577 | regs->format, regs->vector, regs->pc, regs->sr, print_tainted()); | |
578 | - printk("ORIG_D0: %08lx D0: %08lx A2: %08lx A1: %08lx\n", | |
579 | + printk(KERN_NOTICE "ORIG_D0: %08lx D0: %08lx A2: %08lx A1: %08lx\n", | |
580 | regs->orig_d0, regs->d0, regs->a2, regs->a1); | |
581 | - printk("A0: %08lx D5: %08lx D4: %08lx\n", | |
582 | + printk(KERN_NOTICE "A0: %08lx D5: %08lx D4: %08lx\n", | |
583 | regs->a0, regs->d5, regs->d4); | |
584 | - printk("D3: %08lx D2: %08lx D1: %08lx\n", | |
585 | + printk(KERN_NOTICE "D3: %08lx D2: %08lx D1: %08lx\n", | |
586 | regs->d3, regs->d2, regs->d1); | |
587 | if (!(regs->sr & PS_S)) | |
588 | - printk("USP: %08lx\n", rdusp()); | |
589 | + printk(KERN_NOTICE "USP: %08lx\n", rdusp()); | |
590 | } | |
591 | ||
592 | /* | |
593 | @@ -328,58 +328,58 @@ | |
594 | unsigned char *tp; | |
595 | int i; | |
596 | ||
597 | - printk("\nCURRENT PROCESS:\n\n"); | |
598 | - printk("COMM=%s PID=%d\n", current->comm, current->pid); | |
599 | + printk(KERN_EMERG "\nCURRENT PROCESS:\n\n"); | |
600 | + printk(KERN_EMERG "COMM=%s PID=%d\n", current->comm, current->pid); | |
601 | ||
602 | if (current->mm) { | |
603 | - printk("TEXT=%08x-%08x DATA=%08x-%08x BSS=%08x-%08x\n", | |
604 | + printk(KERN_EMERG "TEXT=%08x-%08x DATA=%08x-%08x BSS=%08x-%08x\n", | |
605 | (int) current->mm->start_code, | |
606 | (int) current->mm->end_code, | |
607 | (int) current->mm->start_data, | |
608 | (int) current->mm->end_data, | |
609 | (int) current->mm->end_data, | |
610 | (int) current->mm->brk); | |
611 | - printk("USER-STACK=%08x KERNEL-STACK=%08x\n\n", | |
612 | + printk(KERN_EMERG "USER-STACK=%08x KERNEL-STACK=%08x\n\n", | |
613 | (int) current->mm->start_stack, | |
614 | (int)(((unsigned long) current) + KTHREAD_SIZE)); | |
615 | } | |
616 | ||
617 | - printk("PC: %08lx\n", fp->pc); | |
618 | - printk("SR: %08lx SP: %08lx\n", (long) fp->sr, (long) fp); | |
619 | - printk("d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n", | |
620 | + printk(KERN_EMERG "PC: %08lx\n", fp->pc); | |
621 | + printk(KERN_EMERG "SR: %08lx SP: %08lx\n", (long) fp->sr, (long) fp); | |
622 | + printk(KERN_EMERG "d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n", | |
623 | fp->d0, fp->d1, fp->d2, fp->d3); | |
624 | - printk("d4: %08lx d5: %08lx a0: %08lx a1: %08lx\n", | |
625 | + printk(KERN_EMERG "d4: %08lx d5: %08lx a0: %08lx a1: %08lx\n", | |
626 | fp->d4, fp->d5, fp->a0, fp->a1); | |
627 | - printk("\nUSP: %08x TRAPFRAME: %08x\n", (unsigned int) rdusp(), | |
628 | + printk(KERN_EMERG "\nUSP: %08x TRAPFRAME: %08x\n", (unsigned int) rdusp(), | |
629 | (unsigned int) fp); | |
630 | ||
631 | - printk("\nCODE:"); | |
632 | + printk(KERN_EMERG "\nCODE:"); | |
633 | tp = ((unsigned char *) fp->pc) - 0x20; | |
634 | for (sp = (unsigned long *) tp, i = 0; (i < 0x40); i += 4) { | |
635 | if ((i % 0x10) == 0) | |
636 | - printk("\n%08x: ", (int) (tp + i)); | |
637 | - printk("%08x ", (int) *sp++); | |
638 | + printk(KERN_EMERG "\n%08x: ", (int) (tp + i)); | |
639 | + printk(KERN_EMERG "%08x ", (int) *sp++); | |
640 | } | |
641 | - printk("\n"); | |
642 | + printk(KERN_EMERG "\n"); | |
643 | ||
644 | - printk("\nKERNEL STACK:"); | |
645 | + printk(KERN_EMERG "\nKERNEL STACK:"); | |
646 | tp = ((unsigned char *) fp) - 0x40; | |
647 | for (sp = (unsigned long *) tp, i = 0; (i < 0xc0); i += 4) { | |
648 | if ((i % 0x10) == 0) | |
649 | - printk("\n%08x: ", (int) (tp + i)); | |
650 | - printk("%08x ", (int) *sp++); | |
651 | + printk(KERN_EMERG "\n%08x: ", (int) (tp + i)); | |
652 | + printk(KERN_EMERG "%08x ", (int) *sp++); | |
653 | } | |
654 | - printk("\n"); | |
655 | - printk("\n"); | |
656 | + printk(KERN_EMERG "\n"); | |
657 | + printk(KERN_EMERG "\n"); | |
658 | ||
659 | - printk("\nUSER STACK:"); | |
660 | + printk(KERN_EMERG "\nUSER STACK:"); | |
661 | tp = (unsigned char *) (rdusp() - 0x10); | |
662 | for (sp = (unsigned long *) tp, i = 0; (i < 0x80); i += 4) { | |
663 | if ((i % 0x10) == 0) | |
664 | - printk("\n%08x: ", (int) (tp + i)); | |
665 | - printk("%08x ", (int) *sp++); | |
666 | + printk(KERN_EMERG "\n%08x: ", (int) (tp + i)); | |
667 | + printk(KERN_EMERG "%08x ", (int) *sp++); | |
668 | } | |
669 | - printk("\n\n"); | |
670 | + printk(KERN_EMERG "\n\n"); | |
671 | } | |
672 | ||
673 | /* | |
674 | diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/setup.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/setup.c | |
675 | --- linux-2.6.0-test8/arch/m68knommu/kernel/setup.c 2003-10-20 09:10:57.813645200 +1000 | |
676 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/setup.c 2003-10-20 09:11:54.104087752 +1000 | |
677 | @@ -59,7 +59,7 @@ | |
678 | { | |
679 | } | |
680 | ||
681 | -void (*mach_sched_init) (void (*handler)(int, void *, struct pt_regs *)) = NULL; | |
682 | +void (*mach_sched_init) (irqreturn_t (*handler)(int, void *, struct pt_regs *)) = NULL; | |
683 | void (*mach_tick)( void ) = NULL; | |
684 | /* machine dependent keyboard functions */ | |
685 | int (*mach_keyb_init) (void) = NULL; | |
686 | @@ -67,10 +67,7 @@ | |
687 | void (*mach_kbd_leds) (unsigned int) = NULL; | |
688 | /* machine dependent irq functions */ | |
689 | void (*mach_init_IRQ) (void) = NULL; | |
690 | -void (*(*mach_default_handler)[]) (int, void *, struct pt_regs *) = NULL; | |
691 | -int (*mach_request_irq) (unsigned int, void (*)(int, void *, struct pt_regs *), | |
692 | - unsigned long, const char *, void *); | |
693 | -void (*mach_free_irq) (unsigned int irq, void *dev_id) = NULL; | |
694 | +irqreturn_t (*(*mach_default_handler)[]) (int, void *, struct pt_regs *) = NULL; | |
695 | void (*mach_enable_irq) (unsigned int) = NULL; | |
696 | void (*mach_disable_irq) (unsigned int) = NULL; | |
697 | int (*mach_get_irq_list) (struct seq_file *, void *) = NULL; | |
698 | @@ -163,57 +160,57 @@ | |
699 | ||
700 | config_BSP(&command_line[0], sizeof(command_line)); | |
701 | ||
702 | - printk("\x0F\r\n\nuClinux/" CPU "\n"); | |
703 | + printk(KERN_INFO "\x0F\r\n\nuClinux/" CPU "\n"); | |
704 | ||
705 | #ifdef CONFIG_UCDIMM | |
706 | - printk("uCdimm by Lineo, Inc. <www.lineo.com>\n"); | |
707 | + printk(KERN_INFO "uCdimm by Lineo, Inc. <www.lineo.com>\n"); | |
708 | #endif | |
709 | #ifdef CONFIG_M68VZ328 | |
710 | - printk("M68VZ328 support by Evan Stawnyczy <e@lineo.ca>\n"); | |
711 | + printk(KERN_INFO "M68VZ328 support by Evan Stawnyczy <e@lineo.ca>\n"); | |
712 | #endif | |
713 | #ifdef CONFIG_COLDFIRE | |
714 | - printk("COLDFIRE port done by Greg Ungerer, gerg@snapgear.com\n"); | |
715 | + printk(KERN_INFO "COLDFIRE port done by Greg Ungerer, gerg@snapgear.com\n"); | |
716 | #ifdef CONFIG_M5307 | |
717 | - printk("Modified for M5307 by Dave Miller, dmiller@intellistor.com\n"); | |
718 | + printk(KERN_INFO "Modified for M5307 by Dave Miller, dmiller@intellistor.com\n"); | |
719 | #endif | |
720 | #ifdef CONFIG_ELITE | |
721 | - printk("Modified for M5206eLITE by Rob Scott, rscott@mtrob.fdns.net\n"); | |
722 | + printk(KERN_INFO "Modified for M5206eLITE by Rob Scott, rscott@mtrob.fdns.net\n"); | |
723 | #endif | |
724 | #ifdef CONFIG_TELOS | |
725 | - printk("Modified for Omnia ToolVox by James D. Schettine, james@telos-systems.com\n"); | |
726 | + printk(KERN_INFO "Modified for Omnia ToolVox by James D. Schettine, james@telos-systems.com\n"); | |
727 | #endif | |
728 | #endif | |
729 | - printk("Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n"); | |
730 | + printk(KERN_INFO "Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n"); | |
731 | ||
732 | #if defined( CONFIG_PILOT ) && defined( CONFIG_M68328 ) | |
733 | - printk("TRG SuperPilot FLASH card support <info@trgnet.com>\n"); | |
734 | + printk(KERN_INFO "TRG SuperPilot FLASH card support <info@trgnet.com>\n"); | |
735 | #endif | |
736 | ||
737 | #if defined( CONFIG_PILOT ) && defined( CONFIG_M68EZ328 ) | |
738 | - printk("PalmV support by Lineo Inc. <jeff@uclinux.com>\n"); | |
739 | + printk(KERN_INFO "PalmV support by Lineo Inc. <jeff@uclinux.com>\n"); | |
740 | #endif | |
741 | ||
742 | #ifdef CONFIG_M68EZ328ADS | |
743 | - printk("M68EZ328ADS board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n"); | |
744 | + printk(KERN_INFO "M68EZ328ADS board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n"); | |
745 | #endif | |
746 | ||
747 | #ifdef CONFIG_ALMA_ANS | |
748 | - printk("Alma Electronics board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n"); | |
749 | + printk(KERN_INFO "Alma Electronics board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n"); | |
750 | #endif | |
751 | #if defined (CONFIG_M68360) | |
752 | - printk("QUICC port done by SED Systems <hamilton@sedsystems.ca>,\n"); | |
753 | - printk("based on 2.0.38 port by Lineo Inc. <mleslie@lineo.com>.\n"); | |
754 | + printk(KERN_INFO "QUICC port done by SED Systems <hamilton@sedsystems.ca>,\n"); | |
755 | + printk(KERN_INFO "based on 2.0.38 port by Lineo Inc. <mleslie@lineo.com>.\n"); | |
756 | #endif | |
757 | #ifdef CONFIG_DRAGEN2 | |
758 | - printk("DragonEngine II board support by Georges Menie\n"); | |
759 | + printk(KERN_INFO "DragonEngine II board support by Georges Menie\n"); | |
760 | #endif | |
761 | ||
762 | #ifdef DEBUG | |
763 | - printk("KERNEL -> TEXT=0x%06x-0x%06x DATA=0x%06x-0x%06x " | |
764 | + printk(KERN_DEBUG "KERNEL -> TEXT=0x%06x-0x%06x DATA=0x%06x-0x%06x " | |
765 | "BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext, | |
766 | (int) &_sdata, (int) &_edata, | |
767 | (int) &_sbss, (int) &_ebss); | |
768 | - printk("KERNEL -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x " | |
769 | + printk(KERN_DEBUG "KERNEL -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x " | |
770 | "STACK=0x%06x-0x%06x\n", | |
771 | #ifdef CAT_ROMARRAY | |
772 | (int) romarray, ((int) romarray) + romarray[2], | |
773 | @@ -231,7 +228,7 @@ | |
774 | ||
775 | #ifdef DEBUG | |
776 | if (strlen(*cmdline_p)) | |
777 | - printk("Command line: '%s'\n", *cmdline_p); | |
778 | + printk(KERN_DEBUG "Command line: '%s'\n", *cmdline_p); | |
779 | #endif | |
780 | ||
781 | #ifdef CONFIG_CONSOLE | |
782 | diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/signal.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/signal.c | |
783 | --- linux-2.6.0-test8/arch/m68knommu/kernel/signal.c 2003-10-20 09:10:57.800647176 +1000 | |
784 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/signal.c 2003-10-20 09:11:54.110086840 +1000 | |
785 | @@ -605,7 +605,7 @@ | |
786 | struct pt_regs *tregs = | |
787 | (struct pt_regs *)((ulong)regs + regs->stkadj); | |
788 | #if DEBUG | |
789 | - printk("Performing stackadjust=%04x\n", regs->stkadj); | |
790 | + printk(KERN_DEBUG "Performing stackadjust=%04x\n", regs->stkadj); | |
791 | #endif | |
792 | /* This must be copied with decreasing addresses to | |
793 | handle overlaps. */ | |
794 | @@ -674,7 +674,7 @@ | |
795 | struct pt_regs *tregs = | |
796 | (struct pt_regs *)((ulong)regs + regs->stkadj); | |
797 | #if DEBUG | |
798 | - printk("Performing stackadjust=%04x\n", regs->stkadj); | |
799 | + printk(KERN_DEBUG "Performing stackadjust=%04x\n", regs->stkadj); | |
800 | #endif | |
801 | /* This must be copied with decreasing addresses to | |
802 | handle overlaps. */ | |
803 | diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/time.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/time.c | |
804 | --- linux-2.6.0-test8/arch/m68knommu/kernel/time.c 2003-10-20 09:10:57.814645048 +1000 | |
805 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/time.c 2003-10-20 09:11:54.133083344 +1000 | |
806 | @@ -202,4 +202,12 @@ | |
807 | return 0; | |
808 | } | |
809 | ||
810 | +/* | |
811 | + * Scheduler clock - returns current time in nanosec units. | |
812 | + */ | |
813 | +unsigned long long sched_clock(void) | |
814 | +{ | |
815 | + return (unsigned long long)jiffies * (1000000000 / HZ); | |
816 | +} | |
817 | + | |
818 | EXPORT_SYMBOL(do_settimeofday); | |
819 | diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/traps.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/traps.c | |
820 | --- linux-2.6.0-test8/arch/m68knommu/kernel/traps.c 2003-10-20 09:10:57.722659032 +1000 | |
821 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/traps.c 2003-10-20 09:11:54.134083192 +1000 | |
822 | @@ -72,15 +72,15 @@ | |
823 | return; | |
824 | ||
825 | console_verbose(); | |
826 | - printk("%s: %08x\n",str,nr); | |
827 | - printk("PC: [<%08lx>]\nSR: %04x SP: %p a2: %08lx\n", | |
828 | + printk(KERN_EMERG "%s: %08x\n",str,nr); | |
829 | + printk(KERN_EMERG "PC: [<%08lx>]\nSR: %04x SP: %p a2: %08lx\n", | |
830 | fp->pc, fp->sr, fp, fp->a2); | |
831 | - printk("d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n", | |
832 | + printk(KERN_EMERG "d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n", | |
833 | fp->d0, fp->d1, fp->d2, fp->d3); | |
834 | - printk("d4: %08lx d5: %08lx a0: %08lx a1: %08lx\n", | |
835 | + printk(KERN_EMERG "d4: %08lx d5: %08lx a0: %08lx a1: %08lx\n", | |
836 | fp->d4, fp->d5, fp->a0, fp->a1); | |
837 | ||
838 | - printk("Process %s (pid: %d, stackpage=%08lx)\n", | |
839 | + printk(KERN_EMERG "Process %s (pid: %d, stackpage=%08lx)\n", | |
840 | current->comm, current->pid, PAGE_SIZE+(unsigned long)current); | |
841 | show_stack(NULL, (unsigned long *)fp); | |
842 | do_exit(SIGSEGV); | |
843 | @@ -93,12 +93,12 @@ | |
844 | current->thread.esp0 = (unsigned long) fp; | |
845 | ||
846 | #if DEBUG | |
847 | - printk ("*** Bus Error *** Format is %x\n", fp->ptregs.format); | |
848 | + printk (KERN_DEBUG "*** Bus Error *** Format is %x\n", fp->ptregs.format); | |
849 | #endif | |
850 | ||
851 | die_if_kernel("bad frame format",&fp->ptregs,0); | |
852 | #if DEBUG | |
853 | - printk("Unknown SIGSEGV - 4\n"); | |
854 | + printk(KERN_DEBUG "Unknown SIGSEGV - 4\n"); | |
855 | #endif | |
856 | force_sig(SIGSEGV, current); | |
857 | } | |
858 | @@ -119,16 +119,16 @@ | |
859 | addr = (unsigned long) esp; | |
860 | endstack = (unsigned long *) PAGE_ALIGN(addr); | |
861 | ||
862 | - printk("Stack from %08lx:", (unsigned long)stack); | |
863 | + printk(KERN_EMERG "Stack from %08lx:", (unsigned long)stack); | |
864 | for (i = 0; i < kstack_depth_to_print; i++) { | |
865 | if (stack + 1 > endstack) | |
866 | break; | |
867 | if (i % 8 == 0) | |
868 | - printk("\n "); | |
869 | - printk(" %08lx", *stack++); | |
870 | + printk(KERN_EMERG "\n "); | |
871 | + printk(KERN_EMERG " %08lx", *stack++); | |
872 | } | |
873 | ||
874 | - printk("\nCall Trace:"); | |
875 | + printk(KERN_EMERG "\nCall Trace:"); | |
876 | i = 0; | |
877 | while (stack + 1 <= endstack) { | |
878 | addr = *stack++; | |
879 | @@ -143,26 +143,26 @@ | |
880 | if (((addr >= (unsigned long) &_start) && | |
881 | (addr <= (unsigned long) &_etext))) { | |
882 | if (i % 4 == 0) | |
883 | - printk("\n "); | |
884 | - printk(" [<%08lx>]", addr); | |
885 | + printk(KERN_EMERG "\n "); | |
886 | + printk(KERN_EMERG " [<%08lx>]", addr); | |
887 | i++; | |
888 | } | |
889 | } | |
890 | - printk("\n"); | |
891 | + printk(KERN_EMERG "\n"); | |
892 | } | |
893 | ||
894 | void bad_super_trap(struct frame *fp) | |
895 | { | |
896 | console_verbose(); | |
897 | if (fp->ptregs.vector < 4*sizeof(vec_names)/sizeof(vec_names[0])) | |
898 | - printk ("*** %s *** FORMAT=%X\n", | |
899 | + printk (KERN_WARNING "*** %s *** FORMAT=%X\n", | |
900 | vec_names[(fp->ptregs.vector) >> 2], | |
901 | fp->ptregs.format); | |
902 | else | |
903 | - printk ("*** Exception %d *** FORMAT=%X\n", | |
904 | + printk (KERN_WARNING "*** Exception %d *** FORMAT=%X\n", | |
905 | (fp->ptregs.vector) >> 2, | |
906 | fp->ptregs.format); | |
907 | - printk ("Current process id is %d\n", current->pid); | |
908 | + printk (KERN_WARNING "Current process id is %d\n", current->pid); | |
909 | die_if_kernel("BAD KERNEL TRAP", &fp->ptregs, 0); | |
910 | } | |
911 | ||
912 | @@ -297,7 +297,7 @@ | |
913 | ||
914 | void show_trace_task(struct task_struct *tsk) | |
915 | { | |
916 | - printk("STACK ksp=0x%lx, usp=0x%lx\n", tsk->thread.ksp, tsk->thread.usp); | |
917 | + printk(KERN_WARNING "STACK ksp=0x%lx, usp=0x%lx\n", tsk->thread.ksp, tsk->thread.usp); | |
918 | } | |
919 | ||
920 | #ifdef CONFIG_M68KFPU_EMU | |
921 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/checksum.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/checksum.c | |
922 | --- linux-2.6.0-test8/arch/m68knommu/lib/checksum.c 2003-10-20 09:10:57.817644592 +1000 | |
923 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/checksum.c 2003-10-20 09:11:53.749141712 +1000 | |
924 | @@ -32,7 +32,6 @@ | |
925 | of the assembly has to go. */ | |
926 | ||
927 | #include <net/checksum.h> | |
928 | -#include <net/module.h> | |
929 | ||
930 | static inline unsigned short from32to16(unsigned long x) | |
931 | { | |
932 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/cmpdi2.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/cmpdi2.c | |
933 | --- linux-2.6.0-test8/arch/m68knommu/lib/cmpdi2.c 1970-01-01 10:00:00.000000000 +1000 | |
934 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/cmpdi2.c 2003-10-20 09:11:53.758140344 +1000 | |
935 | @@ -0,0 +1,71 @@ | |
936 | +/* cmpdi2.c extracted from gcc-2.95.3/libgcc2.c which is: */ | |
937 | +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc. | |
938 | + | |
939 | +This file is part of GNU CC. | |
940 | + | |
941 | +GNU CC is free software; you can redistribute it and/or modify | |
942 | +it under the terms of the GNU General Public License as published by | |
943 | +the Free Software Foundation; either version 2, or (at your option) | |
944 | +any later version. | |
945 | + | |
946 | +GNU CC is distributed in the hope that it will be useful, | |
947 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
948 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
949 | +GNU General Public License for more details. | |
950 | + | |
951 | +You should have received a copy of the GNU General Public License | |
952 | +along with GNU CC; see the file COPYING. If not, write to | |
953 | +the Free Software Foundation, 59 Temple Place - Suite 330, | |
954 | +Boston, MA 02111-1307, USA. */ | |
955 | + | |
956 | +typedef int SItype __attribute__ ((mode (SI))); | |
957 | +typedef unsigned int USItype __attribute__ ((mode (SI))); | |
958 | +typedef int DItype __attribute__ ((mode (DI))); | |
959 | +typedef unsigned int UDItype __attribute__ ((mode (DI))); | |
960 | + | |
961 | +typedef int word_type __attribute__ ((mode (__word__))); | |
962 | + | |
963 | +struct DIstruct {SItype high, low;}; | |
964 | + | |
965 | +typedef union | |
966 | +{ | |
967 | + struct DIstruct s; | |
968 | + DItype ll; | |
969 | +} DIunion; | |
970 | + | |
971 | +word_type | |
972 | +__cmpdi2 (DItype a, DItype b) | |
973 | +{ | |
974 | + DIunion au, bu; | |
975 | + | |
976 | + au.ll = a, bu.ll = b; | |
977 | + | |
978 | + if (au.s.high < bu.s.high) | |
979 | + return 0; | |
980 | + else if (au.s.high > bu.s.high) | |
981 | + return 2; | |
982 | + if ((USItype) au.s.low < (USItype) bu.s.low) | |
983 | + return 0; | |
984 | + else if ((USItype) au.s.low > (USItype) bu.s.low) | |
985 | + return 2; | |
986 | + return 1; | |
987 | +} | |
988 | + | |
989 | + | |
990 | +word_type | |
991 | +__ucmpdi2 (DItype a, DItype b) | |
992 | +{ | |
993 | + DIunion au, bu; | |
994 | + | |
995 | + au.ll = a, bu.ll = b; | |
996 | + | |
997 | + if ((USItype) au.s.high < (USItype) bu.s.high) | |
998 | + return 0; | |
999 | + else if ((USItype) au.s.high > (USItype) bu.s.high) | |
1000 | + return 2; | |
1001 | + if ((USItype) au.s.low < (USItype) bu.s.low) | |
1002 | + return 0; | |
1003 | + else if ((USItype) au.s.low > (USItype) bu.s.low) | |
1004 | + return 2; | |
1005 | + return 1; | |
1006 | +} | |
1007 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/divdi3.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/divdi3.c | |
1008 | --- linux-2.6.0-test8/arch/m68knommu/lib/divdi3.c 1970-01-01 10:00:00.000000000 +1000 | |
1009 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/divdi3.c 2003-10-20 09:11:53.773138064 +1000 | |
1010 | @@ -0,0 +1,66 @@ | |
1011 | +/* divdi3.c extracted from gcc-2.95.3/libgcc2.c which is: */ | |
1012 | +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc. | |
1013 | + | |
1014 | +This file is part of GNU CC. | |
1015 | + | |
1016 | +GNU CC is free software; you can redistribute it and/or modify | |
1017 | +it under the terms of the GNU General Public License as published by | |
1018 | +the Free Software Foundation; either version 2, or (at your option) | |
1019 | +any later version. | |
1020 | + | |
1021 | +GNU CC is distributed in the hope that it will be useful, | |
1022 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
1023 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
1024 | +GNU General Public License for more details. | |
1025 | + | |
1026 | +You should have received a copy of the GNU General Public License | |
1027 | +along with GNU CC; see the file COPYING. If not, write to | |
1028 | +the Free Software Foundation, 59 Temple Place - Suite 330, | |
1029 | +Boston, MA 02111-1307, USA. */ | |
1030 | + | |
1031 | +typedef int SItype __attribute__ ((mode (SI))); | |
1032 | +typedef int DItype __attribute__ ((mode (DI))); | |
1033 | +typedef unsigned int UDItype __attribute__ ((mode (DI))); | |
1034 | + | |
1035 | +typedef int word_type __attribute__ ((mode (__word__))); | |
1036 | + | |
1037 | +struct DIstruct {SItype high, low;}; | |
1038 | + | |
1039 | +typedef union | |
1040 | +{ | |
1041 | + struct DIstruct s; | |
1042 | + DItype ll; | |
1043 | +} DIunion; | |
1044 | + | |
1045 | +UDItype __udivmoddi4 (UDItype n, UDItype d, UDItype *rp); | |
1046 | +DItype __negdi2 (DItype u); | |
1047 | + | |
1048 | +DItype | |
1049 | +__divdi3 (DItype u, DItype v) | |
1050 | +{ | |
1051 | + word_type c = 0; | |
1052 | + DIunion uu, vv; | |
1053 | + DItype w; | |
1054 | + | |
1055 | + uu.ll = u; | |
1056 | + vv.ll = v; | |
1057 | + | |
1058 | + if (uu.s.high < 0) | |
1059 | + c = ~c, | |
1060 | + uu.ll = __negdi2 (uu.ll); | |
1061 | + if (vv.s.high < 0) | |
1062 | + c = ~c, | |
1063 | + vv.ll = __negdi2 (vv.ll); | |
1064 | + | |
1065 | + w = __udivmoddi4 (uu.ll, vv.ll, (UDItype *) 0); | |
1066 | + if (c) | |
1067 | + w = __negdi2 (w); | |
1068 | + | |
1069 | + return w; | |
1070 | +} | |
1071 | + | |
1072 | +UDItype | |
1073 | +__udivdi3 (UDItype n, UDItype d) | |
1074 | +{ | |
1075 | + return __udivmoddi4 (n, d, (UDItype *) 0); | |
1076 | +} | |
1077 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/divsi3.S linux-2.6.0-test8-uc0/arch/m68knommu/lib/divsi3.S | |
1078 | --- linux-2.6.0-test8/arch/m68knommu/lib/divsi3.S 2003-10-20 09:10:57.818644440 +1000 | |
1079 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/divsi3.S 2003-10-20 09:11:53.781136848 +1000 | |
1080 | @@ -97,7 +97,7 @@ | |
1081 | movel sp@(12), d1 /* d1 = divisor */ | |
1082 | jpl L1 | |
1083 | negl d1 | |
1084 | -#ifndef __mcf5200__ | |
1085 | +#if !(defined(__mcf5200__) || defined(__mcoldfire__)) | |
1086 | negb d2 /* change sign because divisor <0 */ | |
1087 | #else | |
1088 | negl d2 /* change sign because divisor <0 */ | |
1089 | @@ -105,7 +105,7 @@ | |
1090 | L1: movel sp@(8), d0 /* d0 = dividend */ | |
1091 | jpl L2 | |
1092 | negl d0 | |
1093 | -#ifndef __mcf5200__ | |
1094 | +#if !(defined(__mcf5200__) || defined(__mcoldfire__)) | |
1095 | negb d2 | |
1096 | #else | |
1097 | negl d2 | |
1098 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/gcc_bcmp.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/gcc_bcmp.c | |
1099 | --- linux-2.6.0-test8/arch/m68knommu/lib/gcc_bcmp.c 1970-01-01 10:00:00.000000000 +1000 | |
1100 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/gcc_bcmp.c 2003-10-20 09:11:53.781136848 +1000 | |
1101 | @@ -0,0 +1,38 @@ | |
1102 | +/* gcc_bmp.c extracted from gcc-2.95.3/libgcc2.c which is: */ | |
1103 | +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc. | |
1104 | + | |
1105 | +This file is part of GNU CC. | |
1106 | + | |
1107 | +GNU CC is free software; you can redistribute it and/or modify | |
1108 | +it under the terms of the GNU General Public License as published by | |
1109 | +the Free Software Foundation; either version 2, or (at your option) | |
1110 | +any later version. | |
1111 | + | |
1112 | +GNU CC is distributed in the hope that it will be useful, | |
1113 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
1114 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
1115 | +GNU General Public License for more details. | |
1116 | + | |
1117 | +You should have received a copy of the GNU General Public License | |
1118 | +along with GNU CC; see the file COPYING. If not, write to | |
1119 | +the Free Software Foundation, 59 Temple Place - Suite 330, | |
1120 | +Boston, MA 02111-1307, USA. */ | |
1121 | + | |
1122 | +#include <linux/types.h> | |
1123 | + | |
1124 | +/* Like bcmp except the sign is meaningful. | |
1125 | + Result is negative if S1 is less than S2, | |
1126 | + positive if S1 is greater, 0 if S1 and S2 are equal. */ | |
1127 | + | |
1128 | +int | |
1129 | +__gcc_bcmp (unsigned char *s1, unsigned char *s2, size_t size) | |
1130 | +{ | |
1131 | + while (size > 0) | |
1132 | + { | |
1133 | + unsigned char c1 = *s1++, c2 = *s2++; | |
1134 | + if (c1 != c2) | |
1135 | + return c1 - c2; | |
1136 | + size--; | |
1137 | + } | |
1138 | + return 0; | |
1139 | +} | |
1140 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/Makefile linux-2.6.0-test8-uc0/arch/m68knommu/lib/Makefile | |
1141 | --- linux-2.6.0-test8/arch/m68knommu/lib/Makefile 2003-10-20 09:10:57.816644744 +1000 | |
1142 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/Makefile 2003-10-20 09:11:53.730144600 +1000 | |
1143 | @@ -4,4 +4,5 @@ | |
1144 | ||
1145 | lib-y := ashldi3.o ashrdi3.o lshrdi3.o \ | |
1146 | muldi3.o mulsi3.o divsi3.o udivsi3.o modsi3.o umodsi3.o \ | |
1147 | - checksum.o semaphore.o memcpy.o memset.o | |
1148 | + checksum.o semaphore.o memcpy.o memset.o \ | |
1149 | + cmpdi2.o divdi3.o negdi2.o moddi3.o udivmoddi4.o gcc_bcmp.o | |
1150 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/moddi3.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/moddi3.c | |
1151 | --- linux-2.6.0-test8/arch/m68knommu/lib/moddi3.c 1970-01-01 10:00:00.000000000 +1000 | |
1152 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/moddi3.c 2003-10-20 09:11:53.782136696 +1000 | |
1153 | @@ -0,0 +1,69 @@ | |
1154 | +/* moddi3.c extracted from gcc-2.95.3/libgcc2.c which is: */ | |
1155 | +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc. | |
1156 | + | |
1157 | +This file is part of GNU CC. | |
1158 | + | |
1159 | +GNU CC is free software; you can redistribute it and/or modify | |
1160 | +it under the terms of the GNU General Public License as published by | |
1161 | +the Free Software Foundation; either version 2, or (at your option) | |
1162 | +any later version. | |
1163 | + | |
1164 | +GNU CC is distributed in the hope that it will be useful, | |
1165 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
1166 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
1167 | +GNU General Public License for more details. | |
1168 | + | |
1169 | +You should have received a copy of the GNU General Public License | |
1170 | +along with GNU CC; see the file COPYING. If not, write to | |
1171 | +the Free Software Foundation, 59 Temple Place - Suite 330, | |
1172 | +Boston, MA 02111-1307, USA. */ | |
1173 | + | |
1174 | +typedef int SItype __attribute__ ((mode (SI))); | |
1175 | +typedef int DItype __attribute__ ((mode (DI))); | |
1176 | +typedef unsigned int UDItype __attribute__ ((mode (DI))); | |
1177 | + | |
1178 | +typedef int word_type __attribute__ ((mode (__word__))); | |
1179 | + | |
1180 | +struct DIstruct {SItype high, low;}; | |
1181 | + | |
1182 | +typedef union | |
1183 | +{ | |
1184 | + struct DIstruct s; | |
1185 | + DItype ll; | |
1186 | +} DIunion; | |
1187 | + | |
1188 | +UDItype __udivmoddi4 (UDItype n, UDItype d, UDItype *rp); | |
1189 | +DItype __negdi2 (DItype u); | |
1190 | + | |
1191 | +DItype | |
1192 | +__moddi3 (DItype u, DItype v) | |
1193 | +{ | |
1194 | + word_type c = 0; | |
1195 | + DIunion uu, vv; | |
1196 | + DItype w; | |
1197 | + | |
1198 | + uu.ll = u; | |
1199 | + vv.ll = v; | |
1200 | + | |
1201 | + if (uu.s.high < 0) | |
1202 | + c = ~c, | |
1203 | + uu.ll = __negdi2 (uu.ll); | |
1204 | + if (vv.s.high < 0) | |
1205 | + vv.ll = __negdi2 (vv.ll); | |
1206 | + | |
1207 | + (void) __udivmoddi4 (uu.ll, vv.ll, &w); | |
1208 | + if (c) | |
1209 | + w = __negdi2 (w); | |
1210 | + | |
1211 | + return w; | |
1212 | +} | |
1213 | + | |
1214 | +UDItype | |
1215 | +__umoddi3 (UDItype u, UDItype v) | |
1216 | +{ | |
1217 | + UDItype w; | |
1218 | + | |
1219 | + (void) __udivmoddi4 (u, v, &w); | |
1220 | + | |
1221 | + return w; | |
1222 | +} | |
1223 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/modsi3.S linux-2.6.0-test8-uc0/arch/m68knommu/lib/modsi3.S | |
1224 | --- linux-2.6.0-test8/arch/m68knommu/lib/modsi3.S 2003-10-20 09:10:57.815644896 +1000 | |
1225 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/modsi3.S 2003-10-20 09:11:53.782136696 +1000 | |
1226 | @@ -98,7 +98,7 @@ | |
1227 | jbsr SYM (__divsi3) | |
1228 | addql IMM (8), sp | |
1229 | movel sp@(8), d1 /* d1 = divisor */ | |
1230 | -#ifndef __mcf5200__ | |
1231 | +#if !(defined(__mcf5200__) || defined(__mcoldfire__)) | |
1232 | movel d1, sp@- | |
1233 | movel d0, sp@- | |
1234 | jbsr SYM (__mulsi3) /* d0 = (a/b)*b */ | |
1235 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/mulsi3.S linux-2.6.0-test8-uc0/arch/m68knommu/lib/mulsi3.S | |
1236 | --- linux-2.6.0-test8/arch/m68knommu/lib/mulsi3.S 2003-10-20 09:10:57.865637296 +1000 | |
1237 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/mulsi3.S 2003-10-20 09:11:53.783136544 +1000 | |
1238 | @@ -95,7 +95,7 @@ | |
1239 | muluw sp@(10), d0 /* x0*y1 */ | |
1240 | movew sp@(6), d1 /* x1 -> d1 */ | |
1241 | muluw sp@(8), d1 /* x1*y0 */ | |
1242 | -#ifndef __mcf5200__ | |
1243 | +#if !(defined(__mcf5200__) || defined(__mcoldfire__)) | |
1244 | addw d1, d0 | |
1245 | #else | |
1246 | addl d1, d0 | |
1247 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/negdi2.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/negdi2.c | |
1248 | --- linux-2.6.0-test8/arch/m68knommu/lib/negdi2.c 1970-01-01 10:00:00.000000000 +1000 | |
1249 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/negdi2.c 2003-10-20 09:11:53.783136544 +1000 | |
1250 | @@ -0,0 +1,47 @@ | |
1251 | +/* negdi2.c extracted from gcc-2.95.3/libgcc2.c which is: */ | |
1252 | +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc. | |
1253 | + | |
1254 | +This file is part of GNU CC. | |
1255 | + | |
1256 | +GNU CC is free software; you can redistribute it and/or modify | |
1257 | +it under the terms of the GNU General Public License as published by | |
1258 | +the Free Software Foundation; either version 2, or (at your option) | |
1259 | +any later version. | |
1260 | + | |
1261 | +GNU CC is distributed in the hope that it will be useful, | |
1262 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
1263 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
1264 | +GNU General Public License for more details. | |
1265 | + | |
1266 | +You should have received a copy of the GNU General Public License | |
1267 | +along with GNU CC; see the file COPYING. If not, write to | |
1268 | +the Free Software Foundation, 59 Temple Place - Suite 330, | |
1269 | +Boston, MA 02111-1307, USA. */ | |
1270 | + | |
1271 | +typedef int SItype __attribute__ ((mode (SI))); | |
1272 | +typedef unsigned int USItype __attribute__ ((mode (SI))); | |
1273 | +typedef int DItype __attribute__ ((mode (DI))); | |
1274 | + | |
1275 | +typedef int word_type __attribute__ ((mode (__word__))); | |
1276 | + | |
1277 | +struct DIstruct {SItype high, low;}; | |
1278 | + | |
1279 | +typedef union | |
1280 | +{ | |
1281 | + struct DIstruct s; | |
1282 | + DItype ll; | |
1283 | +} DIunion; | |
1284 | + | |
1285 | +DItype | |
1286 | +__negdi2 (DItype u) | |
1287 | +{ | |
1288 | + DIunion w; | |
1289 | + DIunion uu; | |
1290 | + | |
1291 | + uu.ll = u; | |
1292 | + | |
1293 | + w.s.low = -uu.s.low; | |
1294 | + w.s.high = -uu.s.high - ((USItype) w.s.low > 0); | |
1295 | + | |
1296 | + return w.ll; | |
1297 | +} | |
1298 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/udivmoddi4.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/udivmoddi4.c | |
1299 | --- linux-2.6.0-test8/arch/m68knommu/lib/udivmoddi4.c 1970-01-01 10:00:00.000000000 +1000 | |
1300 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/udivmoddi4.c 2003-10-20 09:11:53.784136392 +1000 | |
1301 | @@ -0,0 +1,413 @@ | |
1302 | +/* udivmoddi4.c extracted from gcc-2.95.3/libgcc2.c | |
1303 | + * and gcc-2.95.3/longlong.h which are: */ | |
1304 | +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc. | |
1305 | + | |
1306 | +This file is part of GNU CC. | |
1307 | + | |
1308 | +GNU CC is free software; you can redistribute it and/or modify | |
1309 | +it under the terms of the GNU General Public License as published by | |
1310 | +the Free Software Foundation; either version 2, or (at your option) | |
1311 | +any later version. | |
1312 | + | |
1313 | +GNU CC is distributed in the hope that it will be useful, | |
1314 | +but WITHOUT ANY WARRANTY; without even the implied warranty of | |
1315 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
1316 | +GNU General Public License for more details. | |
1317 | + | |
1318 | +You should have received a copy of the GNU General Public License | |
1319 | +along with GNU CC; see the file COPYING. If not, write to | |
1320 | +the Free Software Foundation, 59 Temple Place - Suite 330, | |
1321 | +Boston, MA 02111-1307, USA. */ | |
1322 | + | |
1323 | +#define BITS_PER_UNIT 8 | |
1324 | + | |
1325 | +typedef unsigned int UQItype __attribute__ ((mode (QI))); | |
1326 | +typedef int SItype __attribute__ ((mode (SI))); | |
1327 | +typedef unsigned int USItype __attribute__ ((mode (SI))); | |
1328 | +typedef int DItype __attribute__ ((mode (DI))); | |
1329 | +typedef unsigned int UDItype __attribute__ ((mode (DI))); | |
1330 | + | |
1331 | +#define SI_TYPE_SIZE (sizeof (SItype) * BITS_PER_UNIT) | |
1332 | + | |
1333 | +struct DIstruct {SItype high, low;}; | |
1334 | + | |
1335 | +typedef union | |
1336 | +{ | |
1337 | + struct DIstruct s; | |
1338 | + DItype ll; | |
1339 | +} DIunion; | |
1340 | + | |
1341 | +#define sub_ddmmss(sh, sl, ah, al, bh, bl) \ | |
1342 | + __asm__ ("sub%.l %5,%1 | |
1343 | + subx%.l %3,%0" \ | |
1344 | + : "=d" ((USItype) (sh)), \ | |
1345 | + "=&d" ((USItype) (sl)) \ | |
1346 | + : "0" ((USItype) (ah)), \ | |
1347 | + "d" ((USItype) (bh)), \ | |
1348 | + "1" ((USItype) (al)), \ | |
1349 | + "g" ((USItype) (bl))) | |
1350 | + | |
1351 | +#if !defined(__mcf5200__) | |
1352 | +/* %/ inserts REGISTER_PREFIX, %# inserts IMMEDIATE_PREFIX. */ | |
1353 | +#define umul_ppmm(xh, xl, a, b) \ | |
1354 | + __asm__ ("| Inlined umul_ppmm | |
1355 | + move%.l %2,%/d0 | |
1356 | + move%.l %3,%/d1 | |
1357 | + move%.l %/d0,%/d2 | |
1358 | + swap %/d0 | |
1359 | + move%.l %/d1,%/d3 | |
1360 | + swap %/d1 | |
1361 | + move%.w %/d2,%/d4 | |
1362 | + mulu %/d3,%/d4 | |
1363 | + mulu %/d1,%/d2 | |
1364 | + mulu %/d0,%/d3 | |
1365 | + mulu %/d0,%/d1 | |
1366 | + move%.l %/d4,%/d0 | |
1367 | + eor%.w %/d0,%/d0 | |
1368 | + swap %/d0 | |
1369 | + add%.l %/d0,%/d2 | |
1370 | + add%.l %/d3,%/d2 | |
1371 | + jcc 1f | |
1372 | + add%.l %#65536,%/d1 | |
1373 | +1: swap %/d2 | |
1374 | + moveq %#0,%/d0 | |
1375 | + move%.w %/d2,%/d0 | |
1376 | + move%.w %/d4,%/d2 | |
1377 | + move%.l %/d2,%1 | |
1378 | + add%.l %/d1,%/d0 | |
1379 | + move%.l %/d0,%0" \ | |
1380 | + : "=g" ((USItype) (xh)), \ | |
1381 | + "=g" ((USItype) (xl)) \ | |
1382 | + : "g" ((USItype) (a)), \ | |
1383 | + "g" ((USItype) (b)) \ | |
1384 | + : "d0", "d1", "d2", "d3", "d4") | |
1385 | +#define UMUL_TIME 100 | |
1386 | +#define UDIV_TIME 400 | |
1387 | +#endif /* not mcf5200 */ | |
1388 | + | |
1389 | +#if !defined (udiv_qrnnd) | |
1390 | +#define UDIV_NEEDS_NORMALIZATION 1 | |
1391 | +#define udiv_qrnnd __udiv_qrnnd_c | |
1392 | +#endif | |
1393 | + | |
1394 | +#define __BITS4 (SI_TYPE_SIZE / 4) | |
1395 | +#define __ll_B (1L << (SI_TYPE_SIZE / 2)) | |
1396 | +#define __ll_lowpart(t) ((USItype) (t) % __ll_B) | |
1397 | +#define __ll_highpart(t) ((USItype) (t) / __ll_B) | |
1398 | + | |
1399 | +#if !defined (count_leading_zeros) | |
1400 | +extern const UQItype __clz_tab[]; | |
1401 | +#define count_leading_zeros(count, x) \ | |
1402 | + do { \ | |
1403 | + USItype __xr = (x); \ | |
1404 | + USItype __a; \ | |
1405 | + \ | |
1406 | + if (SI_TYPE_SIZE <= 32) \ | |
1407 | + { \ | |
1408 | + __a = __xr < ((USItype)1<<2*__BITS4) \ | |
1409 | + ? (__xr < ((USItype)1<<__BITS4) ? 0 : __BITS4) \ | |
1410 | + : (__xr < ((USItype)1<<3*__BITS4) ? 2*__BITS4 : 3*__BITS4); \ | |
1411 | + } \ | |
1412 | + else \ | |
1413 | + { \ | |
1414 | + for (__a = SI_TYPE_SIZE - 8; __a > 0; __a -= 8) \ | |
1415 | + if (((__xr >> __a) & 0xff) != 0) \ | |
1416 | + break; \ | |
1417 | + } \ | |
1418 | + \ | |
1419 | + (count) = SI_TYPE_SIZE - (__clz_tab[__xr >> __a] + __a); \ | |
1420 | + } while (0) | |
1421 | +#endif | |
1422 | + | |
1423 | +#define __udiv_qrnnd_c(q, r, n1, n0, d) \ | |
1424 | + do { \ | |
1425 | + USItype __d1, __d0, __q1, __q0; \ | |
1426 | + USItype __r1, __r0, __m; \ | |
1427 | + __d1 = __ll_highpart (d); \ | |
1428 | + __d0 = __ll_lowpart (d); \ | |
1429 | + \ | |
1430 | + __r1 = (n1) % __d1; \ | |
1431 | + __q1 = (n1) / __d1; \ | |
1432 | + __m = (USItype) __q1 * __d0; \ | |
1433 | + __r1 = __r1 * __ll_B | __ll_highpart (n0); \ | |
1434 | + if (__r1 < __m) \ | |
1435 | + { \ | |
1436 | + __q1--, __r1 += (d); \ | |
1437 | + if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\ | |
1438 | + if (__r1 < __m) \ | |
1439 | + __q1--, __r1 += (d); \ | |
1440 | + } \ | |
1441 | + __r1 -= __m; \ | |
1442 | + \ | |
1443 | + __r0 = __r1 % __d1; \ | |
1444 | + __q0 = __r1 / __d1; \ | |
1445 | + __m = (USItype) __q0 * __d0; \ | |
1446 | + __r0 = __r0 * __ll_B | __ll_lowpart (n0); \ | |
1447 | + if (__r0 < __m) \ | |
1448 | + { \ | |
1449 | + __q0--, __r0 += (d); \ | |
1450 | + if (__r0 >= (d)) \ | |
1451 | + if (__r0 < __m) \ | |
1452 | + __q0--, __r0 += (d); \ | |
1453 | + } \ | |
1454 | + __r0 -= __m; \ | |
1455 | + \ | |
1456 | + (q) = (USItype) __q1 * __ll_B | __q0; \ | |
1457 | + (r) = __r0; \ | |
1458 | + } while (0) | |
1459 | + | |
1460 | +#if !defined (umul_ppmm) | |
1461 | +#define umul_ppmm(w1, w0, u, v) \ | |
1462 | + do { \ | |
1463 | + USItype __x0, __x1, __x2, __x3; \ | |
1464 | + USItype __ul, __vl, __uh, __vh; \ | |
1465 | + \ | |
1466 | + __ul = __ll_lowpart (u); \ | |
1467 | + __uh = __ll_highpart (u); \ | |
1468 | + __vl = __ll_lowpart (v); \ | |
1469 | + __vh = __ll_highpart (v); \ | |
1470 | + \ | |
1471 | + __x0 = (USItype) __ul * __vl; \ | |
1472 | + __x1 = (USItype) __ul * __vh; \ | |
1473 | + __x2 = (USItype) __uh * __vl; \ | |
1474 | + __x3 = (USItype) __uh * __vh; \ | |
1475 | + \ | |
1476 | + __x1 += __ll_highpart (__x0);/* this can't give carry */ \ | |
1477 | + __x1 += __x2; /* but this indeed can */ \ | |
1478 | + if (__x1 < __x2) /* did we get it? */ \ | |
1479 | + __x3 += __ll_B; /* yes, add it in the proper pos. */ \ | |
1480 | + \ | |
1481 | + (w1) = __x3 + __ll_highpart (__x1); \ | |
1482 | + (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0); \ | |
1483 | + } while (0) | |
1484 | +#endif | |
1485 | + | |
1486 | + | |
1487 | +static const UQItype __clz_tab[] = | |
1488 | +{ | |
1489 | + 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | |
1490 | + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, | |
1491 | + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, | |
1492 | + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, | |
1493 | + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, | |
1494 | + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, | |
1495 | + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, | |
1496 | + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, | |
1497 | +}; | |
1498 | + | |
1499 | +UDItype | |
1500 | +__udivmoddi4 (UDItype n, UDItype d, UDItype *rp) | |
1501 | +{ | |
1502 | + DIunion ww; | |
1503 | + DIunion nn, dd; | |
1504 | + DIunion rr; | |
1505 | + USItype d0, d1, n0, n1, n2; | |
1506 | + USItype q0, q1; | |
1507 | + USItype b, bm; | |
1508 | + | |
1509 | + nn.ll = n; | |
1510 | + dd.ll = d; | |
1511 | + | |
1512 | + d0 = dd.s.low; | |
1513 | + d1 = dd.s.high; | |
1514 | + n0 = nn.s.low; | |
1515 | + n1 = nn.s.high; | |
1516 | + | |
1517 | +#if !UDIV_NEEDS_NORMALIZATION | |
1518 | + if (d1 == 0) | |
1519 | + { | |
1520 | + if (d0 > n1) | |
1521 | + { | |
1522 | + /* 0q = nn / 0D */ | |
1523 | + | |
1524 | + udiv_qrnnd (q0, n0, n1, n0, d0); | |
1525 | + q1 = 0; | |
1526 | + | |
1527 | + /* Remainder in n0. */ | |
1528 | + } | |
1529 | + else | |
1530 | + { | |
1531 | + /* qq = NN / 0d */ | |
1532 | + | |
1533 | + if (d0 == 0) | |
1534 | + d0 = 1 / d0; /* Divide intentionally by zero. */ | |
1535 | + | |
1536 | + udiv_qrnnd (q1, n1, 0, n1, d0); | |
1537 | + udiv_qrnnd (q0, n0, n1, n0, d0); | |
1538 | + | |
1539 | + /* Remainder in n0. */ | |
1540 | + } | |
1541 | + | |
1542 | + if (rp != 0) | |
1543 | + { | |
1544 | + rr.s.low = n0; | |
1545 | + rr.s.high = 0; | |
1546 | + *rp = rr.ll; | |
1547 | + } | |
1548 | + } | |
1549 | + | |
1550 | +#else /* UDIV_NEEDS_NORMALIZATION */ | |
1551 | + | |
1552 | + if (d1 == 0) | |
1553 | + { | |
1554 | + if (d0 > n1) | |
1555 | + { | |
1556 | + /* 0q = nn / 0D */ | |
1557 | + | |
1558 | + count_leading_zeros (bm, d0); | |
1559 | + | |
1560 | + if (bm != 0) | |
1561 | + { | |
1562 | + /* Normalize, i.e. make the most significant bit of the | |
1563 | + denominator set. */ | |
1564 | + | |
1565 | + d0 = d0 << bm; | |
1566 | + n1 = (n1 << bm) | (n0 >> (SI_TYPE_SIZE - bm)); | |
1567 | + n0 = n0 << bm; | |
1568 | + } | |
1569 | + | |
1570 | + udiv_qrnnd (q0, n0, n1, n0, d0); | |
1571 | + q1 = 0; | |
1572 | + | |
1573 | + /* Remainder in n0 >> bm. */ | |
1574 | + } | |
1575 | + else | |
1576 | + { | |
1577 | + /* qq = NN / 0d */ | |
1578 | + | |
1579 | + if (d0 == 0) | |
1580 | + d0 = 1 / d0; /* Divide intentionally by zero. */ | |
1581 | + | |
1582 | + count_leading_zeros (bm, d0); | |
1583 | + | |
1584 | + if (bm == 0) | |
1585 | + { | |
1586 | + /* From (n1 >= d0) /\ (the most significant bit of d0 is set), | |
1587 | + conclude (the most significant bit of n1 is set) /\ (the | |
1588 | + leading quotient digit q1 = 1). | |
1589 | + | |
1590 | + This special case is necessary, not an optimization. | |
1591 | + (Shifts counts of SI_TYPE_SIZE are undefined.) */ | |
1592 | + | |
1593 | + n1 -= d0; | |
1594 | + q1 = 1; | |
1595 | + } | |
1596 | + else | |
1597 | + { | |
1598 | + /* Normalize. */ | |
1599 | + | |
1600 | + b = SI_TYPE_SIZE - bm; | |
1601 | + | |
1602 | + d0 = d0 << bm; | |
1603 | + n2 = n1 >> b; | |
1604 | + n1 = (n1 << bm) | (n0 >> b); | |
1605 | + n0 = n0 << bm; | |
1606 | + | |
1607 | + udiv_qrnnd (q1, n1, n2, n1, d0); | |
1608 | + } | |
1609 | + | |
1610 | + /* n1 != d0... */ | |
1611 | + | |
1612 | + udiv_qrnnd (q0, n0, n1, n0, d0); | |
1613 | + | |
1614 | + /* Remainder in n0 >> bm. */ | |
1615 | + } | |
1616 | + | |
1617 | + if (rp != 0) | |
1618 | + { | |
1619 | + rr.s.low = n0 >> bm; | |
1620 | + rr.s.high = 0; | |
1621 | + *rp = rr.ll; | |
1622 | + } | |
1623 | + } | |
1624 | +#endif /* UDIV_NEEDS_NORMALIZATION */ | |
1625 | + | |
1626 | + else | |
1627 | + { | |
1628 | + if (d1 > n1) | |
1629 | + { | |
1630 | + /* 00 = nn / DD */ | |
1631 | + | |
1632 | + q0 = 0; | |
1633 | + q1 = 0; | |
1634 | + | |
1635 | + /* Remainder in n1n0. */ | |
1636 | + if (rp != 0) | |
1637 | + { | |
1638 | + rr.s.low = n0; | |
1639 | + rr.s.high = n1; | |
1640 | + *rp = rr.ll; | |
1641 | + } | |
1642 | + } | |
1643 | + else | |
1644 | + { | |
1645 | + /* 0q = NN / dd */ | |
1646 | + | |
1647 | + count_leading_zeros (bm, d1); | |
1648 | + if (bm == 0) | |
1649 | + { | |
1650 | + /* From (n1 >= d1) /\ (the most significant bit of d1 is set), | |
1651 | + conclude (the most significant bit of n1 is set) /\ (the | |
1652 | + quotient digit q0 = 0 or 1). | |
1653 | + | |
1654 | + This special case is necessary, not an optimization. */ | |
1655 | + | |
1656 | + /* The condition on the next line takes advantage of that | |
1657 | + n1 >= d1 (true due to program flow). */ | |
1658 | + if (n1 > d1 || n0 >= d0) | |
1659 | + { | |
1660 | + q0 = 1; | |
1661 | + sub_ddmmss (n1, n0, n1, n0, d1, d0); | |
1662 | + } | |
1663 | + else | |
1664 | + q0 = 0; | |
1665 | + | |
1666 | + q1 = 0; | |
1667 | + | |
1668 | + if (rp != 0) | |
1669 | + { | |
1670 | + rr.s.low = n0; | |
1671 | + rr.s.high = n1; | |
1672 | + *rp = rr.ll; | |
1673 | + } | |
1674 | + } | |
1675 | + else | |
1676 | + { | |
1677 | + USItype m1, m0; | |
1678 | + /* Normalize. */ | |
1679 | + | |
1680 | + b = SI_TYPE_SIZE - bm; | |
1681 | + | |
1682 | + d1 = (d1 << bm) | (d0 >> b); | |
1683 | + d0 = d0 << bm; | |
1684 | + n2 = n1 >> b; | |
1685 | + n1 = (n1 << bm) | (n0 >> b); | |
1686 | + n0 = n0 << bm; | |
1687 | + | |
1688 | + udiv_qrnnd (q0, n1, n2, n1, d1); | |
1689 | + umul_ppmm (m1, m0, q0, d0); | |
1690 | + | |
1691 | + if (m1 > n1 || (m1 == n1 && m0 > n0)) | |
1692 | + { | |
1693 | + q0--; | |
1694 | + sub_ddmmss (m1, m0, m1, m0, d1, d0); | |
1695 | + } | |
1696 | + | |
1697 | + q1 = 0; | |
1698 | + | |
1699 | + /* Remainder in (n1n0 - m1m0) >> bm. */ | |
1700 | + if (rp != 0) | |
1701 | + { | |
1702 | + sub_ddmmss (n1, n0, n1, n0, m1, m0); | |
1703 | + rr.s.low = (n1 << b) | (n0 >> bm); | |
1704 | + rr.s.high = n1 >> bm; | |
1705 | + *rp = rr.ll; | |
1706 | + } | |
1707 | + } | |
1708 | + } | |
1709 | + } | |
1710 | + | |
1711 | + ww.s.low = q0; | |
1712 | + ww.s.high = q1; | |
1713 | + return ww.ll; | |
1714 | +} | |
1715 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/udivsi3.S linux-2.6.0-test8-uc0/arch/m68knommu/lib/udivsi3.S | |
1716 | --- linux-2.6.0-test8/arch/m68knommu/lib/udivsi3.S 2003-10-20 09:10:57.864637448 +1000 | |
1717 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/udivsi3.S 2003-10-20 09:11:53.784136392 +1000 | |
1718 | @@ -91,7 +91,7 @@ | |
1719 | .proc | |
1720 | .globl SYM (__udivsi3) | |
1721 | SYM (__udivsi3): | |
1722 | -#ifndef __mcf5200__ | |
1723 | +#if !(defined(__mcf5200__) || defined(__mcoldfire__)) | |
1724 | movel d2, sp@- | |
1725 | movel sp@(12), d1 /* d1 = divisor */ | |
1726 | movel sp@(8), d0 /* d0 = dividend */ | |
1727 | @@ -136,7 +136,7 @@ | |
1728 | L6: movel sp@+, d2 | |
1729 | rts | |
1730 | ||
1731 | -#else /* __mcf5200__ */ | |
1732 | +#else /* __mcf5200__ || __mcoldfire__ */ | |
1733 | ||
1734 | /* Coldfire implementation of non-restoring division algorithm from | |
1735 | Hennessy & Patterson, Appendix A. */ | |
1736 | @@ -158,5 +158,5 @@ | |
1737 | moveml sp@,d2-d4 | restore data registers | |
1738 | unlk a6 | and return | |
1739 | rts | |
1740 | -#endif /* __mcf5200__ */ | |
1741 | +#endif /* __mcf5200__ || __mcoldfire__ */ | |
1742 | ||
1743 | diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/umodsi3.S linux-2.6.0-test8-uc0/arch/m68knommu/lib/umodsi3.S | |
1744 | --- linux-2.6.0-test8/arch/m68knommu/lib/umodsi3.S 2003-10-20 09:10:57.831642464 +1000 | |
1745 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/umodsi3.S 2003-10-20 09:11:53.784136392 +1000 | |
1746 | @@ -98,7 +98,7 @@ | |
1747 | jbsr SYM (__udivsi3) | |
1748 | addql IMM (8), sp | |
1749 | movel sp@(8), d1 /* d1 = divisor */ | |
1750 | -#ifndef __mcf5200__ | |
1751 | +#if !(defined(__mcf5200__) || defined(__mcoldfire__)) | |
1752 | movel d1, sp@- | |
1753 | movel d0, sp@- | |
1754 | jbsr SYM (__mulsi3) /* d0 = (a/b)*b */ | |
1755 | diff -Naur linux-2.6.0-test8/arch/m68knommu/Makefile linux-2.6.0-test8-uc0/arch/m68knommu/Makefile | |
1756 | --- linux-2.6.0-test8/arch/m68knommu/Makefile 2003-10-20 09:10:57.875635776 +1000 | |
1757 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/Makefile 2003-10-20 09:11:53.690150680 +1000 | |
1758 | @@ -81,7 +81,7 @@ | |
1759 | ||
1760 | CFLAGS += $(cflags-y) | |
1761 | CFLAGS += -fno-builtin | |
1762 | -CFLAGS += -O2 -g | |
1763 | +CFLAGS += -Os -g | |
1764 | CFLAGS += -D__linux__ | |
1765 | CFLAGS += -DUTS_SYSNAME=\"uClinux\" | |
1766 | ||
1767 | diff -Naur linux-2.6.0-test8/arch/m68knommu/mm/fault.c linux-2.6.0-test8-uc0/arch/m68knommu/mm/fault.c | |
1768 | --- linux-2.6.0-test8/arch/m68knommu/mm/fault.c 2003-10-20 09:10:57.866637144 +1000 | |
1769 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/mm/fault.c 2003-10-20 09:11:55.292907024 +1000 | |
1770 | @@ -36,7 +36,7 @@ | |
1771 | unsigned long error_code) | |
1772 | { | |
1773 | #ifdef DEBUG | |
1774 | - printk ("regs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld\n", | |
1775 | + printk (KERN_DEBUG "regs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld\n", | |
1776 | regs->sr, regs->pc, address, error_code); | |
1777 | #endif | |
1778 | ||
1779 | @@ -48,7 +48,7 @@ | |
1780 | printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference"); | |
1781 | } else | |
1782 | printk(KERN_ALERT "Unable to handle kernel access"); | |
1783 | - printk(" at virtual address %08lx\n",address); | |
1784 | + printk(KERN_ALERT " at virtual address %08lx\n",address); | |
1785 | die_if_kernel("Oops", regs, error_code); | |
1786 | do_exit(SIGKILL); | |
1787 | ||
1788 | diff -Naur linux-2.6.0-test8/arch/m68knommu/mm/init.c linux-2.6.0-test8-uc0/arch/m68knommu/mm/init.c | |
1789 | --- linux-2.6.0-test8/arch/m68knommu/mm/init.c 2003-10-20 09:10:57.874635928 +1000 | |
1790 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/mm/init.c 2003-10-20 09:11:55.292907024 +1000 | |
1791 | @@ -72,7 +72,7 @@ | |
1792 | int free = 0, total = 0, reserved = 0, shared = 0; | |
1793 | int cached = 0; | |
1794 | ||
1795 | - printk("\nMem-info:\n"); | |
1796 | + printk(KERN_INFO "\nMem-info:\n"); | |
1797 | show_free_areas(); | |
1798 | i = max_mapnr; | |
1799 | while (i-- > 0) { | |
1800 | @@ -86,11 +86,11 @@ | |
1801 | else | |
1802 | shared += page_count(mem_map+i) - 1; | |
1803 | } | |
1804 | - printk("%d pages of RAM\n",total); | |
1805 | - printk("%d free pages\n",free); | |
1806 | - printk("%d reserved pages\n",reserved); | |
1807 | - printk("%d pages shared\n",shared); | |
1808 | - printk("%d pages swap cached\n",cached); | |
1809 | + printk(KERN_INFO "%d pages of RAM\n",total); | |
1810 | + printk(KERN_INFO "%d free pages\n",free); | |
1811 | + printk(KERN_INFO "%d reserved pages\n",reserved); | |
1812 | + printk(KERN_INFO "%d pages shared\n",shared); | |
1813 | + printk(KERN_INFO "%d pages swap cached\n",cached); | |
1814 | } | |
1815 | ||
1816 | extern unsigned long memory_start; | |
1817 | @@ -114,7 +114,7 @@ | |
1818 | unsigned long end_mem = memory_end & PAGE_MASK; | |
1819 | ||
1820 | #ifdef DEBUG | |
1821 | - printk ("start_mem is %#lx\nvirtual_end is %#lx\n", | |
1822 | + printk (KERN_DEBUG "start_mem is %#lx\nvirtual_end is %#lx\n", | |
1823 | start_mem, end_mem); | |
1824 | #endif | |
1825 | ||
1826 | @@ -133,9 +133,9 @@ | |
1827 | set_fs (USER_DS); | |
1828 | ||
1829 | #ifdef DEBUG | |
1830 | - printk ("before free_area_init\n"); | |
1831 | + printk (KERN_DEBUG "before free_area_init\n"); | |
1832 | ||
1833 | - printk ("free_area_init -> start_mem is %#lx\nvirtual_end is %#lx\n", | |
1834 | + printk (KERN_DEBUG "free_area_init -> start_mem is %#lx\nvirtual_end is %#lx\n", | |
1835 | start_mem, end_mem); | |
1836 | #endif | |
1837 | ||
1838 | @@ -162,7 +162,7 @@ | |
1839 | unsigned long end_mem = memory_end; /* DAVIDM - this must not include kernel stack at top */ | |
1840 | ||
1841 | #ifdef DEBUG | |
1842 | - printk("Mem_init: start=%lx, end=%lx\n", start_mem, end_mem); | |
1843 | + printk(KERN_DEBUG "Mem_init: start=%lx, end=%lx\n", start_mem, end_mem); | |
1844 | #endif | |
1845 | ||
1846 | end_mem &= PAGE_MASK; | |
1847 | @@ -179,7 +179,7 @@ | |
1848 | initk = (&__init_begin - &__init_end) >> 10; | |
1849 | ||
1850 | tmp = nr_free_pages() << PAGE_SHIFT; | |
1851 | - printk("Memory available: %luk/%luk RAM, %luk/%luk ROM (%dk kernel code, %dk data)\n", | |
1852 | + printk(KERN_INFO "Memory available: %luk/%luk RAM, %luk/%luk ROM (%dk kernel code, %dk data)\n", | |
1853 | tmp >> 10, | |
1854 | len >> 10, | |
1855 | (rom_length > 0) ? ((rom_length >> 10) - codek) : 0, | |
1856 | @@ -201,7 +201,7 @@ | |
1857 | totalram_pages++; | |
1858 | pages++; | |
1859 | } | |
1860 | - printk ("Freeing initrd memory: %dk freed\n", pages); | |
1861 | + printk (KERN_NOTICE "Freeing initrd memory: %dk freed\n", pages); | |
1862 | } | |
1863 | #endif | |
1864 | ||
1865 | @@ -223,7 +223,7 @@ | |
1866 | free_page(addr); | |
1867 | totalram_pages++; | |
1868 | } | |
1869 | - printk("Freeing unused kernel memory: %ldk freed (0x%x - 0x%x)\n", | |
1870 | + printk(KERN_NOTICE "Freeing unused kernel memory: %ldk freed (0x%x - 0x%x)\n", | |
1871 | (addr - PAGE_ALIGN((long) &__init_begin)) >> 10, | |
1872 | (int)(PAGE_ALIGN((unsigned long)(&__init_begin))), | |
1873 | (int)(addr - PAGE_SIZE)); | |
1874 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5206/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5206/config.c | |
1875 | --- linux-2.6.0-test8/arch/m68knommu/platform/5206/config.c 2003-10-20 09:10:57.718659640 +1000 | |
1876 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5206/config.c 2003-10-20 09:11:55.607859144 +1000 | |
1877 | @@ -42,6 +42,8 @@ | |
1878 | MCF_MBAR + MCFDMA_BASE1, | |
1879 | }; | |
1880 | ||
1881 | +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS]; | |
1882 | + | |
1883 | /***************************************************************************/ | |
1884 | ||
1885 | void mcf_autovector(unsigned int vec) | |
1886 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5206e/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5206e/config.c | |
1887 | --- linux-2.6.0-test8/arch/m68knommu/platform/5206e/config.c 2003-10-20 09:10:57.716659944 +1000 | |
1888 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5206e/config.c 2003-10-20 09:11:55.632855344 +1000 | |
1889 | @@ -42,6 +42,8 @@ | |
1890 | MCF_MBAR + MCFDMA_BASE1, | |
1891 | }; | |
1892 | ||
1893 | +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS]; | |
1894 | + | |
1895 | /***************************************************************************/ | |
1896 | ||
1897 | void mcf_autovector(unsigned int vec) | |
1898 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5249/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5249/config.c | |
1899 | --- linux-2.6.0-test8/arch/m68knommu/platform/5249/config.c 2003-10-20 09:10:57.717659792 +1000 | |
1900 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5249/config.c 2003-10-20 09:11:55.616857776 +1000 | |
1901 | @@ -43,6 +43,8 @@ | |
1902 | MCF_MBAR + MCFDMA_BASE3, | |
1903 | }; | |
1904 | ||
1905 | +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS]; | |
1906 | + | |
1907 | /***************************************************************************/ | |
1908 | ||
1909 | void mcf_autovector(unsigned int vec) | |
1910 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5272/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5272/config.c | |
1911 | --- linux-2.6.0-test8/arch/m68knommu/platform/5272/config.c 2003-10-20 09:10:57.715660096 +1000 | |
1912 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5272/config.c 2003-10-20 09:11:55.691846376 +1000 | |
1913 | @@ -46,6 +46,8 @@ | |
1914 | MCF_MBAR + MCFDMA_BASE0, | |
1915 | }; | |
1916 | ||
1917 | +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS]; | |
1918 | + | |
1919 | /***************************************************************************/ | |
1920 | ||
1921 | void mcf_disableall(void) | |
1922 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5282/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5282/config.c | |
1923 | --- linux-2.6.0-test8/arch/m68knommu/platform/5282/config.c 2003-10-20 09:10:57.664667848 +1000 | |
1924 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5282/config.c 2003-10-20 09:11:55.787831784 +1000 | |
1925 | @@ -17,6 +17,7 @@ | |
1926 | #include <linux/sched.h> | |
1927 | #include <linux/param.h> | |
1928 | #include <linux/init.h> | |
1929 | +#include <linux/interrupt.h> | |
1930 | #include <asm/dma.h> | |
1931 | #include <asm/traps.h> | |
1932 | #include <asm/machdep.h> | |
1933 | @@ -27,7 +28,7 @@ | |
1934 | /***************************************************************************/ | |
1935 | ||
1936 | void coldfire_pit_tick(void); | |
1937 | -void coldfire_pit_init(void (*handler)(int, void *, struct pt_regs *)); | |
1938 | +void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | |
1939 | unsigned long coldfire_pit_offset(void); | |
1940 | void coldfire_trap_init(void); | |
1941 | void coldfire_reset(void); | |
1942 | @@ -41,6 +42,8 @@ | |
1943 | MCF_MBAR + MCFDMA_BASE0, | |
1944 | }; | |
1945 | ||
1946 | +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS]; | |
1947 | + | |
1948 | /***************************************************************************/ | |
1949 | ||
1950 | void mcf_disableall(void) | |
1951 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5307/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/config.c | |
1952 | --- linux-2.6.0-test8/arch/m68knommu/platform/5307/config.c 2003-10-20 09:10:57.694663288 +1000 | |
1953 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/config.c 2003-10-20 09:11:55.814827680 +1000 | |
1954 | @@ -14,6 +14,7 @@ | |
1955 | #include <linux/sched.h> | |
1956 | #include <linux/param.h> | |
1957 | #include <linux/init.h> | |
1958 | +#include <linux/interrupt.h> | |
1959 | #include <asm/irq.h> | |
1960 | #include <asm/dma.h> | |
1961 | #include <asm/traps.h> | |
1962 | @@ -28,7 +29,7 @@ | |
1963 | /***************************************************************************/ | |
1964 | ||
1965 | void coldfire_tick(void); | |
1966 | -void coldfire_timer_init(void (*handler)(int, void *, struct pt_regs *)); | |
1967 | +void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | |
1968 | unsigned long coldfire_timer_offset(void); | |
1969 | void coldfire_trap_init(void); | |
1970 | void coldfire_reset(void); | |
1971 | @@ -49,6 +50,8 @@ | |
1972 | MCF_MBAR + MCFDMA_BASE3, | |
1973 | }; | |
1974 | ||
1975 | +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS]; | |
1976 | + | |
1977 | /***************************************************************************/ | |
1978 | ||
1979 | void mcf_autovector(unsigned int vec) | |
1980 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5307/entry.S linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/entry.S | |
1981 | --- linux-2.6.0-test8/arch/m68knommu/platform/5307/entry.S 2003-10-20 09:10:57.714660248 +1000 | |
1982 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/entry.S 2003-10-20 09:11:55.814827680 +1000 | |
1983 | @@ -182,7 +182,7 @@ | |
1984 | movew %sp@(LFORMATVEC),%d0 /* put exception # in d0 */ | |
1985 | andl #0x03fc,%d0 /* mask out vector only */ | |
1986 | ||
1987 | - leal kstat__per_cpu+STAT_IRQ,%a0 | |
1988 | + leal per_cpu__kstat+STAT_IRQ,%a0 | |
1989 | addql #1,%a0@(%d0) | |
1990 | ||
1991 | lsrl #2,%d0 /* calculate real vector # */ | |
1992 | @@ -213,7 +213,7 @@ | |
1993 | movew %sp@(LFORMATVEC),%d0 | |
1994 | andl #0x03fc,%d0 /* mask out vector only */ | |
1995 | ||
1996 | - leal kstat__per_cpu+STAT_IRQ,%a0 | |
1997 | + leal per_cpu__kstat+STAT_IRQ,%a0 | |
1998 | addql #1,%a0@(%d0) | |
1999 | ||
2000 | movel %sp,%sp@- /* push regs arg onto stack */ | |
2001 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5307/ints.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/ints.c | |
2002 | --- linux-2.6.0-test8/arch/m68knommu/platform/5307/ints.c 2003-10-20 09:10:57.694663288 +1000 | |
2003 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/ints.c 2003-10-20 09:11:55.819826920 +1000 | |
2004 | @@ -47,7 +47,7 @@ | |
2005 | static irqreturn_t default_irq_handler(int irq, void *ptr, struct pt_regs *regs) | |
2006 | { | |
2007 | #if 1 | |
2008 | - printk("%s(%d): default irq handler vec=%d [0x%x]\n", | |
2009 | + printk(KERN_INFO "%s(%d): default irq handler vec=%d [0x%x]\n", | |
2010 | __FILE__, __LINE__, irq, irq); | |
2011 | #endif | |
2012 | return(IRQ_HANDLED); | |
2013 | @@ -94,7 +94,7 @@ | |
2014 | if (!node->handler) | |
2015 | return node; | |
2016 | ||
2017 | - printk("new_irq_node: out of nodes\n"); | |
2018 | + printk(KERN_INFO "new_irq_node: out of nodes\n"); | |
2019 | return NULL; | |
2020 | } | |
2021 | ||
2022 | @@ -106,19 +106,19 @@ | |
2023 | void *dev_id) | |
2024 | { | |
2025 | if (irq < 0 || irq >= NR_IRQS) { | |
2026 | - printk("%s: Incorrect IRQ %d from %s\n", __FUNCTION__, | |
2027 | + printk(KERN_WARNING "%s: Incorrect IRQ %d from %s\n", __FUNCTION__, | |
2028 | irq, devname); | |
2029 | return -ENXIO; | |
2030 | } | |
2031 | ||
2032 | if (!(irq_list[irq].flags & IRQ_FLG_STD)) { | |
2033 | if (irq_list[irq].flags & IRQ_FLG_LOCK) { | |
2034 | - printk("%s: IRQ %d from %s is not replaceable\n", | |
2035 | + printk(KERN_WARNING "%s: IRQ %d from %s is not replaceable\n", | |
2036 | __FUNCTION__, irq, irq_list[irq].devname); | |
2037 | return -EBUSY; | |
2038 | } | |
2039 | if (flags & IRQ_FLG_REPLACE) { | |
2040 | - printk("%s: %s can't replace IRQ %d from %s\n", | |
2041 | + printk(KERN_WARNING "%s: %s can't replace IRQ %d from %s\n", | |
2042 | __FUNCTION__, devname, irq, irq_list[irq].devname); | |
2043 | return -EBUSY; | |
2044 | } | |
2045 | @@ -142,12 +142,12 @@ | |
2046 | void free_irq(unsigned int irq, void *dev_id) | |
2047 | { | |
2048 | if (irq >= NR_IRQS) { | |
2049 | - printk("%s: Incorrect IRQ %d\n", __FUNCTION__, irq); | |
2050 | + printk(KERN_WARNING "%s: Incorrect IRQ %d\n", __FUNCTION__, irq); | |
2051 | return; | |
2052 | } | |
2053 | ||
2054 | if (irq_list[irq].dev_id != dev_id) | |
2055 | - printk("%s: Removing probably wrong IRQ %d from %s\n", | |
2056 | + printk(KERN_WARNING "%s: Removing probably wrong IRQ %d from %s\n", | |
2057 | __FUNCTION__, irq, irq_list[irq].devname); | |
2058 | ||
2059 | if (irq_list[irq].flags & IRQ_FLG_FAST) { | |
2060 | @@ -173,7 +173,7 @@ | |
2061 | unsigned long flags, const char *devname, void *dev_id) | |
2062 | { | |
2063 | if (irq > IRQ7) { | |
2064 | - printk("%s: Incorrect IRQ %d from %s\n", | |
2065 | + printk(KERN_WARNING "%s: Incorrect IRQ %d from %s\n", | |
2066 | __FUNCTION__, irq, devname); | |
2067 | return -ENXIO; | |
2068 | } | |
2069 | @@ -181,12 +181,12 @@ | |
2070 | #if 0 | |
2071 | if (!(irq_list[irq].flags & IRQ_FLG_STD)) { | |
2072 | if (irq_list[irq].flags & IRQ_FLG_LOCK) { | |
2073 | - printk("%s: IRQ %d from %s is not replaceable\n", | |
2074 | + printk(KERN_WARNING "%s: IRQ %d from %s is not replaceable\n", | |
2075 | __FUNCTION__, irq, irq_list[irq].devname); | |
2076 | return -EBUSY; | |
2077 | } | |
2078 | if (!(flags & IRQ_FLG_REPLACE)) { | |
2079 | - printk("%s: %s can't replace IRQ %d from %s\n", | |
2080 | + printk(KERN_WARNING "%s: %s can't replace IRQ %d from %s\n", | |
2081 | __FUNCTION__, devname, irq, irq_list[irq].devname); | |
2082 | return -EBUSY; | |
2083 | } | |
2084 | @@ -203,12 +203,12 @@ | |
2085 | void sys_free_irq(unsigned int irq, void *dev_id) | |
2086 | { | |
2087 | if (irq > IRQ7) { | |
2088 | - printk("%s: Incorrect IRQ %d\n", __FUNCTION__, irq); | |
2089 | + printk(KERN_WARNING "%s: Incorrect IRQ %d\n", __FUNCTION__, irq); | |
2090 | return; | |
2091 | } | |
2092 | ||
2093 | if (irq_list[irq].dev_id != dev_id) | |
2094 | - printk("%s: Removing probably wrong IRQ %d from %s\n", | |
2095 | + printk(KERN_WARNING "%s: Removing probably wrong IRQ %d from %s\n", | |
2096 | __FUNCTION__, irq, irq_list[irq].devname); | |
2097 | ||
2098 | irq_list[irq].handler = (*mach_default_handler)[irq]; | |
2099 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5307/timers.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/timers.c | |
2100 | --- linux-2.6.0-test8/arch/m68knommu/platform/5307/timers.c 2003-10-20 09:10:57.714660248 +1000 | |
2101 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/timers.c 2003-10-20 09:11:55.839823880 +1000 | |
2102 | @@ -127,7 +127,7 @@ | |
2103 | ||
2104 | void coldfire_profile_init(void) | |
2105 | { | |
2106 | - printk("PROFILE: lodging TIMER2 @ %dHz as profile timer\n", PROFILEHZ); | |
2107 | + printk(KERN_INFO "PROFILE: lodging TIMER2 @ %dHz as profile timer\n", PROFILEHZ); | |
2108 | ||
2109 | /* Set up TIMER 2 as high speed profile clock */ | |
2110 | mcf_proftp = (volatile struct mcftimer *) (MCF_MBAR + MCFTIMER_BASE2); | |
2111 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5307/vectors.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/vectors.c | |
2112 | --- linux-2.6.0-test8/arch/m68knommu/platform/5307/vectors.c 2003-10-20 09:10:57.713660400 +1000 | |
2113 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/vectors.c 2003-10-20 09:11:55.840823728 +1000 | |
2114 | @@ -32,7 +32,7 @@ | |
2115 | asmlinkage void dbginterrupt_c(struct frame *fp) | |
2116 | { | |
2117 | extern void dump(struct pt_regs *fp); | |
2118 | - printk("%s(%d): BUS ERROR TRAP\n", __FILE__, __LINE__); | |
2119 | + printk(KERN_DEBUG "%s(%d): BUS ERROR TRAP\n", __FILE__, __LINE__); | |
2120 | dump((struct pt_regs *) fp); | |
2121 | asm("halt"); | |
2122 | } | |
2123 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5407/CLEOPATRA/crt0_ram.S linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/CLEOPATRA/crt0_ram.S | |
2124 | --- linux-2.6.0-test8/arch/m68knommu/platform/5407/CLEOPATRA/crt0_ram.S 2003-10-20 09:10:57.661668304 +1000 | |
2125 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/CLEOPATRA/crt0_ram.S 2003-10-20 09:11:56.081787096 +1000 | |
2126 | @@ -124,6 +124,7 @@ | |
2127 | nop | |
2128 | ||
2129 | ||
2130 | +#ifdef CONFIG_ROMFS_FS | |
2131 | /* | |
2132 | * Move ROM filesystem above bss :-) | |
2133 | */ | |
2134 | @@ -145,6 +146,12 @@ | |
2135 | cmp.l %a0, %a2 /* Check if at end */ | |
2136 | bne _copy_romfs | |
2137 | ||
2138 | +#else /* CONFIG_ROMFS_FS */ | |
2139 | + lea.l _ebss, %a1 | |
2140 | + move.l %a1, _ramstart | |
2141 | +#endif /* CONFIG_ROMFS_FS */ | |
2142 | + | |
2143 | + | |
2144 | /* | |
2145 | * Zero out the bss region. | |
2146 | */ | |
2147 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5407/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/config.c | |
2148 | --- linux-2.6.0-test8/arch/m68knommu/platform/5407/config.c 2003-10-20 09:10:57.623674080 +1000 | |
2149 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/config.c 2003-10-20 09:11:56.107783144 +1000 | |
2150 | @@ -14,6 +14,7 @@ | |
2151 | #include <linux/sched.h> | |
2152 | #include <linux/param.h> | |
2153 | #include <linux/init.h> | |
2154 | +#include <linux/interrupt.h> | |
2155 | #include <asm/irq.h> | |
2156 | #include <asm/dma.h> | |
2157 | #include <asm/traps.h> | |
2158 | @@ -27,7 +28,7 @@ | |
2159 | /***************************************************************************/ | |
2160 | ||
2161 | void coldfire_tick(void); | |
2162 | -void coldfire_timer_init(void (*handler)(int, void *, struct pt_regs *)); | |
2163 | +void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | |
2164 | unsigned long coldfire_timer_offset(void); | |
2165 | void coldfire_trap_init(void); | |
2166 | void coldfire_reset(void); | |
2167 | @@ -48,6 +49,8 @@ | |
2168 | MCF_MBAR + MCFDMA_BASE3, | |
2169 | }; | |
2170 | ||
2171 | +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS]; | |
2172 | + | |
2173 | /***************************************************************************/ | |
2174 | ||
2175 | void mcf_autovector(unsigned int vec) | |
2176 | @@ -100,7 +103,13 @@ | |
2177 | void config_BSP(char *commandp, int size) | |
2178 | { | |
2179 | mcf_setimr(MCFSIM_IMR_MASKALL); | |
2180 | + | |
2181 | +#if defined(CONFIG_BOOTPARAM) | |
2182 | + strncpy(commandp, CONFIG_BOOTPARAM_STRING, size); | |
2183 | + commandp[size-1] = 0; | |
2184 | +#else | |
2185 | memset(commandp, 0, size); | |
2186 | +#endif | |
2187 | ||
2188 | #if defined(CONFIG_CLEOPATRA) | |
2189 | /* Different timer setup - to prevent device clash */ | |
2190 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5407/MOTOROLA/crt0_ram.S linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/MOTOROLA/crt0_ram.S | |
2191 | --- linux-2.6.0-test8/arch/m68knommu/platform/5407/MOTOROLA/crt0_ram.S 2003-10-20 09:10:57.652669672 +1000 | |
2192 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/MOTOROLA/crt0_ram.S 2003-10-20 09:11:56.107783144 +1000 | |
2193 | @@ -99,10 +99,12 @@ | |
2194 | movec %d0, %ACR3 | |
2195 | ||
2196 | /* Enable cache */ | |
2197 | - move.l #0xa4098400, %d0 /* Write buffer, dflt precise */ | |
2198 | + move.l #0xb6088400, %d0 /* Enable caches */ | |
2199 | movec %d0,%CACR | |
2200 | nop | |
2201 | ||
2202 | + | |
2203 | +#ifdef CONFIG_ROMFS_FS | |
2204 | /* | |
2205 | * Move ROM filesystem above bss :-) | |
2206 | */ | |
2207 | @@ -124,6 +126,12 @@ | |
2208 | cmp.l %a0, %a2 /* Check if at end */ | |
2209 | bne _copy_romfs | |
2210 | ||
2211 | +#else /* CONFIG_ROMFS_FS */ | |
2212 | + lea.l _ebss, %a1 | |
2213 | + move.l %a1, _ramstart | |
2214 | +#endif /* CONFIG_ROMFS_FS */ | |
2215 | + | |
2216 | + | |
2217 | /* | |
2218 | * Zero out the bss region. | |
2219 | */ | |
2220 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68328/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68328/config.c | |
2221 | --- linux-2.6.0-test8/arch/m68knommu/platform/68328/config.c 2003-10-20 09:10:57.693663440 +1000 | |
2222 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68328/config.c 2003-10-20 09:11:56.164774480 +1000 | |
2223 | @@ -19,6 +19,7 @@ | |
2224 | #include <linux/mm.h> | |
2225 | #include <linux/tty.h> | |
2226 | #include <linux/console.h> | |
2227 | +#include <linux/interrupt.h> | |
2228 | #include <asm/current.h> | |
2229 | ||
2230 | #include <asm/setup.h> | |
2231 | @@ -29,7 +30,7 @@ | |
2232 | #include <asm/MC68328.h> | |
2233 | ||
2234 | ||
2235 | -void BSP_sched_init(void (*timer_routine)(int, void *, struct pt_regs *)) | |
2236 | +void BSP_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) | |
2237 | { | |
2238 | ||
2239 | #ifdef CONFIG_XCOPILOT_BUGS | |
2240 | @@ -111,9 +112,9 @@ | |
2241 | ||
2242 | void config_BSP(char *command, int len) | |
2243 | { | |
2244 | - printk("\n68328 support D. Jeff Dionne <jeff@uclinux.org>\n"); | |
2245 | - printk("68328 support Kenneth Albanowski <kjahds@kjshds.com>\n"); | |
2246 | - printk("68328/Pilot support Bernhard Kuhn <kuhn@lpr.e-technik.tu-muenchen.de>\n"); | |
2247 | + printk(KERN_INFO "\n68328 support D. Jeff Dionne <jeff@uclinux.org>\n"); | |
2248 | + printk(KERN_INFO "68328 support Kenneth Albanowski <kjahds@kjshds.com>\n"); | |
2249 | + printk(KERN_INFO "68328/Pilot support Bernhard Kuhn <kuhn@lpr.e-technik.tu-muenchen.de>\n"); | |
2250 | ||
2251 | mach_sched_init = BSP_sched_init; | |
2252 | mach_tick = BSP_tick; | |
2253 | @@ -122,4 +123,5 @@ | |
2254 | mach_hwclk = NULL; | |
2255 | mach_set_clock_mmss = NULL; | |
2256 | mach_reset = BSP_reset; | |
2257 | + *command = '\0'; | |
2258 | } | |
2259 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68328/ints.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68328/ints.c | |
2260 | --- linux-2.6.0-test8/arch/m68knommu/platform/68328/ints.c 2003-10-20 09:10:57.690663896 +1000 | |
2261 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68328/ints.c 2003-10-20 09:11:56.184771440 +1000 | |
2262 | @@ -63,15 +63,15 @@ | |
2263 | asmlinkage void trap45(void); | |
2264 | asmlinkage void trap46(void); | |
2265 | asmlinkage void trap47(void); | |
2266 | -asmlinkage void bad_interrupt(int, void *, struct pt_regs *); | |
2267 | -asmlinkage void inthandler(void); | |
2268 | -asmlinkage void inthandler1(void); | |
2269 | -asmlinkage void inthandler2(void); | |
2270 | -asmlinkage void inthandler3(void); | |
2271 | -asmlinkage void inthandler4(void); | |
2272 | -asmlinkage void inthandler5(void); | |
2273 | -asmlinkage void inthandler6(void); | |
2274 | -asmlinkage void inthandler7(void); | |
2275 | +asmlinkage irqreturn_t bad_interrupt(int, void *, struct pt_regs *); | |
2276 | +asmlinkage irqreturn_t inthandler(void); | |
2277 | +asmlinkage irqreturn_t inthandler1(void); | |
2278 | +asmlinkage irqreturn_t inthandler2(void); | |
2279 | +asmlinkage irqreturn_t inthandler3(void); | |
2280 | +asmlinkage irqreturn_t inthandler4(void); | |
2281 | +asmlinkage irqreturn_t inthandler5(void); | |
2282 | +asmlinkage irqreturn_t inthandler6(void); | |
2283 | +asmlinkage irqreturn_t inthandler7(void); | |
2284 | ||
2285 | extern e_vector *_ramvec; | |
2286 | ||
2287 | @@ -116,17 +116,17 @@ | |
2288 | ||
2289 | /* set up the vectors */ | |
2290 | for (i = 72; i < 256; ++i) | |
2291 | - _ramvec[i] = (e_vector)bad_interrupt; | |
2292 | + _ramvec[i] = (e_vector) bad_interrupt; | |
2293 | ||
2294 | _ramvec[32] = system_call; | |
2295 | ||
2296 | - _ramvec[65] = inthandler1; | |
2297 | - _ramvec[66] = inthandler2; | |
2298 | - _ramvec[67] = inthandler3; | |
2299 | - _ramvec[68] = inthandler4; | |
2300 | - _ramvec[69] = inthandler5; | |
2301 | - _ramvec[70] = inthandler6; | |
2302 | - _ramvec[71] = inthandler7; | |
2303 | + _ramvec[65] = (e_vector) inthandler1; | |
2304 | + _ramvec[66] = (e_vector) inthandler2; | |
2305 | + _ramvec[67] = (e_vector) inthandler3; | |
2306 | + _ramvec[68] = (e_vector) inthandler4; | |
2307 | + _ramvec[69] = (e_vector) inthandler5; | |
2308 | + _ramvec[70] = (e_vector) inthandler6; | |
2309 | + _ramvec[71] = (e_vector) inthandler7; | |
2310 | ||
2311 | IVR = 0x40; /* Set DragonBall IVR (interrupt base) to 64 */ | |
2312 | ||
2313 | @@ -142,22 +142,26 @@ | |
2314 | IMR = ~0; | |
2315 | } | |
2316 | ||
2317 | -int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *), | |
2318 | - unsigned long flags, const char *devname, void *dev_id) | |
2319 | +int request_irq( | |
2320 | + unsigned int irq, | |
2321 | + irqreturn_t (*handler)(int, void *, struct pt_regs *), | |
2322 | + unsigned long flags, | |
2323 | + const char *devname, | |
2324 | + void *dev_id) | |
2325 | { | |
2326 | if (irq >= NR_IRQS) { | |
2327 | - printk ("%s: Unknown IRQ %d from %s\n", __FUNCTION__, irq, devname); | |
2328 | + printk (KERN_ERR "%s: Unknown IRQ %d from %s\n", __FUNCTION__, irq, devname); | |
2329 | return -ENXIO; | |
2330 | } | |
2331 | ||
2332 | if (!(int_irq_list[irq].flags & IRQ_FLG_STD)) { | |
2333 | if (int_irq_list[irq].flags & IRQ_FLG_LOCK) { | |
2334 | - printk("%s: IRQ %d from %s is not replaceable\n", | |
2335 | + printk(KERN_ERR "%s: IRQ %d from %s is not replaceable\n", | |
2336 | __FUNCTION__, irq, int_irq_list[irq].devname); | |
2337 | return -EBUSY; | |
2338 | } | |
2339 | if (flags & IRQ_FLG_REPLACE) { | |
2340 | - printk("%s: %s can't replace IRQ %d from %s\n", | |
2341 | + printk(KERN_ERR "%s: %s can't replace IRQ %d from %s\n", | |
2342 | __FUNCTION__, devname, irq, int_irq_list[irq].devname); | |
2343 | return -EBUSY; | |
2344 | } | |
2345 | @@ -178,12 +182,12 @@ | |
2346 | void free_irq(unsigned int irq, void *dev_id) | |
2347 | { | |
2348 | if (irq >= NR_IRQS) { | |
2349 | - printk ("%s: Unknown IRQ %d\n", __FUNCTION__, irq); | |
2350 | + printk (KERN_ERR "%s: Unknown IRQ %d\n", __FUNCTION__, irq); | |
2351 | return; | |
2352 | } | |
2353 | ||
2354 | if (int_irq_list[irq].dev_id != dev_id) | |
2355 | - printk("%s: removing probably wrong IRQ %d from %s\n", | |
2356 | + printk(KERN_INFO "%s: removing probably wrong IRQ %d from %s\n", | |
2357 | __FUNCTION__, irq, int_irq_list[irq].devname); | |
2358 | ||
2359 | int_irq_list[irq].handler = bad_interrupt; | |
2360 | @@ -278,7 +282,7 @@ | |
2361 | if (int_irq_list[irq].handler) { | |
2362 | int_irq_list[irq].handler(irq, int_irq_list[irq].dev_id, fp); | |
2363 | } else { | |
2364 | - printk("unregistered interrupt %d!\nTurning it off in the IMR...\n", irq); | |
2365 | + printk(KERN_ERR "unregistered interrupt %d!\nTurning it off in the IMR...\n", irq); | |
2366 | IMR |= mask; | |
2367 | } | |
2368 | pend &= ~mask; | |
2369 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68360/commproc.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/commproc.c | |
2370 | --- linux-2.6.0-test8/arch/m68knommu/platform/68360/commproc.c 2003-10-20 09:10:57.562683352 +1000 | |
2371 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/commproc.c 2003-10-20 09:11:56.192770224 +1000 | |
2372 | @@ -213,7 +213,7 @@ | |
2373 | request_irq(vec, handler, IRQ_FLG_LOCK, "timer", dev_id); | |
2374 | ||
2375 | /* if (cpm_vecs[vec].handler != 0) */ | |
2376 | -/* printk("CPM interrupt %x replacing %x\n", */ | |
2377 | +/* printk(KERN_INFO "CPM interrupt %x replacing %x\n", */ | |
2378 | /* (uint)handler, (uint)cpm_vecs[vec].handler); */ | |
2379 | /* cpm_vecs[vec].handler = handler; */ | |
2380 | /* cpm_vecs[vec].dev_id = dev_id; */ | |
2381 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68360/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/config.c | |
2382 | --- linux-2.6.0-test8/arch/m68knommu/platform/68360/config.c 2003-10-20 09:10:57.562683352 +1000 | |
2383 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/config.c 2003-10-20 09:11:56.199769160 +1000 | |
2384 | @@ -181,12 +181,12 @@ | |
2385 | } | |
2386 | } | |
2387 | ||
2388 | - printk("\n68360 QUICC support (C) 2000 Lineo Inc.\n"); | |
2389 | + printk(KERN_INFO "\n68360 QUICC support (C) 2000 Lineo Inc.\n"); | |
2390 | ||
2391 | #if defined(CONFIG_UCQUICC) && 0 | |
2392 | - printk("uCquicc serial string [%s]\n",getserialnum()); | |
2393 | + printk(KERN_INFO "uCquicc serial string [%s]\n",getserialnum()); | |
2394 | p = scc1_hwaddr = gethwaddr(0); | |
2395 | - printk("uCquicc hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n", | |
2396 | + printk(KERN_INFO "uCquicc hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n", | |
2397 | p[0], p[1], p[2], p[3], p[4], p[5]); | |
2398 | ||
2399 | p = getbenv("APPEND"); | |
2400 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68360/ints.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/ints.c | |
2401 | --- linux-2.6.0-test8/arch/m68knommu/platform/68360/ints.c 2003-10-20 09:10:57.561683504 +1000 | |
2402 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/ints.c 2003-10-20 09:11:56.200769008 +1000 | |
2403 | @@ -36,8 +36,8 @@ | |
2404 | asmlinkage void system_call(void); | |
2405 | asmlinkage void buserr(void); | |
2406 | asmlinkage void trap(void); | |
2407 | -asmlinkage void bad_interrupt(void); | |
2408 | -asmlinkage void inthandler(void); | |
2409 | +asmlinkage irqreturn_t bad_interrupt(void); | |
2410 | +asmlinkage irqreturn_t inthandler(void); | |
2411 | ||
2412 | extern void *_ramvec[]; | |
2413 | ||
2414 | @@ -141,7 +141,7 @@ | |
2415 | irq_node_t *cur; | |
2416 | ||
2417 | if (!node->dev_id) | |
2418 | - printk("%s: Warning: dev_id of %s is zero\n", | |
2419 | + printk(KERN_INFO "%s: Warning: dev_id of %s is zero\n", | |
2420 | __FUNCTION__, node->devname); | |
2421 | ||
2422 | local_irq_save(flags); | |
2423 | @@ -176,30 +176,34 @@ | |
2424 | } | |
2425 | } | |
2426 | local_irq_restore(flags); | |
2427 | - printk ("%s: tried to remove invalid irq\n", __FUNCTION__); | |
2428 | + printk (KERN_INFO "%s: tried to remove invalid irq\n", __FUNCTION__); | |
2429 | } | |
2430 | #endif | |
2431 | ||
2432 | -int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *), | |
2433 | - unsigned long flags, const char *devname, void *dev_id) | |
2434 | +int request_irq( | |
2435 | + unsigned int irq, | |
2436 | + irqreturn_t (*handler)(int, void *, struct pt_regs *), | |
2437 | + unsigned long flags, | |
2438 | + const char *devname, | |
2439 | + void *dev_id) | |
2440 | { | |
2441 | int mask = (1<<irq); | |
2442 | ||
2443 | irq += (CPM_VECTOR_BASE<<4); | |
2444 | ||
2445 | if (irq >= INTERNAL_IRQS) { | |
2446 | - printk ("%s: Unknown IRQ %d from %s\n", __FUNCTION__, irq, devname); | |
2447 | + printk (KERN_ERR "%s: Unknown IRQ %d from %s\n", __FUNCTION__, irq, devname); | |
2448 | return -ENXIO; | |
2449 | } | |
2450 | ||
2451 | if (!(int_irq_list[irq].flags & IRQ_FLG_STD)) { | |
2452 | if (int_irq_list[irq].flags & IRQ_FLG_LOCK) { | |
2453 | - printk("%s: IRQ %d from %s is not replaceable\n", | |
2454 | + printk(KERN_ERR "%s: IRQ %d from %s is not replaceable\n", | |
2455 | __FUNCTION__, irq, int_irq_list[irq].devname); | |
2456 | return -EBUSY; | |
2457 | } | |
2458 | if (flags & IRQ_FLG_REPLACE) { | |
2459 | - printk("%s: %s can't replace IRQ %d from %s\n", | |
2460 | + printk(KERN_ERR "%s: %s can't replace IRQ %d from %s\n", | |
2461 | __FUNCTION__, devname, irq, int_irq_list[irq].devname); | |
2462 | return -EBUSY; | |
2463 | } | |
2464 | @@ -222,12 +226,12 @@ | |
2465 | void free_irq(unsigned int irq, void *dev_id) | |
2466 | { | |
2467 | if (irq >= INTERNAL_IRQS) { | |
2468 | - printk ("%s: Unknown IRQ %d\n", __FUNCTION__, irq); | |
2469 | + printk (KERN_ERR "%s: Unknown IRQ %d\n", __FUNCTION__, irq); | |
2470 | return; | |
2471 | } | |
2472 | ||
2473 | if (int_irq_list[irq].dev_id != dev_id) | |
2474 | - printk("%s: removing probably wrong IRQ %d from %s\n", | |
2475 | + printk(KERN_INFO "%s: removing probably wrong IRQ %d from %s\n", | |
2476 | __FUNCTION__, irq, int_irq_list[irq].devname); | |
2477 | int_irq_list[irq].handler = NULL; | |
2478 | int_irq_list[irq].flags = IRQ_FLG_STD; | |
2479 | @@ -250,7 +254,7 @@ | |
2480 | void M68360_enable_irq(unsigned int irq) | |
2481 | { | |
2482 | if (irq >= INTERNAL_IRQS) { | |
2483 | - printk("%s: Unknown IRQ %d\n", __FUNCTION__, irq); | |
2484 | + printk(KERN_ERR "%s: Unknown IRQ %d\n", __FUNCTION__, irq); | |
2485 | return; | |
2486 | } | |
2487 | ||
2488 | @@ -264,7 +268,7 @@ | |
2489 | void M68360_disable_irq(unsigned int irq) | |
2490 | { | |
2491 | if (irq >= INTERNAL_IRQS) { | |
2492 | - printk("%s: Unknown IRQ %d\n", __FUNCTION__, irq); | |
2493 | + printk(KERN_ERR "%s: Unknown IRQ %d\n", __FUNCTION__, irq); | |
2494 | return; | |
2495 | } | |
2496 | ||
2497 | @@ -322,9 +326,10 @@ | |
2498 | kstat_cpu(0).irqs[irq]++; | |
2499 | pquicc->intr_cisr = (1 << vec); /* indicate that irq has been serviced */ | |
2500 | } else { | |
2501 | - printk("unregistered interrupt %d!\nTurning it off in the CIMR...\n", irq); | |
2502 | + printk(KERN_ERR "unregistered interrupt %d!\nTurning it off in the CIMR...\n", irq); | |
2503 | /* *(volatile unsigned long *)0xfffff304 |= mask; */ | |
2504 | pquicc->intr_cimr &= ~(1 << vec); | |
2505 | num_spurious += 1; | |
2506 | } | |
2507 | + return(IRQ_HANDLED); | |
2508 | } | |
2509 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68EZ328/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68EZ328/config.c | |
2510 | --- linux-2.6.0-test8/arch/m68knommu/platform/68EZ328/config.c 2003-10-20 09:10:57.676666024 +1000 | |
2511 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68EZ328/config.c 2003-10-20 09:11:56.234763840 +1000 | |
2512 | @@ -106,12 +106,12 @@ | |
2513 | { | |
2514 | unsigned char *p; | |
2515 | ||
2516 | - printk("\n68EZ328 DragonBallEZ support (C) 1999 Rt-Control, Inc\n"); | |
2517 | + printk(KERN_INFO "\n68EZ328 DragonBallEZ support (C) 1999 Rt-Control, Inc\n"); | |
2518 | ||
2519 | #ifdef CONFIG_UCSIMM | |
2520 | - printk("uCsimm serial string [%s]\n",getserialnum()); | |
2521 | + printk(KERN_INFO "uCsimm serial string [%s]\n",getserialnum()); | |
2522 | p = cs8900a_hwaddr = gethwaddr(0); | |
2523 | - printk("uCsimm hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n", | |
2524 | + printk(KERN_INFO "uCsimm hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n", | |
2525 | p[0], p[1], p[2], p[3], p[4], p[5]); | |
2526 | ||
2527 | p = getbenv("APPEND"); | |
2528 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/config.c | |
2529 | --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/config.c 2003-10-20 09:10:57.663668000 +1000 | |
2530 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/config.c 2003-10-20 09:11:56.248761712 +1000 | |
2531 | @@ -185,7 +185,7 @@ | |
2532 | ||
2533 | void config_BSP(char *command, int size) | |
2534 | { | |
2535 | - printk("68VZ328 DragonBallVZ support (c) 2001 Lineo, Inc.\n"); | |
2536 | + printk(KERN_INFO "68VZ328 DragonBallVZ support (c) 2001 Lineo, Inc.\n"); | |
2537 | ||
2538 | #if defined(CONFIG_BOOTPARAM) | |
2539 | strncpy(command, CONFIG_BOOTPARAM_STRING, size); | |
2540 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/crt0_ram.S linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/crt0_ram.S | |
2541 | --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/crt0_ram.S 2003-10-20 09:10:57.663668000 +1000 | |
2542 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/crt0_ram.S 2003-10-20 09:11:56.248761712 +1000 | |
2543 | @@ -8,17 +8,21 @@ | |
2544 | #define MEM_END 0x00800000 /* Memory size 8Mb */ | |
2545 | #endif | |
2546 | ||
2547 | +#undef CRT_DEBUG | |
2548 | + | |
2549 | +.macro PUTC CHAR | |
2550 | +#ifdef CRT_DEBUG | |
2551 | + moveq #\CHAR, %d7 | |
2552 | + jsr putc | |
2553 | +#endif | |
2554 | +.endm | |
2555 | + | |
2556 | .global _start | |
2557 | .global _rambase | |
2558 | .global _ramvec | |
2559 | .global _ramstart | |
2560 | .global _ramend | |
2561 | ||
2562 | -.macro PUTC CHAR | |
2563 | - moveq #\CHAR, %d7 | |
2564 | - jsr putc | |
2565 | -.endm | |
2566 | - | |
2567 | .data | |
2568 | ||
2569 | /* | |
2570 | @@ -120,6 +124,7 @@ | |
2571 | * Local functions | |
2572 | */ | |
2573 | ||
2574 | +#ifdef CRT_DEBUG | |
2575 | putc: | |
2576 | moveb %d7, 0xfffff907 | |
2577 | 1: | |
2578 | @@ -127,3 +132,4 @@ | |
2579 | andw #0x2000, %d7 | |
2580 | beq 1b | |
2581 | rts | |
2582 | +#endif | |
2583 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/Makefile linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/Makefile | |
2584 | --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/Makefile 2003-10-20 09:10:57.664667848 +1000 | |
2585 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/Makefile 2003-10-20 09:11:56.248761712 +1000 | |
2586 | @@ -2,11 +2,13 @@ | |
2587 | # Makefile for arch/m68knommu/platform/68VZ328/de2. | |
2588 | # | |
2589 | ||
2590 | -obj-y := config.o | |
2591 | +obj-$(CONFIG_DRAGEN2) := config.o | |
2592 | ||
2593 | -EXTRA_TARGETS := bootlogo.rh crt0_$(MODEL).o | |
2594 | +extra-$(CONFIG_DRAGEN2) := crt0_ram.o | |
2595 | ||
2596 | -$(obj)/bootlogo.rh: $(src)/../../68EZ328/bootlogo.h | |
2597 | - perl $(src)/../../68328/bootlogo.pl < $(src)/../../68EZ328/bootlogo.h \ | |
2598 | - > $(obj)/bootlogo.rh | |
2599 | +$(obj)/config.o: $(obj)/screen.h | |
2600 | ||
2601 | +$(obj)/screen.h: $(src)/screen.xbm $(src)/xbm2lcd.pl | |
2602 | + perl $(src)/xbm2lcd.pl < $(src)/screen.xbm > $(obj)/screen.h | |
2603 | + | |
2604 | +clean-files := screen.h | |
2605 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/screen.xbm linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/screen.xbm | |
2606 | --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/screen.xbm 1970-01-01 10:00:00.000000000 +1000 | |
2607 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/screen.xbm 2003-10-20 09:11:56.250761408 +1000 | |
2608 | @@ -0,0 +1,804 @@ | |
2609 | +/* Created with The GIMP */ | |
2610 | +#define screen_width 320 | |
2611 | +#define screen_height 240 | |
2612 | +static unsigned char screen_bits[] = { | |
2613 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2614 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2615 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2616 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2617 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2618 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2619 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2620 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2621 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2622 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2623 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2624 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2625 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2626 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2627 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2628 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2629 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2630 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2631 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2632 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2633 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2634 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2635 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2636 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2637 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2638 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2639 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2640 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2641 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2642 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2643 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2644 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2645 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2646 | + 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2647 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2648 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2649 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, | |
2650 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2651 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2652 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, | |
2653 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2654 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2655 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2656 | + 0xff, 0xff, 0xff, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2657 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2658 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2659 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0xff, 0xff, 0xff, 0xff, | |
2660 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2661 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2662 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x95, | |
2663 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2664 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2665 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2666 | + 0xff, 0xff, 0x4f, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2667 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2668 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2669 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6b, 0xa5, 0xff, 0xff, 0xff, 0xff, | |
2670 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2671 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2672 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x29, 0x55, | |
2673 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2674 | + 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, | |
2675 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2676 | + 0xff, 0x3f, 0x56, 0xa9, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xf1, 0xf8, 0xff, | |
2677 | + 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, | |
2678 | + 0x7f, 0xe0, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2679 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x25, 0x55, 0xff, 0xff, 0xff, 0x0f, | |
2680 | + 0xc0, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, | |
2681 | + 0xff, 0xff, 0xff, 0xe3, 0x3f, 0xc0, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff, | |
2682 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0x52, 0x95, | |
2683 | + 0xff, 0xff, 0xff, 0x87, 0xcf, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2684 | + 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x3f, 0x8f, 0xff, 0x79, | |
2685 | + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2686 | + 0xff, 0x14, 0x55, 0x55, 0xff, 0x3f, 0x8e, 0xc7, 0xff, 0xf1, 0x78, 0x86, | |
2687 | + 0x8f, 0xe3, 0x78, 0xfe, 0xf1, 0xfc, 0xf0, 0x31, 0x33, 0xfc, 0xe1, 0xe3, | |
2688 | + 0xff, 0x8f, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2689 | + 0xff, 0xff, 0xff, 0xff, 0xbf, 0x6a, 0xaa, 0x4a, 0xff, 0x3f, 0x8e, 0xe3, | |
2690 | + 0xff, 0xf1, 0x78, 0x00, 0x8f, 0xe3, 0x38, 0xfe, 0x71, 0x3c, 0xe0, 0x11, | |
2691 | + 0x03, 0x78, 0xc0, 0xe3, 0xff, 0x8f, 0xff, 0x08, 0xff, 0xff, 0xff, 0xff, | |
2692 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x2b, 0x55, 0xa9, | |
2693 | + 0xff, 0x3f, 0x8e, 0xe3, 0xff, 0xf1, 0x78, 0x18, 0x8f, 0xe3, 0x31, 0xff, | |
2694 | + 0x31, 0x3e, 0xc6, 0x01, 0xc3, 0x78, 0x8c, 0xe3, 0xff, 0xc7, 0xff, 0x00, | |
2695 | + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2696 | + 0x57, 0x95, 0x2a, 0x55, 0xff, 0x3f, 0x8e, 0xe3, 0xff, 0xf1, 0x78, 0x1c, | |
2697 | + 0x8f, 0xe3, 0x91, 0xff, 0x11, 0x1f, 0xc7, 0xe1, 0xe3, 0x38, 0x8e, 0xe3, | |
2698 | + 0xff, 0xe1, 0xff, 0x30, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2699 | + 0xff, 0xff, 0xff, 0xff, 0x69, 0x55, 0xa5, 0x12, 0xff, 0x3f, 0x8e, 0xe3, | |
2700 | + 0xff, 0xf1, 0x78, 0x1c, 0x8f, 0xe3, 0xc3, 0xff, 0x81, 0x1f, 0xc0, 0xf1, | |
2701 | + 0xe3, 0x38, 0x80, 0xe3, 0xff, 0xf0, 0xff, 0x78, 0xfc, 0xff, 0xff, 0xff, | |
2702 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x5a, 0xa6, 0x2a, 0x49, | |
2703 | + 0xff, 0x3f, 0x8e, 0xc3, 0xff, 0xf1, 0x78, 0x1c, 0x8f, 0xe3, 0x83, 0xff, | |
2704 | + 0x01, 0x1f, 0xc0, 0xf1, 0xe3, 0x38, 0x80, 0xe3, 0x7f, 0xfc, 0xff, 0x78, | |
2705 | + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, | |
2706 | + 0x4d, 0x51, 0x92, 0x54, 0xff, 0x3f, 0x8e, 0xc7, 0xff, 0xf1, 0x78, 0x1c, | |
2707 | + 0x8f, 0xe3, 0x11, 0xff, 0x11, 0x1e, 0xff, 0xf1, 0xe3, 0x38, 0xfe, 0xe3, | |
2708 | + 0x3f, 0xfe, 0xff, 0x78, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2709 | + 0xff, 0xff, 0xff, 0xd7, 0xaa, 0xac, 0x54, 0x25, 0xff, 0x3f, 0x86, 0x07, | |
2710 | + 0xcf, 0xf1, 0x78, 0x1c, 0x8f, 0xe1, 0x19, 0xff, 0x31, 0x1c, 0xce, 0xf1, | |
2711 | + 0xe3, 0x38, 0x9c, 0xe3, 0x3f, 0x80, 0xe3, 0x71, 0xfc, 0xff, 0xff, 0xff, | |
2712 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0x52, 0x22, 0x25, 0xa9, | |
2713 | + 0xff, 0x3f, 0x80, 0x0f, 0xc0, 0xf1, 0x78, 0x1c, 0x0f, 0xe0, 0x38, 0xfe, | |
2714 | + 0x71, 0x38, 0xc0, 0xf1, 0xe3, 0x78, 0x80, 0xe3, 0x3f, 0x80, 0xe3, 0x01, | |
2715 | + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, | |
2716 | + 0x29, 0x95, 0x94, 0x4a, 0xff, 0x7f, 0x98, 0x3f, 0xf0, 0xf1, 0x78, 0x1c, | |
2717 | + 0x1f, 0xe6, 0x3c, 0xfe, 0xf1, 0xf8, 0xe0, 0xf1, 0xe3, 0xf8, 0xc1, 0xe3, | |
2718 | + 0x3f, 0x80, 0xe3, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2719 | + 0xff, 0xff, 0x3f, 0x55, 0x55, 0xa9, 0xa2, 0x28, 0xff, 0xff, 0xff, 0xff, | |
2720 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2721 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2722 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0x95, 0x54, 0x54, 0x54, 0xca, | |
2723 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2724 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2725 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xa5, | |
2726 | + 0x12, 0x43, 0x15, 0x25, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2727 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2728 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2729 | + 0xff, 0xff, 0x51, 0x49, 0xaa, 0x34, 0xca, 0xaa, 0xff, 0xff, 0xff, 0xff, | |
2730 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2731 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2732 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x2e, 0xa9, 0x92, 0x84, 0x29, 0x92, | |
2733 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2734 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2735 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xa2, 0x4a, | |
2736 | + 0x28, 0xb3, 0xa4, 0x4a, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, | |
2737 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, | |
2738 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2739 | + 0xff, 0x87, 0xaa, 0x52, 0x4a, 0x89, 0x96, 0xaa, 0xff, 0xff, 0xff, 0xff, | |
2740 | + 0x7f, 0x9e, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2741 | + 0xc0, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0x3c, 0xff, 0xff, 0xff, 0xff, | |
2742 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0x29, 0x09, 0xa5, 0x52, 0x51, 0x69, | |
2743 | + 0xff, 0xff, 0xff, 0xff, 0x7f, 0x9e, 0xff, 0xff, 0x9f, 0xe7, 0xff, 0xff, | |
2744 | + 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3c, | |
2745 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x50, 0xa4, 0x64, | |
2746 | + 0x35, 0x28, 0x29, 0x2d, 0xff, 0xff, 0xf0, 0x84, 0x3f, 0x98, 0xf0, 0xe1, | |
2747 | + 0x9f, 0xcf, 0xc9, 0xc1, 0x07, 0x1e, 0x9e, 0xf0, 0xfc, 0x84, 0x0f, 0xcc, | |
2748 | + 0x84, 0x0f, 0xff, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2749 | + 0x3f, 0x94, 0x2a, 0x15, 0x89, 0xae, 0x94, 0xa2, 0xff, 0x7f, 0xe6, 0x18, | |
2750 | + 0x7f, 0x1e, 0xe3, 0xcc, 0x9f, 0xcf, 0xc9, 0x9f, 0x73, 0xce, 0x1c, 0xe3, | |
2751 | + 0xfc, 0x18, 0xe7, 0xcc, 0x18, 0x67, 0xfe, 0x3c, 0xff, 0xff, 0xff, 0xff, | |
2752 | + 0xff, 0xff, 0xff, 0xff, 0x8f, 0x4b, 0x85, 0xa4, 0x55, 0x22, 0x65, 0xbd, | |
2753 | + 0xff, 0x3f, 0xcf, 0x3c, 0x7f, 0x9e, 0x67, 0xce, 0x9f, 0xcf, 0xf1, 0x9f, | |
2754 | + 0x79, 0xe6, 0x99, 0xe7, 0xe0, 0x3c, 0xf3, 0xcc, 0x3c, 0x73, 0xfe, 0x3c, | |
2755 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0x10, 0x29, 0xa9, | |
2756 | + 0x2a, 0x95, 0x94, 0x02, 0xff, 0x3f, 0xcf, 0x3c, 0x7f, 0x9e, 0x67, 0xc0, | |
2757 | + 0x9f, 0xcf, 0xf9, 0x81, 0x79, 0xe6, 0x99, 0xe7, 0xfc, 0x3c, 0xf3, 0xcc, | |
2758 | + 0x3c, 0x03, 0xfe, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2759 | + 0x51, 0xd6, 0x24, 0x51, 0x89, 0xa4, 0xaa, 0xba, 0xff, 0x3f, 0xcf, 0x3c, | |
2760 | + 0x7f, 0x9e, 0x67, 0xfe, 0x9f, 0xcf, 0xf9, 0x9c, 0x79, 0xe6, 0x99, 0xe7, | |
2761 | + 0xfc, 0x3c, 0xf3, 0xcc, 0x3c, 0xf3, 0xff, 0x3c, 0xff, 0xff, 0xff, 0xff, | |
2762 | + 0xff, 0xff, 0xff, 0x7f, 0x24, 0x29, 0x4a, 0x26, 0x1b, 0x55, 0x55, 0x55, | |
2763 | + 0xff, 0x3f, 0xcf, 0x3c, 0x7f, 0x9e, 0x67, 0xfe, 0x9f, 0xcf, 0xf9, 0x9c, | |
2764 | + 0x33, 0xe6, 0x99, 0xe7, 0xfc, 0x3c, 0x67, 0xcc, 0x3c, 0xf3, 0xff, 0x3c, | |
2765 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x93, 0x84, 0x52, 0x59, | |
2766 | + 0x51, 0xa5, 0x54, 0x95, 0xff, 0x7f, 0xe6, 0x3c, 0x7f, 0x9e, 0xe7, 0xdc, | |
2767 | + 0x9f, 0xe7, 0xf9, 0x8c, 0x47, 0xce, 0x9c, 0xe7, 0xfc, 0x3c, 0x8f, 0xcc, | |
2768 | + 0x3c, 0xe7, 0xfe, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, | |
2769 | + 0x48, 0x52, 0x49, 0x95, 0x55, 0x55, 0x55, 0x8a, 0xff, 0xff, 0xf0, 0x3c, | |
2770 | + 0xff, 0x98, 0xe7, 0xe1, 0x1f, 0xf0, 0xf9, 0x11, 0x7f, 0x1e, 0x9e, 0xe7, | |
2771 | + 0xc0, 0x3c, 0xff, 0xcc, 0x3c, 0x0f, 0xff, 0x3c, 0xff, 0xff, 0xff, 0xff, | |
2772 | + 0xff, 0xff, 0xff, 0xa1, 0x2a, 0x49, 0xa4, 0xaa, 0xac, 0x54, 0x49, 0xe5, | |
2773 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2774 | + 0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0xfe, 0xff, 0xff, 0xff, 0xff, | |
2775 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95, 0xa4, 0xaa, 0xa8, 0x8a, | |
2776 | + 0x26, 0xa5, 0x6a, 0x2d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2777 | + 0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, | |
2778 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x54, | |
2779 | + 0x22, 0x40, 0x4a, 0x4a, 0x69, 0xa8, 0x2c, 0x55, 0xff, 0xff, 0xff, 0xff, | |
2780 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2781 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2782 | + 0xff, 0xff, 0x5f, 0x0a, 0x92, 0xae, 0xa9, 0x62, 0xa5, 0x4b, 0xa2, 0x92, | |
2783 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2784 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2785 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x47, 0xa1, 0x51, 0x89, 0x4c, 0xb5, | |
2786 | + 0x26, 0x24, 0x55, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2787 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2788 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x25, 0x4a, | |
2789 | + 0x0a, 0x56, 0x55, 0x48, 0x55, 0x55, 0x29, 0x55, 0xff, 0xff, 0xff, 0xff, | |
2790 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2791 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2792 | + 0xff, 0xff, 0xa8, 0x52, 0xc8, 0x40, 0x65, 0xa5, 0x52, 0x95, 0xaa, 0x92, | |
2793 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2794 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2795 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x12, 0x29, 0x93, 0xad, 0x28, 0x2a, | |
2796 | + 0x4b, 0xa9, 0x26, 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2797 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2798 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x4a, 0x09, | |
2799 | + 0x29, 0x28, 0x44, 0x21, 0xa9, 0x55, 0x52, 0x95, 0xff, 0xff, 0xff, 0xff, | |
2800 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2801 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2802 | + 0xff, 0x17, 0x91, 0xa4, 0x94, 0x45, 0xb9, 0x9c, 0x54, 0x93, 0xaa, 0x52, | |
2803 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2804 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2805 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x24, 0x95, 0xc2, 0xb0, 0x5a, 0x45, | |
2806 | + 0x96, 0xaa, 0x92, 0x94, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2807 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2808 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x88, 0x40, | |
2809 | + 0x54, 0xcb, 0x49, 0xa6, 0x51, 0x25, 0xa9, 0x52, 0xff, 0xff, 0xff, 0xff, | |
2810 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2811 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2812 | + 0x3f, 0x88, 0x4a, 0x55, 0x57, 0x08, 0xd5, 0x90, 0x5c, 0xa9, 0x6a, 0x9a, | |
2813 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2814 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2815 | + 0xff, 0xff, 0xff, 0xff, 0x5f, 0x25, 0x94, 0x4a, 0x82, 0xf2, 0x9a, 0x53, | |
2816 | + 0x25, 0x54, 0xad, 0x26, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2817 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2818 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x27, 0x28, 0x45, 0x50, | |
2819 | + 0xaa, 0x14, 0xd0, 0x51, 0xa2, 0x55, 0x0a, 0x89, 0xff, 0xff, 0xff, 0xff, | |
2820 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2821 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2822 | + 0x13, 0x85, 0x10, 0x55, 0x79, 0xc2, 0xef, 0x25, 0x55, 0xa5, 0x6a, 0x52, | |
2823 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2824 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2825 | + 0xff, 0xff, 0xff, 0x7f, 0x90, 0xa2, 0xaa, 0xaa, 0x06, 0x69, 0xc8, 0x54, | |
2826 | + 0x2d, 0x6a, 0xaa, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2827 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2828 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x4b, 0x54, 0x48, 0xa5, | |
2829 | + 0xb0, 0x94, 0x8a, 0x24, 0x86, 0x1b, 0x05, 0x52, 0xff, 0xff, 0xff, 0xff, | |
2830 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2831 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, | |
2832 | + 0x49, 0x25, 0xaa, 0xa4, 0x8a, 0x56, 0xe5, 0x54, 0xd3, 0x49, 0xe9, 0x4a, | |
2833 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2834 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2835 | + 0xff, 0xff, 0xff, 0x57, 0x24, 0x14, 0x95, 0x52, 0x54, 0x49, 0x6b, 0x25, | |
2836 | + 0x2d, 0x24, 0x15, 0x92, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2837 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2838 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0xa4, 0xca, 0x54, 0x2d, | |
2839 | + 0x15, 0xa9, 0x26, 0x91, 0xc5, 0x56, 0xd5, 0xab, 0xff, 0xff, 0xff, 0xff, | |
2840 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2841 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, | |
2842 | + 0x12, 0x20, 0x2a, 0x92, 0xa8, 0x4a, 0xb9, 0x56, 0x7a, 0x50, 0x6a, 0x4a, | |
2843 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2844 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2845 | + 0xff, 0xff, 0x3f, 0x15, 0x0a, 0x29, 0xb1, 0xd5, 0x66, 0x54, 0x8f, 0x30, | |
2846 | + 0x05, 0x57, 0xab, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2847 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2848 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xa8, 0xd4, 0x4a, 0x45, 0x53, | |
2849 | + 0x52, 0xd3, 0xb2, 0xaa, 0xd5, 0xa2, 0x4a, 0x55, 0xff, 0xff, 0xff, 0xff, | |
2850 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2851 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x85, | |
2852 | + 0x0a, 0x48, 0x2a, 0xa8, 0x32, 0xaa, 0xa9, 0x4a, 0x54, 0x54, 0xaa, 0x2a, | |
2853 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2854 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2855 | + 0xff, 0xff, 0xab, 0x62, 0x50, 0x22, 0x52, 0x55, 0xd9, 0x15, 0x55, 0x29, | |
2856 | + 0x45, 0xf4, 0xb5, 0xca, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2857 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2858 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x2a, 0x25, 0x92, 0x49, 0x13, | |
2859 | + 0x09, 0xaa, 0x25, 0xba, 0x52, 0x07, 0x48, 0x31, 0xff, 0xff, 0xff, 0xff, | |
2860 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2861 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x59, 0xaa, | |
2862 | + 0x89, 0x20, 0x34, 0xa5, 0xd4, 0xd5, 0xaa, 0x85, 0x3c, 0x52, 0x57, 0x95, | |
2863 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2864 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2865 | + 0xff, 0x1f, 0x0a, 0x01, 0xa8, 0x92, 0xaa, 0x94, 0x4a, 0x70, 0xb4, 0x54, | |
2866 | + 0x95, 0x55, 0xa9, 0x54, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2867 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2868 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x42, 0xa4, 0x0a, 0x51, 0x09, 0xa5, | |
2869 | + 0x5d, 0x9b, 0x12, 0x25, 0xfb, 0x44, 0x55, 0xab, 0xff, 0xff, 0xff, 0xff, | |
2870 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2871 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa3, 0x28, 0x01, | |
2872 | + 0x50, 0x4d, 0x56, 0x91, 0x64, 0x95, 0x52, 0xb5, 0x49, 0xb7, 0x4a, 0xaa, | |
2873 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2874 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2875 | + 0xff, 0x15, 0x03, 0xda, 0x0e, 0x62, 0x89, 0xba, 0x09, 0x47, 0xa9, 0x08, | |
2876 | + 0x52, 0x49, 0xaa, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2877 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2878 | + 0xff, 0xff, 0xff, 0xff, 0x3f, 0x40, 0x51, 0x0b, 0xc1, 0x15, 0xee, 0x90, | |
2879 | + 0xfe, 0x52, 0x15, 0xc5, 0x14, 0x55, 0xd5, 0x8a, 0xff, 0xff, 0xff, 0xff, | |
2880 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2881 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x63, 0x00, 0x90, | |
2882 | + 0x2a, 0xa1, 0x15, 0xd6, 0x08, 0x4f, 0xd8, 0xa8, 0xea, 0xaa, 0x2a, 0x00, | |
2883 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2884 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2885 | + 0xcf, 0x10, 0x00, 0x49, 0x12, 0x2d, 0x63, 0x17, 0xab, 0xa0, 0x12, 0x95, | |
2886 | + 0x12, 0xaa, 0x48, 0x64, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2887 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2888 | + 0xff, 0xff, 0xff, 0xff, 0xe7, 0x82, 0x40, 0xa4, 0x86, 0xc8, 0x98, 0x54, | |
2889 | + 0xb5, 0xab, 0xe5, 0x6a, 0xd5, 0xa5, 0x16, 0x18, 0xff, 0xff, 0xff, 0xff, | |
2890 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2891 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb1, 0x68, 0x90, 0x82, | |
2892 | + 0xd4, 0x25, 0x4a, 0x39, 0x79, 0x10, 0x12, 0x0a, 0x55, 0xb5, 0x06, 0x88, | |
2893 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2894 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, | |
2895 | + 0x6c, 0x42, 0x20, 0x29, 0x28, 0x50, 0x29, 0x4b, 0x15, 0xb5, 0xd6, 0xaa, | |
2896 | + 0x72, 0x2a, 0xad, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2897 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2898 | + 0xff, 0xff, 0xff, 0xbf, 0x24, 0x2c, 0x00, 0x50, 0x23, 0x55, 0xfa, 0xff, | |
2899 | + 0x5d, 0x89, 0x52, 0x52, 0x59, 0xb5, 0xff, 0xcd, 0xff, 0xff, 0xff, 0xff, | |
2900 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2901 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0x8b, 0x41, 0x24, 0x5a, | |
2902 | + 0xac, 0x82, 0xfe, 0xff, 0xaf, 0xd5, 0xaa, 0x5a, 0x5d, 0xef, 0x6f, 0x57, | |
2903 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2904 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, | |
2905 | + 0xe4, 0x34, 0x27, 0x8a, 0x12, 0xa8, 0xff, 0xff, 0xff, 0x56, 0xaa, 0x95, | |
2906 | + 0xc4, 0x78, 0x7b, 0x53, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2907 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2908 | + 0xff, 0xff, 0xff, 0x35, 0x7d, 0x00, 0x11, 0x42, 0xaa, 0xe5, 0xff, 0xff, | |
2909 | + 0xff, 0x24, 0x51, 0xd4, 0xb2, 0xda, 0x1f, 0xa8, 0xff, 0xff, 0xff, 0xff, | |
2910 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2911 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x08, 0x1f, 0x42, 0x59, 0x28, | |
2912 | + 0xba, 0xf4, 0xff, 0xff, 0xff, 0x5b, 0x2d, 0x53, 0x95, 0xfe, 0x11, 0xa9, | |
2913 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2914 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xeb, | |
2915 | + 0x7f, 0xeb, 0xa6, 0x92, 0x14, 0xf9, 0xff, 0xff, 0xff, 0xcf, 0xaa, 0xaa, | |
2916 | + 0xaa, 0xbf, 0x1f, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2917 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2918 | + 0xff, 0xff, 0x17, 0xf8, 0x17, 0x72, 0x02, 0x88, 0xd2, 0xfc, 0xff, 0xff, | |
2919 | + 0xff, 0xef, 0xaa, 0x4a, 0xe9, 0xd5, 0xdf, 0xa5, 0xff, 0xff, 0xff, 0xff, | |
2920 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2921 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xd1, 0x1e, 0x11, 0xb1, 0xa5, | |
2922 | + 0x2a, 0xfe, 0xff, 0xff, 0xff, 0xbf, 0xd4, 0x52, 0xb5, 0xef, 0x25, 0xd4, | |
2923 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2924 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x51, 0xff, | |
2925 | + 0x07, 0x94, 0x08, 0xa4, 0x54, 0xff, 0xff, 0xff, 0xcf, 0x7f, 0xb5, 0x54, | |
2926 | + 0xfd, 0x70, 0x55, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2927 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2928 | + 0xff, 0xff, 0x26, 0xff, 0x17, 0x2d, 0xb6, 0x12, 0x0a, 0xff, 0xff, 0xff, | |
2929 | + 0x8f, 0x7f, 0x8d, 0xaa, 0x8a, 0x56, 0x55, 0x49, 0xff, 0xff, 0xff, 0xff, | |
2930 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2931 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xe2, 0x77, 0x2b, 0x37, 0x91, 0x08, | |
2932 | + 0xd5, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xd5, 0xaa, 0xaa, 0x52, 0x4a, 0x55, | |
2933 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2934 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xfd, 0xff, | |
2935 | + 0x81, 0xc1, 0x59, 0xd0, 0xe1, 0xff, 0xff, 0xff, 0x07, 0xff, 0x2a, 0x95, | |
2936 | + 0x54, 0x55, 0x65, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2937 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2938 | + 0xff, 0xaf, 0xfd, 0xbd, 0x49, 0x8c, 0x58, 0x8a, 0xd5, 0xff, 0xff, 0xff, | |
2939 | + 0xe7, 0xff, 0x49, 0x51, 0x45, 0x55, 0x4d, 0xb5, 0xff, 0xff, 0xff, 0xff, | |
2940 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2941 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xbe, 0x3f, 0xc4, 0xd5, 0x02, 0x79, | |
2942 | + 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb7, 0x4a, 0xba, 0x52, 0xf9, 0x4a, | |
2943 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2944 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xff, 0x97, | |
2945 | + 0x64, 0x52, 0xda, 0x1c, 0xc9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xa8, | |
2946 | + 0x8a, 0x54, 0x15, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2947 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2948 | + 0xff, 0xd5, 0xdf, 0x4f, 0x91, 0x22, 0x2d, 0xc2, 0xe5, 0xff, 0xff, 0xff, | |
2949 | + 0xff, 0xff, 0x93, 0x56, 0x6a, 0x55, 0xd5, 0xaa, 0xff, 0xff, 0xff, 0xff, | |
2950 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2951 | + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf5, 0xef, 0x25, 0x5c, 0x43, 0x16, 0xaf, | |
2952 | + 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x92, 0x2a, 0x2b, 0x55, 0x2a, | |
2953 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2954 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xdb, 0xfb, 0x43, | |
2955 | + 0x65, 0x21, 0x91, 0x13, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x47, 0x49, | |
2956 | + 0x51, 0x52, 0x55, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2957 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2958 | + 0xb7, 0xf0, 0x7f, 0x00, 0x7b, 0xea, 0x3c, 0xd1, 0xea, 0xff, 0xff, 0xff, | |
2959 | + 0xff, 0xff, 0x27, 0x6a, 0x2d, 0x55, 0x55, 0xab, 0xff, 0xff, 0xff, 0xff, | |
2960 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2961 | + 0xff, 0xff, 0xff, 0xff, 0x5b, 0xfc, 0x7d, 0xac, 0xc6, 0x11, 0xe5, 0x46, | |
2962 | + 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0x95, 0xd2, 0x4a, 0xb2, 0x55, | |
2963 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2964 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2d, 0xfe, 0x0f, 0x82, | |
2965 | + 0xfc, 0x90, 0x54, 0x32, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0xd5, | |
2966 | + 0x5a, 0xaa, 0x55, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2967 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2968 | + 0x17, 0xdf, 0x1e, 0xc2, 0xa9, 0x23, 0xca, 0x46, 0xe5, 0xff, 0xff, 0x3f, | |
2969 | + 0xf8, 0xff, 0x97, 0x2a, 0x55, 0xad, 0x94, 0x5a, 0xff, 0xff, 0xff, 0xff, | |
2970 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2971 | + 0xff, 0xff, 0xff, 0x7f, 0xc5, 0xff, 0x07, 0xd5, 0x6c, 0xab, 0x12, 0x9a, | |
2972 | + 0xe4, 0x0f, 0xff, 0x1f, 0xe0, 0xff, 0x57, 0xa9, 0x55, 0xa5, 0xda, 0xaa, | |
2973 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2974 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa1, 0xef, 0xd1, 0xac, | |
2975 | + 0xc6, 0xa5, 0xea, 0x5c, 0xf3, 0x07, 0xfe, 0x0f, 0xc0, 0xff, 0x4f, 0x55, | |
2976 | + 0xaa, 0x5a, 0x55, 0x6d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2977 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, | |
2978 | + 0xf0, 0xfb, 0xa8, 0xa5, 0xf2, 0x18, 0x56, 0x41, 0xf7, 0x03, 0xfc, 0x07, | |
2979 | + 0x80, 0xff, 0xaf, 0xaa, 0xaa, 0x4a, 0xad, 0x56, 0xff, 0xff, 0xff, 0xff, | |
2980 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2981 | + 0xff, 0xff, 0xff, 0x3f, 0xd0, 0xbf, 0x41, 0x52, 0x0e, 0xc6, 0xaa, 0x68, | |
2982 | + 0xfa, 0x03, 0xfc, 0x07, 0x80, 0xff, 0x9f, 0x52, 0xd5, 0x6a, 0xab, 0xd5, | |
2983 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2984 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0xfd, 0x1d, 0x28, 0x2a, | |
2985 | + 0x51, 0x75, 0x55, 0x4d, 0xe4, 0x03, 0xf8, 0x03, 0x03, 0xff, 0xaf, 0xaa, | |
2986 | + 0x6a, 0xad, 0xaa, 0x4a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2987 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3b, | |
2988 | + 0xfc, 0x9f, 0x00, 0x58, 0x92, 0x22, 0x6a, 0xd3, 0xed, 0xf3, 0xf8, 0xc3, | |
2989 | + 0x0f, 0xff, 0xaf, 0xaa, 0xae, 0xaa, 0xaa, 0xda, 0xff, 0xff, 0xff, 0xff, | |
2990 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2991 | + 0xff, 0xff, 0xff, 0x0a, 0xfe, 0x06, 0x7a, 0x4e, 0x52, 0x94, 0x36, 0x4c, | |
2992 | + 0xf6, 0xb9, 0xf9, 0xc3, 0x1b, 0xff, 0x9f, 0xaa, 0x52, 0xaa, 0xaa, 0x6a, | |
2993 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2994 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0xb6, 0x03, 0x52, 0x93, | |
2995 | + 0x95, 0x52, 0x46, 0x55, 0xf6, 0xb9, 0xf9, 0xe3, 0x17, 0xfe, 0x4f, 0xd5, | |
2996 | + 0xaa, 0xd5, 0xaa, 0xa6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
2997 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xa1, | |
2998 | + 0xff, 0xa2, 0x2a, 0x31, 0x18, 0xba, 0x92, 0x55, 0xcb, 0x79, 0xf9, 0xe3, | |
2999 | + 0x17, 0xfe, 0x6f, 0x29, 0xad, 0x54, 0xad, 0xb6, 0xff, 0xff, 0xff, 0xff, | |
3000 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3001 | + 0xff, 0xff, 0x4f, 0x80, 0x3f, 0x49, 0xa8, 0xef, 0x75, 0x47, 0x2b, 0x53, | |
3002 | + 0xef, 0x79, 0xf9, 0xe3, 0x1f, 0xfe, 0x9f, 0xa4, 0xaa, 0x6a, 0x55, 0x55, | |
3003 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3004 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1b, 0xe0, 0x8d, 0x20, 0x6e, 0x84, | |
3005 | + 0x53, 0xa8, 0x29, 0xb1, 0xeb, 0xf9, 0xf1, 0xe3, 0x1f, 0xfe, 0x5f, 0xb5, | |
3006 | + 0xaa, 0xaa, 0x56, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3007 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, | |
3008 | + 0x4f, 0x39, 0x42, 0x38, 0x15, 0x55, 0x92, 0x6d, 0xcc, 0xfb, 0x01, 0xe0, | |
3009 | + 0x1f, 0xfe, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0x4a, 0xff, 0xff, 0xff, 0xff, | |
3010 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3011 | + 0xff, 0xff, 0x45, 0x78, 0xd3, 0x9c, 0x2a, 0x1a, 0x76, 0x11, 0x13, 0xcc, | |
3012 | + 0xed, 0xf3, 0x06, 0xc3, 0x1f, 0xfe, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0x69, | |
3013 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3014 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x23, 0xfc, 0xd3, 0x24, 0x8d, 0x60, | |
3015 | + 0x8a, 0x54, 0xd5, 0x78, 0xd2, 0x67, 0x03, 0x80, 0x0f, 0xff, 0x5f, 0x55, | |
3016 | + 0x55, 0x55, 0xb5, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3017 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x01, 0x6e, | |
3018 | + 0x70, 0x10, 0x58, 0x15, 0xa8, 0x4e, 0xcd, 0xa4, 0xca, 0x37, 0x00, 0x00, | |
3019 | + 0xfe, 0xff, 0xaf, 0x54, 0xaa, 0xda, 0x56, 0xd5, 0xff, 0xff, 0xff, 0xff, | |
3020 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3021 | + 0xff, 0xff, 0x10, 0xbf, 0x35, 0xc9, 0xb1, 0xf7, 0x3a, 0xa9, 0xd1, 0xa8, | |
3022 | + 0xd3, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0x5f, 0x8d, 0xd5, 0x56, 0x55, 0x55, | |
3023 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3024 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0x37, 0xc0, 0x16, 0x94, 0x55, 0x92, 0x2a, | |
3025 | + 0x12, 0x5d, 0x9d, 0x4a, 0xd0, 0x07, 0x00, 0x00, 0x80, 0xff, 0x5f, 0xab, | |
3026 | + 0x54, 0xd5, 0x56, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3027 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x0c, 0x8f, | |
3028 | + 0x20, 0x4b, 0xb7, 0xd4, 0xe2, 0x92, 0x28, 0xa9, 0xf7, 0x03, 0x00, 0x00, | |
3029 | + 0x00, 0xff, 0xbf, 0xa4, 0xae, 0x2a, 0xa9, 0xaa, 0xff, 0xff, 0xff, 0xff, | |
3030 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3031 | + 0xff, 0x15, 0xc2, 0xa3, 0x9c, 0x4f, 0x91, 0x72, 0x11, 0x57, 0xab, 0x95, | |
3032 | + 0xd3, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xbf, 0x5a, 0x51, 0xab, 0xb5, 0xaa, | |
3033 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3034 | + 0xff, 0xff, 0xff, 0xff, 0xbf, 0x0f, 0xc0, 0x04, 0x51, 0x46, 0xa5, 0x19, | |
3035 | + 0x57, 0x65, 0x32, 0xc9, 0xcd, 0x01, 0x00, 0x00, 0x00, 0xfe, 0x5f, 0x55, | |
3036 | + 0xae, 0xaa, 0xaa, 0xda, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3037 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x60, 0x24, | |
3038 | + 0x48, 0x93, 0xa5, 0x28, 0x4a, 0x29, 0x15, 0x45, 0xda, 0x01, 0x00, 0x00, | |
3039 | + 0x30, 0xfe, 0x5f, 0xd5, 0xb2, 0xaa, 0xaa, 0x6a, 0xff, 0xff, 0xff, 0xff, | |
3040 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3041 | + 0xff, 0x01, 0xd0, 0xa5, 0xaa, 0x24, 0xfd, 0xfb, 0xa8, 0xaa, 0xea, 0x67, | |
3042 | + 0xe8, 0x07, 0x00, 0x00, 0x18, 0xff, 0xbf, 0x55, 0x2d, 0x54, 0x55, 0xad, | |
3043 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3044 | + 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0xb0, 0x52, 0x41, 0x95, 0xaa, 0x91, | |
3045 | + 0x5a, 0x8c, 0xd2, 0x74, 0xcb, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xbf, 0x5a, | |
3046 | + 0xa5, 0xab, 0x55, 0x65, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3047 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x7c, 0x73, | |
3048 | + 0xa6, 0x4e, 0x79, 0x8b, 0xb2, 0x52, 0x15, 0x65, 0xee, 0x1f, 0x00, 0xe0, | |
3049 | + 0x81, 0x9f, 0xff, 0xaa, 0x59, 0xb4, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, | |
3050 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3051 | + 0x07, 0x81, 0xbf, 0x55, 0x19, 0x52, 0x25, 0x5f, 0xa0, 0x2a, 0xaf, 0x4e, | |
3052 | + 0xd8, 0x3f, 0x00, 0x3c, 0x80, 0x1f, 0x7f, 0xaa, 0xaa, 0x9b, 0xaa, 0x6a, | |
3053 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3054 | + 0xff, 0xff, 0xff, 0xff, 0x97, 0x41, 0xf7, 0x15, 0x46, 0xad, 0xae, 0x14, | |
3055 | + 0x56, 0xa5, 0x54, 0x4d, 0xe5, 0xff, 0xc0, 0x07, 0x98, 0x3f, 0x7c, 0x55, | |
3056 | + 0xb5, 0x54, 0x55, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3057 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9b, 0x78, 0xbd, 0xda, | |
3058 | + 0x41, 0x14, 0xa2, 0xf2, 0xdb, 0x54, 0x16, 0x5c, 0xb4, 0xff, 0xff, 0x01, | |
3059 | + 0x1e, 0x3f, 0xf8, 0xbd, 0xaa, 0x56, 0x55, 0x2d, 0xff, 0xff, 0xff, 0xff, | |
3060 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3061 | + 0x4f, 0xbd, 0x17, 0x20, 0xce, 0xca, 0x9d, 0x8a, 0x44, 0x32, 0xe9, 0xb6, | |
3062 | + 0xc9, 0x3f, 0x3f, 0x80, 0x0f, 0x7f, 0xf8, 0xa5, 0x55, 0xb9, 0xaa, 0xd5, | |
3063 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3064 | + 0xff, 0xff, 0xff, 0x7f, 0x43, 0xaf, 0xb3, 0x54, 0x21, 0x6c, 0x84, 0x4a, | |
3065 | + 0x76, 0xad, 0xaa, 0x9c, 0xe9, 0x7b, 0x00, 0xe0, 0x01, 0xff, 0xf9, 0xab, | |
3066 | + 0x6a, 0x8b, 0x6a, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3067 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xd9, 0x32, 0xe7, | |
3068 | + 0x8e, 0x8a, 0xd2, 0x9d, 0xa6, 0x22, 0xd5, 0x54, 0xd2, 0xf3, 0x00, 0xf8, | |
3069 | + 0x00, 0xfe, 0xff, 0xb5, 0x5a, 0x75, 0x55, 0xad, 0xff, 0xff, 0xff, 0xff, | |
3070 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, | |
3071 | + 0xbe, 0x7c, 0xb5, 0x32, 0x2c, 0x5c, 0xd4, 0xa4, 0x34, 0xad, 0xe9, 0x1e, | |
3072 | + 0xe9, 0xf3, 0x03, 0x3f, 0x00, 0xfe, 0xff, 0xab, 0xaa, 0x55, 0x5d, 0x55, | |
3073 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3074 | + 0xff, 0xff, 0xff, 0x7f, 0x25, 0x9c, 0x6a, 0x67, 0xd1, 0x43, 0x6a, 0xb6, | |
3075 | + 0x2a, 0x25, 0x56, 0xf2, 0xeb, 0xe1, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x57, | |
3076 | + 0xab, 0x56, 0xab, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3077 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf7, 0x0f, 0x29, 0xba, | |
3078 | + 0x12, 0xbb, 0x79, 0x2b, 0xb5, 0xaa, 0x33, 0x47, 0xfa, 0xc1, 0xff, 0x0f, | |
3079 | + 0x00, 0xf8, 0xff, 0xd7, 0xda, 0xaa, 0x6a, 0xb5, 0xff, 0xff, 0xff, 0xff, | |
3080 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, | |
3081 | + 0xff, 0x3b, 0x1b, 0xd9, 0x4e, 0x20, 0xd9, 0x1a, 0xa5, 0xaa, 0x34, 0xa5, | |
3082 | + 0xfa, 0xc1, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x5f, 0x6b, 0xb5, 0x5d, 0x55, | |
3083 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3084 | + 0xff, 0xff, 0xff, 0xbf, 0xad, 0x05, 0x99, 0xa9, 0x2a, 0xbb, 0x0a, 0xc8, | |
3085 | + 0x6a, 0x55, 0x17, 0x17, 0xfa, 0x80, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xbf, | |
3086 | + 0xaa, 0xad, 0xaa, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3087 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x4e, 0x3e, 0x6d, 0x4a, | |
3088 | + 0xa6, 0x15, 0xf5, 0x29, 0x29, 0xa5, 0x74, 0xa7, 0xfe, 0x00, 0xff, 0x00, | |
3089 | + 0x00, 0xf0, 0xff, 0x5f, 0xb5, 0x56, 0x6b, 0x55, 0xff, 0xff, 0xff, 0xff, | |
3090 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, | |
3091 | + 0x27, 0x2d, 0x2c, 0x5d, 0x21, 0x8d, 0x2d, 0x45, 0xab, 0x54, 0x97, 0x6b, | |
3092 | + 0x7d, 0x00, 0x1e, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0xab, 0x5a, 0xad, 0xb5, | |
3093 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3094 | + 0xff, 0xff, 0xff, 0xfb, 0xb5, 0xe6, 0x46, 0x8f, 0x56, 0x59, 0xe3, 0x56, | |
3095 | + 0x55, 0xa9, 0x2a, 0x53, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x7f, | |
3096 | + 0x6a, 0xd7, 0x6a, 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3097 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfe, 0x38, 0x2b, 0xd1, 0x4d, | |
3098 | + 0x52, 0x55, 0x54, 0x56, 0x69, 0xad, 0xca, 0x89, 0x3f, 0x00, 0x00, 0x00, | |
3099 | + 0x00, 0xc0, 0xff, 0x7f, 0x5b, 0x59, 0xab, 0x56, 0xff, 0xff, 0xff, 0xff, | |
3100 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, | |
3101 | + 0xa6, 0x12, 0x2f, 0xf2, 0x09, 0xc0, 0x40, 0xa9, 0x2e, 0x54, 0x8d, 0xea, | |
3102 | + 0x3f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x6d, 0xd7, 0x5a, 0xa9, | |
3103 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3104 | + 0xff, 0xff, 0xef, 0xbf, 0xd6, 0x2a, 0x43, 0x6c, 0x29, 0x52, 0x3d, 0x88, | |
3105 | + 0x92, 0x56, 0xd5, 0xa6, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, | |
3106 | + 0xaa, 0xd5, 0xaa, 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3107 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd, 0x37, 0x06, 0xe9, 0x25, | |
3108 | + 0x00, 0xa0, 0x14, 0xa0, 0x5a, 0xa9, 0xca, 0xd4, 0x1f, 0x00, 0x00, 0x00, | |
3109 | + 0x00, 0x80, 0xff, 0xff, 0x55, 0x35, 0xab, 0xaa, 0xff, 0xff, 0xff, 0xff, | |
3110 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf, | |
3111 | + 0x59, 0xc3, 0x2e, 0x36, 0x1e, 0x91, 0x51, 0x50, 0x15, 0x55, 0xc5, 0xea, | |
3112 | + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x2f, 0xd5, 0x56, 0xd5, | |
3113 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3114 | + 0xff, 0xff, 0xff, 0xab, 0x21, 0x40, 0x51, 0xa2, 0x8a, 0x80, 0xdd, 0xa5, | |
3115 | + 0xae, 0xac, 0xc6, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, | |
3116 | + 0xd7, 0xad, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3117 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xe4, 0xba, 0x42, 0x65, 0xb5, | |
3118 | + 0x8e, 0xc8, 0xed, 0x70, 0x4b, 0xb5, 0xc6, 0xfa, 0x0f, 0x00, 0x00, 0x00, | |
3119 | + 0x00, 0x80, 0xbf, 0xff, 0xbf, 0x56, 0xd5, 0xb6, 0xff, 0xff, 0xff, 0xff, | |
3120 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x53, | |
3121 | + 0x05, 0x48, 0xa9, 0xb0, 0x56, 0x67, 0x6f, 0xaa, 0xa9, 0x45, 0xed, 0xfc, | |
3122 | + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xbf, 0xaa, 0xb5, 0xaa, | |
3123 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3124 | + 0xff, 0xdf, 0xbb, 0x9a, 0x3c, 0x04, 0xf4, 0x99, 0x6b, 0xf0, 0x7f, 0xa9, | |
3125 | + 0xac, 0x54, 0x65, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, | |
3126 | + 0x5f, 0xab, 0xaa, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3127 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0xda, 0x3f, 0xb0, 0x79, 0x48, | |
3128 | + 0x17, 0xb8, 0xbf, 0xaa, 0x66, 0xab, 0xe6, 0xfe, 0x1f, 0x00, 0x00, 0x00, | |
3129 | + 0x00, 0x00, 0xfe, 0xfd, 0xbf, 0x55, 0x55, 0xab, 0xff, 0xff, 0xff, 0xff, | |
3130 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x6f, 0x5f, | |
3131 | + 0xee, 0x1a, 0x1d, 0xc4, 0xfc, 0xff, 0xab, 0x29, 0xad, 0xa9, 0xf2, 0xff, | |
3132 | + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfb, 0x7f, 0x55, 0x55, 0x55, | |
3133 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3134 | + 0xff, 0xfe, 0x8b, 0x6e, 0x77, 0x20, 0x1e, 0xc6, 0xf6, 0xd9, 0xaa, 0xa6, | |
3135 | + 0xad, 0x6a, 0xa7, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf3, | |
3136 | + 0xff, 0xea, 0xbd, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3137 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x2b, 0x97, 0x2b, 0x5e, 0x6f, 0xe0, | |
3138 | + 0x3e, 0x5d, 0x45, 0x4a, 0x56, 0x6d, 0xc5, 0xef, 0x07, 0x00, 0x00, 0x00, | |
3139 | + 0x00, 0x00, 0xf8, 0xf7, 0xff, 0x8a, 0xa8, 0xad, 0xff, 0xff, 0xff, 0xff, | |
3140 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x6d, 0xeb, | |
3141 | + 0x23, 0x50, 0x42, 0xf3, 0xd7, 0x96, 0x56, 0xa9, 0xb4, 0x52, 0xaa, 0xf7, | |
3142 | + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe7, 0xff, 0x6a, 0x57, 0x55, | |
3143 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3144 | + 0xbf, 0x67, 0x9b, 0xe5, 0x91, 0xad, 0x87, 0x78, 0xa1, 0xa2, 0x72, 0x25, | |
3145 | + 0xad, 0x2a, 0xcb, 0xf7, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xef, | |
3146 | + 0xff, 0x2b, 0xa9, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3147 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x77, 0x7b, 0x4d, 0xe1, 0x49, 0xfb, | |
3148 | + 0xaf, 0xde, 0xa4, 0x0a, 0x55, 0x95, 0xb5, 0xfb, 0x03, 0x00, 0x00, 0x00, | |
3149 | + 0x00, 0x00, 0xf0, 0xcf, 0xff, 0xd5, 0xaa, 0x5a, 0xff, 0xff, 0xff, 0xff, | |
3150 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xe8, 0xb9, | |
3151 | + 0x4c, 0x6d, 0xe4, 0xbd, 0xd2, 0xe2, 0x96, 0xa3, 0x5a, 0xd5, 0xd4, 0xff, | |
3152 | + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xdf, 0xff, 0xd7, 0xaa, 0xad, | |
3153 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3154 | + 0x5f, 0x4b, 0xe7, 0x8d, 0x8f, 0x79, 0xf2, 0xaf, 0x2a, 0x29, 0xaa, 0x13, | |
3155 | + 0x4f, 0xa5, 0xea, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x9f, | |
3156 | + 0xff, 0x2b, 0xad, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3157 | + 0xff, 0xff, 0xff, 0xff, 0xf7, 0xfd, 0x72, 0xe4, 0x05, 0x7c, 0xf6, 0x55, | |
3158 | + 0x55, 0xad, 0xb3, 0x48, 0x61, 0x6d, 0xf5, 0xff, 0x00, 0x00, 0x00, 0x00, | |
3159 | + 0x00, 0x00, 0xe0, 0x9f, 0xff, 0xb7, 0xaa, 0x6a, 0xff, 0xff, 0xff, 0xff, | |
3160 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x97, 0xff, 0x74, | |
3161 | + 0xca, 0x6e, 0x76, 0xad, 0xaa, 0xaa, 0x6a, 0xb2, 0x5c, 0x59, 0xe9, 0xff, | |
3162 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0xff, 0x57, 0xab, 0xad, | |
3163 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, | |
3164 | + 0xd9, 0xd5, 0x7e, 0x0c, 0x6e, 0xff, 0x07, 0xb0, 0xaa, 0x54, 0x29, 0x53, | |
3165 | + 0xa5, 0x4a, 0xea, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, | |
3166 | + 0xff, 0x5f, 0xa9, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3167 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0x6e, 0x3b, 0x90, 0xb5, 0xeb, 0x67, 0x54, | |
3168 | + 0x5d, 0x55, 0x6d, 0xd5, 0x5a, 0xa9, 0xfa, 0x7f, 0x00, 0x00, 0x00, 0x00, | |
3169 | + 0x00, 0x00, 0xc0, 0x3f, 0xff, 0x57, 0xdb, 0xaa, 0xff, 0xff, 0xff, 0xff, | |
3170 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x6f, 0xe7, 0xdf, 0xc9, | |
3171 | + 0xd9, 0x79, 0x7b, 0x56, 0x4a, 0x95, 0xaa, 0x14, 0x2a, 0x55, 0xf5, 0x3f, | |
3172 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0xfe, 0xdf, 0xaa, 0xd6, | |
3173 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, | |
3174 | + 0xb7, 0x9d, 0xfb, 0xc4, 0xdc, 0x7f, 0x7f, 0xaa, 0xaa, 0x6a, 0x25, 0x6d, | |
3175 | + 0xab, 0x4a, 0xfa, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, | |
3176 | + 0xfe, 0xbf, 0xda, 0x5a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3177 | + 0xff, 0xff, 0xff, 0xf7, 0xdd, 0xef, 0xff, 0x74, 0xde, 0xfb, 0x5f, 0xaa, | |
3178 | + 0xaa, 0x56, 0x99, 0xaa, 0xaa, 0xaa, 0xfa, 0x3f, 0x00, 0x00, 0x00, 0x00, | |
3179 | + 0x00, 0x00, 0x80, 0x7f, 0xfe, 0x5f, 0x55, 0x6b, 0xff, 0xff, 0xff, 0xff, | |
3180 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xcf, 0xea, 0x6e, 0x66, | |
3181 | + 0xff, 0xbb, 0x3f, 0x54, 0xad, 0xaa, 0x1a, 0x4d, 0xa5, 0x54, 0xfd, 0x1f, | |
3182 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0xfe, 0xbf, 0x6d, 0xad, | |
3183 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, | |
3184 | + 0xe7, 0xbf, 0x3f, 0xdb, 0xf7, 0xea, 0x0b, 0xa9, 0xaa, 0xaa, 0x5d, 0x75, | |
3185 | + 0xad, 0x52, 0xfd, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, | |
3186 | + 0xfe, 0xdf, 0x56, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3187 | + 0xff, 0xff, 0xbf, 0x7f, 0x5f, 0xed, 0x1f, 0x8a, 0x3e, 0xbf, 0xce, 0xab, | |
3188 | + 0x56, 0xb5, 0x4c, 0x95, 0x4a, 0x95, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, | |
3189 | + 0x00, 0x00, 0x80, 0xff, 0xfc, 0x7f, 0xb5, 0xb5, 0xff, 0xff, 0xff, 0xff, | |
3190 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xe5, 0xe6, 0x0b, 0xf3, | |
3191 | + 0xbf, 0xbe, 0x7f, 0xa9, 0xaa, 0xaa, 0x4e, 0x6b, 0x53, 0x52, 0xdf, 0x1f, | |
3192 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xfc, 0xbf, 0xd6, 0x56, | |
3193 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, | |
3194 | + 0x5d, 0xf3, 0x07, 0xfa, 0x5b, 0x47, 0x57, 0xad, 0x5a, 0x75, 0x4a, 0x55, | |
3195 | + 0x49, 0xa9, 0xde, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, | |
3196 | + 0xfc, 0x7f, 0x6b, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3197 | + 0xff, 0xff, 0xef, 0x7a, 0x4b, 0x7b, 0x01, 0xfd, 0x4d, 0xf2, 0x53, 0x55, | |
3198 | + 0x57, 0x57, 0x61, 0x5b, 0xad, 0xac, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, | |
3199 | + 0x00, 0x00, 0x00, 0xff, 0xfc, 0xbf, 0xb5, 0x96, 0xff, 0xff, 0xff, 0xff, | |
3200 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfd, 0x01, 0xdb, | |
3201 | + 0xae, 0xe5, 0x4a, 0x55, 0x55, 0xb5, 0xaf, 0xa5, 0xaa, 0x22, 0xdf, 0x0f, | |
3202 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0xff, 0x5a, 0xfb, | |
3203 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7d, 0x6f, | |
3204 | + 0xf5, 0xbd, 0x40, 0xfc, 0x65, 0x35, 0x35, 0xcd, 0xaa, 0xd5, 0xa5, 0xba, | |
3205 | + 0x4a, 0xaa, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, | |
3206 | + 0xfc, 0x7f, 0x4d, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3207 | + 0xff, 0xff, 0xef, 0xbf, 0x57, 0xf6, 0x41, 0x57, 0x91, 0xca, 0x4a, 0xb5, | |
3208 | + 0x56, 0x55, 0xaa, 0xcd, 0x5a, 0xd5, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, | |
3209 | + 0x00, 0x00, 0x00, 0xff, 0xfc, 0xff, 0x5a, 0xb7, 0xff, 0xff, 0xff, 0xff, | |
3210 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xcf, 0x3e, 0x7f, 0x00, 0x60, | |
3211 | + 0x57, 0x6b, 0x75, 0x55, 0xb5, 0xcb, 0xba, 0xd5, 0x2a, 0xc9, 0xdf, 0x0f, | |
3212 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x7f, 0xeb, 0xd5, | |
3213 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, | |
3214 | + 0x9f, 0x7f, 0x00, 0x68, 0x55, 0x54, 0x95, 0x5a, 0x55, 0xaa, 0x4a, 0x75, | |
3215 | + 0x53, 0xd5, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, | |
3216 | + 0xfe, 0xff, 0xad, 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3217 | + 0xff, 0x7f, 0xef, 0x73, 0xc7, 0xb7, 0xd0, 0x5c, 0xdd, 0xa5, 0xaa, 0x6d, | |
3218 | + 0xaa, 0x6a, 0xea, 0x56, 0x55, 0xf5, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, | |
3219 | + 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x7f, 0xb5, 0xbe, 0xff, 0xff, 0xff, 0xff, | |
3220 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfd, 0xed, 0xc7, 0x7d, 0x83, 0x8b, | |
3221 | + 0x2e, 0xd5, 0xaa, 0x2a, 0xb5, 0x5a, 0x5d, 0xdb, 0x56, 0xf5, 0x9f, 0x0f, | |
3222 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x7f, 0xdb, 0xa5, | |
3223 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7c, 0xff, | |
3224 | + 0xe3, 0x7f, 0x47, 0xd9, 0xa6, 0x6a, 0xab, 0xd6, 0xaa, 0x2a, 0x55, 0x55, | |
3225 | + 0xaa, 0xe4, 0xbf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, | |
3226 | + 0xff, 0x7f, 0xad, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3227 | + 0xff, 0x37, 0xec, 0xff, 0xf2, 0xbf, 0x83, 0x96, 0x53, 0xa9, 0xaa, 0x55, | |
3228 | + 0xad, 0x56, 0xad, 0xd5, 0x55, 0xeb, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, | |
3229 | + 0x00, 0x00, 0x00, 0x0e, 0xfc, 0x7f, 0x6b, 0xad, 0xff, 0xff, 0xff, 0xff, | |
3230 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x3e, 0x6d, 0xfb, 0xce, 0xe1, 0x52, | |
3231 | + 0x59, 0xad, 0xaa, 0x9a, 0xaa, 0x5a, 0x6b, 0x5d, 0xaa, 0xea, 0x3f, 0x0f, | |
3232 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x7f, 0x5d, 0xeb, | |
3233 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x3f, 0xfb, | |
3234 | + 0xff, 0xf3, 0x51, 0xcd, 0x56, 0x55, 0xd5, 0x6a, 0xb5, 0x56, 0xb5, 0x56, | |
3235 | + 0xab, 0xea, 0x7f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, | |
3236 | + 0xe7, 0xff, 0xd6, 0x5a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3237 | + 0xff, 0x4f, 0xcf, 0xcf, 0xdd, 0xe7, 0x58, 0x62, 0x52, 0xd5, 0xb6, 0x96, | |
3238 | + 0xaa, 0x55, 0xad, 0x69, 0x55, 0xfb, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, | |
3239 | + 0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x6b, 0x6b, 0xff, 0xff, 0xff, 0xff, | |
3240 | + 0xff, 0xff, 0xff, 0xff, 0x7f, 0x8b, 0xef, 0xc7, 0x7f, 0x21, 0xc4, 0x96, | |
3241 | + 0xad, 0xaa, 0xaa, 0x6a, 0xad, 0xaa, 0x56, 0xaf, 0x31, 0xf5, 0xff, 0x00, | |
3242 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0xb5, 0xb5, | |
3243 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xfb, 0xf3, | |
3244 | + 0xdd, 0x61, 0xee, 0xd4, 0x56, 0x6d, 0xd5, 0x2a, 0xb5, 0xd6, 0xda, 0xaa, | |
3245 | + 0x9c, 0x75, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, | |
3246 | + 0xff, 0xff, 0xae, 0xae, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3247 | + 0xff, 0xe3, 0xab, 0x7b, 0x7f, 0x20, 0xfa, 0x41, 0xd5, 0x52, 0x55, 0xd5, | |
3248 | + 0x56, 0x55, 0x6b, 0x55, 0x6b, 0x15, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, | |
3249 | + 0x00, 0x00, 0x80, 0xff, 0xff, 0xbf, 0xf5, 0xb5, 0xff, 0xff, 0xff, 0xff, | |
3250 | + 0xff, 0xff, 0xff, 0xff, 0xbf, 0xe1, 0xf6, 0xff, 0x4f, 0x20, 0xac, 0xb4, | |
3251 | + 0xaa, 0xb6, 0x6d, 0x55, 0x55, 0xab, 0xad, 0xad, 0x34, 0x15, 0xc0, 0x07, | |
3252 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xbf, 0x56, 0xd5, | |
3253 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0xfb, 0xda, | |
3254 | + 0x37, 0x40, 0x2a, 0xab, 0xb5, 0x5a, 0xb5, 0x55, 0xb5, 0x6a, 0x55, 0x55, | |
3255 | + 0xab, 0x15, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xff, | |
3256 | + 0xff, 0x4f, 0xdb, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3257 | + 0xef, 0xf3, 0xfc, 0xff, 0x11, 0x52, 0x55, 0x69, 0xad, 0xaa, 0x96, 0xaa, | |
3258 | + 0xd6, 0xaa, 0x76, 0x5d, 0x55, 0x0d, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, | |
3259 | + 0x00, 0x00, 0x0c, 0xff, 0xff, 0x87, 0x55, 0xab, 0xff, 0xff, 0xff, 0xff, | |
3260 | + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf3, 0x7e, 0xff, 0x19, 0xd2, 0xd1, 0xb5, | |
3261 | + 0x55, 0x55, 0xab, 0xaa, 0xaa, 0xb5, 0x55, 0x53, 0xb5, 0x0a, 0x00, 0x7e, | |
3262 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0xff, 0x87, 0xfa, 0xed, | |
3263 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x38, 0xff, 0xef, | |
3264 | + 0x9e, 0xad, 0xd4, 0x54, 0xd5, 0x76, 0x6d, 0x55, 0x75, 0xd5, 0x56, 0x6d, | |
3265 | + 0x95, 0x0d, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfe, | |
3266 | + 0xff, 0x83, 0x2f, 0x35, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3267 | + 0x5f, 0xdc, 0xbf, 0xff, 0x01, 0x42, 0xae, 0x5b, 0x6d, 0x55, 0xab, 0x52, | |
3268 | + 0x55, 0xb5, 0xda, 0x96, 0xca, 0x0e, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, | |
3269 | + 0x00, 0x00, 0x06, 0xfe, 0xff, 0x81, 0xd5, 0xda, 0xff, 0xff, 0xff, 0xff, | |
3270 | + 0xff, 0xff, 0xff, 0xff, 0x3d, 0xfe, 0xfb, 0x7b, 0x4d, 0x03, 0xb5, 0xd2, | |
3271 | + 0x55, 0xab, 0x55, 0x55, 0xad, 0xda, 0x56, 0xb3, 0x5a, 0x0d, 0x00, 0xf8, | |
3272 | + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xfc, 0xff, 0x80, 0x6d, 0xd7, | |
3273 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe8, 0xdf, 0xef, | |
3274 | + 0xa7, 0x9d, 0xd4, 0x6d, 0xaa, 0xda, 0xaa, 0xaa, 0xd5, 0x56, 0xab, 0xdc, | |
3275 | + 0xd6, 0x0e, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf8, | |
3276 | + 0x7f, 0x80, 0xb6, 0x6d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3277 | + 0x8e, 0xfd, 0xfe, 0xff, 0xd1, 0xdd, 0x75, 0x55, 0xd9, 0x6a, 0x6d, 0x55, | |
3278 | + 0x6d, 0x75, 0xb5, 0xa5, 0xab, 0x07, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, | |
3279 | + 0x00, 0x00, 0x06, 0xf0, 0x1f, 0x80, 0xdb, 0xb5, 0xff, 0xff, 0xff, 0xff, | |
3280 | + 0xff, 0xff, 0xff, 0xff, 0x4f, 0xf6, 0xff, 0x7d, 0x28, 0xb7, 0x2a, 0xb5, | |
3281 | + 0x6a, 0xad, 0xaa, 0x5a, 0xb5, 0x56, 0xab, 0xba, 0xea, 0x07, 0x00, 0xe0, | |
3282 | + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x07, 0x80, 0xb5, 0xae, | |
3283 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x23, 0x7e, 0xef, 0x5f, | |
3284 | + 0x38, 0x57, 0x5a, 0x93, 0x56, 0xad, 0xad, 0xaa, 0x5d, 0xab, 0xba, 0xca, | |
3285 | + 0xff, 0x03, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, | |
3286 | + 0x00, 0x80, 0xdf, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, | |
3287 | + 0xb2, 0xff, 0xff, 0xfe, 0xe8, 0xb5, 0xca, 0xea, 0xda, 0xb6, 0x6a, 0xad, | |
3288 | + 0x56, 0x75, 0x4b, 0xf5, 0x78, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, | |
3289 | + 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x6b, 0x5f, 0xff, 0xff, 0xff, 0xff, | |
3290 | + 0xff, 0xff, 0xff, 0xdf, 0xff, 0x53, 0xf7, 0x6f, 0x6a, 0xad, 0xaa, 0xaa, | |
3291 | + 0x6a, 0xd5, 0x56, 0xab, 0xda, 0xae, 0x6a, 0x3d, 0x00, 0x00, 0x00, 0x80, | |
3292 | + 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xb7, 0x6a, | |
3293 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8b, 0x7f, 0x3f, | |
3294 | + 0xd3, 0x5a, 0x67, 0x5b, 0x55, 0x55, 0x55, 0x55, 0x57, 0x55, 0x5d, 0x35, | |
3295 | + 0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, | |
3296 | + 0x00, 0x80, 0xdf, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, | |
3297 | + 0x6d, 0xc3, 0xff, 0xd3, 0x51, 0xad, 0xba, 0xaa, 0xb6, 0xb6, 0xb6, 0xd5, | |
3298 | + 0xb5, 0xd5, 0x66, 0x35, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, | |
3299 | + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd7, 0xd6, 0xff, 0xff, 0xff, 0xff, | |
3300 | + 0xff, 0xff, 0xff, 0xbf, 0xff, 0xe1, 0xb7, 0xc0, 0xaa, 0xb6, 0x4b, 0xd5, | |
3301 | + 0xda, 0x5a, 0xab, 0xb6, 0xd6, 0xb6, 0xba, 0x3a, 0x00, 0x00, 0x00, 0x00, | |
3302 | + 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7f, 0x75, | |
3303 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x97, 0xf0, 0xfe, 0x71, | |
3304 | + 0x5c, 0xab, 0x59, 0x5b, 0x55, 0xad, 0xb5, 0xaa, 0x75, 0xb5, 0x56, 0x7b, | |
3305 | + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, | |
3306 | + 0x00, 0x00, 0x7e, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, | |
3307 | + 0x8e, 0xfa, 0xff, 0x32, 0xd6, 0xda, 0x6a, 0x55, 0x5d, 0xd5, 0x5a, 0x5b, | |
3308 | + 0x5b, 0xab, 0x59, 0x7d, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, | |
3309 | + 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xfe, 0xad, 0xff, 0xff, 0xff, 0xff, | |
3310 | + 0xff, 0xff, 0xff, 0xfa, 0x0f, 0xbd, 0x37, 0x9d, 0xd6, 0xd6, 0x5a, 0xad, | |
3311 | + 0xd5, 0xb6, 0xee, 0xea, 0x6d, 0x55, 0xad, 0x75, 0x00, 0x00, 0x00, 0x00, | |
3312 | + 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xf8, 0xb5, | |
3313 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd, 0x4b, 0xff, 0x1e, 0x95, | |
3314 | + 0x2d, 0xab, 0x66, 0x55, 0xad, 0xaa, 0x55, 0xad, 0xb6, 0xba, 0xd5, 0xea, | |
3315 | + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x40, 0x0e, 0x00, | |
3316 | + 0x00, 0x00, 0x80, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xee, | |
3317 | + 0xe7, 0xdf, 0x07, 0x77, 0x75, 0x75, 0x2f, 0xd5, 0xd6, 0x5a, 0xb5, 0xb6, | |
3318 | + 0x55, 0xd5, 0x56, 0xfb, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, | |
3319 | + 0x00, 0x60, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xff, 0xff, 0xff, 0xff, | |
3320 | + 0xff, 0xff, 0x77, 0xf8, 0xe3, 0x7f, 0x83, 0x4d, 0xaf, 0x55, 0xa5, 0x55, | |
3321 | + 0x55, 0xad, 0x5b, 0xdb, 0x7e, 0x5b, 0x6b, 0xed, 0x00, 0x00, 0x00, 0x00, | |
3322 | + 0xe0, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xbc, | |
3323 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfe, 0xf0, 0xf6, 0x81, 0xd4, | |
3324 | + 0xe9, 0xb6, 0xaa, 0xd5, 0xb6, 0xb6, 0x6a, 0x55, 0x8b, 0xaa, 0xba, 0xe5, | |
3325 | + 0x01, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x0e, 0x00, | |
3326 | + 0x00, 0x00, 0x00, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xdf, | |
3327 | + 0xfd, 0xff, 0x6d, 0xb8, 0xae, 0x6a, 0xd5, 0x56, 0xab, 0xd5, 0xad, 0xed, | |
3328 | + 0x76, 0x75, 0xab, 0xec, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, | |
3329 | + 0x00, 0xfc, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xb8, 0xff, 0xff, 0xff, 0xff, | |
3330 | + 0xff, 0xff, 0x8b, 0xff, 0xff, 0x3f, 0x61, 0xad, 0x6a, 0x5d, 0x6d, 0xd5, | |
3331 | + 0xda, 0x6e, 0x6d, 0xb5, 0xae, 0x5e, 0xad, 0xe6, 0x01, 0x00, 0x00, 0x00, | |
3332 | + 0x80, 0x01, 0x00, 0x00, 0x00, 0xfe, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xdc, | |
3333 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xed, 0xdd, 0x76, 0x59, 0x55, | |
3334 | + 0xad, 0xd5, 0x96, 0x5e, 0x55, 0xb5, 0xaa, 0xae, 0xa7, 0xaa, 0x65, 0xf3, | |
3335 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x7f, 0x0f, 0x00, | |
3336 | + 0x00, 0x00, 0x00, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfb, 0xff, | |
3337 | + 0xff, 0xbf, 0x3c, 0xf5, 0x6b, 0x6d, 0x4b, 0x53, 0xdb, 0xd5, 0x6e, 0xb3, | |
3338 | + 0xb5, 0x76, 0x6d, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, | |
3339 | + 0xc0, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xff, 0xff, 0xff, | |
3340 | + 0xff, 0xff, 0xfb, 0xef, 0xfe, 0xff, 0x1e, 0x2d, 0xbd, 0x56, 0xab, 0xad, | |
3341 | + 0xad, 0x6e, 0xb5, 0xdd, 0x5d, 0x5b, 0x55, 0xf7, 0x00, 0x00, 0x00, 0x00, | |
3342 | + 0x00, 0xe6, 0x01, 0x00, 0xf0, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x6f, | |
3343 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfd, 0xfd, 0x77, 0x57, 0xa9, 0xb6, | |
3344 | + 0x4d, 0x6b, 0xad, 0xaa, 0xda, 0xaa, 0x55, 0xd5, 0xa6, 0xd1, 0xdd, 0x72, | |
3345 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x07, 0x00, 0xff, 0x7f, 0x0f, 0x00, | |
3346 | + 0x00, 0x00, 0xf0, 0x6b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, | |
3347 | + 0xfe, 0x7f, 0xed, 0xd5, 0xd6, 0x9a, 0x6a, 0xb5, 0x5d, 0xdb, 0xde, 0xb6, | |
3348 | + 0xda, 0x5e, 0xab, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xff, 0xff, | |
3349 | + 0xff, 0x7f, 0x07, 0x00, 0x00, 0x00, 0xfc, 0xb6, 0xff, 0xff, 0xff, 0xff, | |
3350 | + 0xff, 0x77, 0xff, 0x6f, 0xbf, 0x3f, 0x35, 0x57, 0xab, 0x6d, 0xad, 0x5a, | |
3351 | + 0x6d, 0x6b, 0x6b, 0xdb, 0xab, 0x54, 0xd5, 0x3a, 0x00, 0x00, 0x00, 0x00, | |
3352 | + 0x00, 0x9c, 0xff, 0xff, 0xff, 0x3f, 0x07, 0x00, 0x00, 0x80, 0x7f, 0xdb, | |
3353 | + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xbf, 0xfb, 0x9b, 0xd4, 0xba, | |
3354 | + 0x6d, 0x52, 0x57, 0xad, 0xb5, 0x6a, 0xad, 0xb6, 0x5a, 0xb7, 0xb5, 0x3a, | |
3355 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xff, 0xff, 0xff, 0x3f, 0x07, 0x00, | |
3356 | + 0x00, 0xf0, 0xd7, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xff, 0xdd, | |
3357 | + 0xff, 0xcf, 0xdc, 0xda, 0xea, 0x5b, 0xab, 0xaa, 0xde, 0x5d, 0xeb, 0xda, | |
3358 | + 0xea, 0x5a, 0xad, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xff, 0xff, | |
3359 | + 0xff, 0x9f, 0x07, 0x00, 0x00, 0xfc, 0x5b, 0xdb, 0xff, 0xff, 0xff, 0xff, | |
3360 | + 0xff, 0xf7, 0xfe, 0xb7, 0x7f, 0x77, 0xb7, 0xae, 0x56, 0x6d, 0x55, 0x6d, | |
3361 | + 0xab, 0xaa, 0x5d, 0xaf, 0xad, 0xd6, 0xaa, 0xf6, 0x00, 0x00, 0x00, 0x00, | |
3362 | + 0x00, 0xbc, 0xff, 0xff, 0xff, 0x9f, 0x07, 0x00, 0x00, 0xbf, 0xed, 0xb6, | |
3363 | + 0xff, 0xff, 0xff, 0xff, 0xbf, 0x7f, 0xef, 0xff, 0xbb, 0x7f, 0xdb, 0x56, | |
3364 | + 0x7b, 0x55, 0x55, 0xab, 0xd5, 0xb6, 0xd6, 0xea, 0x6a, 0xab, 0xb6, 0xea, | |
3365 | + 0x07, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xff, 0xff, 0xff, 0x9f, 0x0f, 0x00, | |
3366 | + 0x80, 0xbf, 0x6d, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x7f, 0xfd, | |
3367 | + 0xff, 0xdc, 0x6e, 0x77, 0xd5, 0x56, 0x6b, 0x6d, 0x6d, 0xdb, 0x6b, 0xb7, | |
3368 | + 0xb6, 0x5a, 0x55, 0xeb, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xff, 0xff, | |
3369 | + 0xff, 0xbf, 0x0f, 0x00, 0xc0, 0xd7, 0xb6, 0x6d, 0xff, 0xff, 0xff, 0xff, | |
3370 | + 0xef, 0xbd, 0x9f, 0xdd, 0x5d, 0xef, 0xb6, 0xdb, 0x56, 0xaa, 0x5a, 0xb5, | |
3371 | + 0xb6, 0x55, 0xbd, 0xb5, 0xaa, 0xad, 0x6d, 0xad, 0xfe, 0x0f, 0x00, 0x00, | |
3372 | + 0x00, 0xde, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf0, 0xdf, 0xb6, 0x6d, | |
3373 | + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xab, 0xfe, 0x7f, 0x56, 0xab, 0xae, | |
3374 | + 0xfa, 0x56, 0xab, 0x56, 0xd5, 0xda, 0xd5, 0xde, 0xdd, 0x56, 0x55, 0x6b, | |
3375 | + 0xd5, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, | |
3376 | + 0xf8, 0x6b, 0xdb, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xdf, 0x3f, 0x3f, | |
3377 | + 0xbd, 0xb7, 0xb5, 0xab, 0x57, 0x55, 0xd5, 0xea, 0xb6, 0x6a, 0x6d, 0x6b, | |
3378 | + 0xd5, 0xaa, 0xb6, 0xb5, 0x5a, 0xfd, 0x1f, 0x00, 0x00, 0xff, 0x57, 0xf5, | |
3379 | + 0xb6, 0xdd, 0x1f, 0x00, 0xfc, 0xb5, 0xd5, 0xaa, 0xff, 0xff, 0xff, 0xff, | |
3380 | + 0xde, 0xbf, 0x9e, 0x3f, 0xef, 0x7d, 0xed, 0xd6, 0x5a, 0xb5, 0xaa, 0xae, | |
3381 | + 0x6d, 0xb5, 0xb6, 0x5d, 0x6d, 0x55, 0xab, 0xaa, 0xd6, 0x96, 0xff, 0x01, | |
3382 | + 0x80, 0x7f, 0x55, 0x2b, 0x5b, 0xf5, 0x3f, 0x00, 0xff, 0xda, 0x76, 0xef, | |
3383 | + 0xff, 0xff, 0xff, 0xff, 0xee, 0xcb, 0xe7, 0xd7, 0xaf, 0xaa, 0xb6, 0x55, | |
3384 | + 0x6d, 0x55, 0xad, 0x6a, 0xb5, 0xdd, 0xb6, 0xd6, 0xb6, 0xb6, 0xac, 0xad, | |
3385 | + 0x55, 0x1b, 0xfa, 0x0f, 0xe0, 0x5f, 0x53, 0x6d, 0xe9, 0x76, 0xff, 0xe0, | |
3386 | + 0xdf, 0x56, 0x5b, 0x6b, 0xff, 0xff, 0xff, 0x7f, 0xef, 0xdf, 0xe7, 0xff, | |
3387 | + 0xef, 0xdf, 0x6d, 0xef, 0x55, 0xad, 0x6a, 0xb7, 0x56, 0x55, 0x6d, 0xbb, | |
3388 | + 0x59, 0xab, 0xa5, 0xb6, 0x6a, 0x6d, 0xd5, 0xff, 0xf8, 0xdb, 0xb2, 0x55, | |
3389 | + 0x57, 0xcd, 0xff, 0xff, 0xbf, 0xed, 0xb5, 0xb5, 0xff, 0xff, 0xff, 0xbf, | |
3390 | + 0x7b, 0x6f, 0xf5, 0x7e, 0x75, 0x69, 0xed, 0xb5, 0xb6, 0xd6, 0xaa, 0xd5, | |
3391 | + 0x5b, 0xd5, 0xb6, 0xad, 0x6e, 0xd5, 0xbe, 0xaa, 0xad, 0x35, 0x55, 0xff, | |
3392 | + 0xff, 0x6d, 0x59, 0xb5, 0x75, 0xb7, 0xfe, 0xff, 0xd7, 0xb6, 0xb6, 0xbd, | |
3393 | + 0xff, 0xff, 0xff, 0x7f, 0xff, 0xfb, 0xf5, 0xdb, 0xab, 0x56, 0x5b, 0x6b, | |
3394 | + 0xad, 0x52, 0xed, 0x5a, 0xb5, 0x6d, 0xdb, 0xd6, 0xaa, 0x2a, 0x57, 0xdb, | |
3395 | + 0xb6, 0x5a, 0xd5, 0xfd, 0xff, 0xaa, 0x52, 0x5b, 0xad, 0xda, 0xfe, 0xff, | |
3396 | + 0x7b, 0xdb, 0xea, 0xd6, 0xff, 0xff, 0xff, 0xaf, 0xdd, 0xbf, 0x72, 0x7f, | |
3397 | + 0xdb, 0xfe, 0xed, 0xba, 0x55, 0x55, 0xb5, 0xae, 0xd6, 0xaa, 0x6d, 0xbb, | |
3398 | + 0xae, 0x6d, 0x6d, 0x55, 0xad, 0x75, 0x5b, 0xed, 0xbf, 0xea, 0xa9, 0x69, | |
3399 | + 0xb7, 0x6b, 0xf5, 0xff, 0x55, 0xdb, 0x7e, 0xdb, 0xff, 0xff, 0xff, 0x3b, | |
3400 | + 0xfe, 0xf6, 0xf1, 0xd7, 0xbe, 0x55, 0xbb, 0xae, 0x6a, 0xd7, 0xaa, 0x6a, | |
3401 | + 0x5b, 0x75, 0xab, 0x55, 0x7b, 0x55, 0x55, 0xb7, 0x55, 0xb3, 0xaa, 0xd6, | |
3402 | + 0x5a, 0x55, 0xa5, 0xb6, 0xd5, 0x5a, 0xb5, 0xdb, 0xba, 0x6d, 0xab, 0xb6, | |
3403 | + 0xff, 0xff, 0xff, 0x8f, 0xef, 0xff, 0xb8, 0xfa, 0xdf, 0xd5, 0xde, 0xb5, | |
3404 | + 0xad, 0xda, 0xaa, 0xab, 0x6a, 0x5b, 0x5d, 0xbd, 0x8a, 0xb6, 0xdd, 0xda, | |
3405 | + 0x76, 0xdb, 0xaa, 0xaa, 0xaa, 0x76, 0x55, 0x55, 0x75, 0x55, 0xd5, 0x6a, | |
3406 | + 0xd7, 0xb6, 0x6d, 0xdb, 0xff, 0xff, 0xff, 0xdb, 0x7f, 0xbe, 0xf1, 0x6f, | |
3407 | + 0xab, 0x7d, 0xab, 0x6e, 0xd7, 0x6d, 0x6b, 0xb5, 0xad, 0xaa, 0xab, 0x57, | |
3408 | + 0xb7, 0xaa, 0x6a, 0xab, 0xaa, 0xa2, 0xda, 0xd6, 0x56, 0x55, 0xa5, 0x6d, | |
3409 | + 0x5b, 0xfb, 0x6d, 0xbb, 0x5a, 0xdb, 0xb6, 0xb6, 0xff, 0xff, 0x7f, 0xcf, | |
3410 | + 0x36, 0xf7, 0xb8, 0x77, 0xff, 0xd6, 0xbb, 0xb5, 0x69, 0x35, 0xb5, 0x5d, | |
3411 | + 0x6d, 0xbb, 0xda, 0xad, 0x55, 0x6b, 0xab, 0xda, 0xb5, 0xbd, 0xaa, 0x5a, | |
3412 | + 0xb5, 0xea, 0xaa, 0x55, 0xad, 0x2a, 0x6a, 0xad, 0xd5, 0x6d, 0xb3, 0xdb }; | |
3413 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/xbm2lcd.pl linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/xbm2lcd.pl | |
3414 | --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/xbm2lcd.pl 1970-01-01 10:00:00.000000000 +1000 | |
3415 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/xbm2lcd.pl 2003-10-20 09:11:56.250761408 +1000 | |
3416 | @@ -0,0 +1,6 @@ | |
3417 | + | |
3418 | +$_ = join("", <>); | |
3419 | + | |
3420 | +s/(0x[0-9a-f]{2})/sprintf("0x%.2x",ord(pack("b8",unpack("B8",chr(~hex($1)&0377)))))/gei; | |
3421 | + | |
3422 | +print $_; | |
3423 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/crt0.S linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/crt0.S | |
3424 | --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/crt0.S 1970-01-01 10:00:00.000000000 +1000 | |
3425 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/crt0.S 2003-10-20 09:11:56.247761864 +1000 | |
3426 | @@ -0,0 +1,78 @@ | |
3427 | +/* | |
3428 | + * linux/arch/m68knommu/platform/MC68VZ328/de2/zimage/crt0.S | |
3429 | + * | |
3430 | + * Copyright (C) 2002 Georges Menie | |
3431 | + * | |
3432 | + * This file is subject to the terms and conditions of the GNU General Public | |
3433 | + * License. See the file COPYING in the main directory of this archive | |
3434 | + * for more details. | |
3435 | + */ | |
3436 | + | |
3437 | + .title "de2/zimage/crt0.S" | |
3438 | + | |
3439 | + .extern unzip_image | |
3440 | + .extern __stack | |
3441 | + .extern __text_end | |
3442 | + .extern __data_start | |
3443 | + .extern __data_end | |
3444 | + .extern __bss_start | |
3445 | + .extern __bss_end | |
3446 | + .extern start_image | |
3447 | + | |
3448 | + .text | |
3449 | + .global start | |
3450 | +start: | |
3451 | + | |
3452 | + /* initialize the stack */ | |
3453 | + move.l #__stack,%sp | |
3454 | + | |
3455 | + /* disable interrupts */ | |
3456 | + move.l #-1,0xfffff304 | |
3457 | + move.b #0,0xfffff300 | |
3458 | + | |
3459 | + /* initialize the data section */ | |
3460 | + lea.l __text_end,%a0 | |
3461 | + lea.l __data_start,%a1 | |
3462 | + lea.l __data_end,%a2 | |
3463 | +1: cmpa.l %a1,%a2 | |
3464 | + jbeq 2f | |
3465 | + move.l (%a0)+,(%a1)+ | |
3466 | + jbra 1b | |
3467 | +2: | |
3468 | + /* initialize the bss section */ | |
3469 | + lea.l __bss_start,%a0 | |
3470 | + lea.l __bss_end,%a1 | |
3471 | +1: cmpa.l %a0,%a1 | |
3472 | + jbeq 2f | |
3473 | + move.l #0,(%a0)+ | |
3474 | + jbra 1b | |
3475 | +2: | |
3476 | + | |
3477 | +/* | |
3478 | + * Unzip the kernel image | |
3479 | + */ | |
3480 | + jsr unzip_image | |
3481 | + | |
3482 | +/* | |
3483 | + * Start the image | |
3484 | + */ | |
3485 | + movea.l #start_image,%a0 | |
3486 | + jmp (%a0) | |
3487 | + | |
3488 | +/* | |
3489 | + * Infinite loop for exit | |
3490 | + */ | |
3491 | + .global exit | |
3492 | +exit: | |
3493 | + bra exit | |
3494 | + | |
3495 | +/* | |
3496 | + * Define putc to send a char to the UART1 | |
3497 | + */ | |
3498 | + .global putc | |
3499 | +putc: | |
3500 | +1: move.w 0xfffff906,%d0 | |
3501 | + and.w #0x2000,%d0 | |
3502 | + beq 1b | |
3503 | + move.b 7(%sp),0xfffff907 | |
3504 | + rts | |
3505 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/image.ld linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/image.ld | |
3506 | --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/image.ld 1970-01-01 10:00:00.000000000 +1000 | |
3507 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/image.ld 2003-10-20 09:11:56.247761864 +1000 | |
3508 | @@ -0,0 +1,98 @@ | |
3509 | +STARTUP(crt0.o) | |
3510 | +OUTPUT_ARCH(m68k) | |
3511 | +SEARCH_DIR(.) | |
3512 | +GROUP(-lc -lgcc) | |
3513 | +__DYNAMIC = 0; | |
3514 | + | |
3515 | +/* | |
3516 | + | |
3517 | + To test the decompression use: | |
3518 | + | |
3519 | + rom (rwx) : ORIGIN = 0x400000, LENGTH = 2M | |
3520 | + | |
3521 | + download and run the compressed zImage.bin at 0x400000. | |
3522 | + Depending on the build model (RAM,HIMEM,ROM) and | |
3523 | + the size of the kernel (either compressed or uncompressed) | |
3524 | + you might need to change this address. | |
3525 | + | |
3526 | + To generate a flashable compressed image, use: | |
3527 | + | |
3528 | + rom (rwx) : ORIGIN = <addr_in_flash>, LENGTH = <available space> | |
3529 | + | |
3530 | + store and run the compressed image at <addr_in_flash> | |
3531 | + | |
3532 | +*/ | |
3533 | + | |
3534 | +MEMORY | |
3535 | +{ | |
3536 | + ram (rwx) : ORIGIN = 0x1000, LENGTH = 64k-4k | |
3537 | + rom (rwx) : ORIGIN = 0x400000, LENGTH = 2M | |
3538 | +} | |
3539 | + | |
3540 | +PROVIDE (__stack = 4k - 4); | |
3541 | + | |
3542 | +SECTIONS | |
3543 | +{ | |
3544 | + .text : | |
3545 | + { | |
3546 | + __text_start = .; | |
3547 | + *(.text) | |
3548 | + | |
3549 | + . = ALIGN(0x4); | |
3550 | + *(.rodata) | |
3551 | + | |
3552 | + . = ALIGN(0x4); | |
3553 | + *(.gcc_except_table) | |
3554 | + | |
3555 | + . = ALIGN(0x4); | |
3556 | + *(.eh_frame) | |
3557 | + | |
3558 | + . = ALIGN(0x4); | |
3559 | + *(.lit) | |
3560 | + | |
3561 | + . = ALIGN(0x4); | |
3562 | + input_data = .; | |
3563 | + image.o | |
3564 | + input_data_end = .; | |
3565 | + | |
3566 | + . = ALIGN(0x4); | |
3567 | + __text_end = .; | |
3568 | + } > rom | |
3569 | + | |
3570 | + .data : AT(__text_end) | |
3571 | + { | |
3572 | + . = ALIGN (0x4); | |
3573 | + __data_start = .; | |
3574 | + | |
3575 | + *(.shdata) | |
3576 | + *(.data) | |
3577 | + *(.gcc_exc) | |
3578 | + | |
3579 | + . = ALIGN (0x4); | |
3580 | + __data_end = .; | |
3581 | + } > ram | |
3582 | + | |
3583 | + .bss : | |
3584 | + { | |
3585 | + . = ALIGN(0x4); | |
3586 | + __bss_start = . ; | |
3587 | + | |
3588 | + *(.shbss) | |
3589 | + *(.bss) | |
3590 | + *(COMMON) | |
3591 | + | |
3592 | + . = ALIGN(0x4); | |
3593 | + __bss_end = .; | |
3594 | + _end = .; | |
3595 | + } > ram | |
3596 | + | |
3597 | + .stab 0 (NOLOAD) : | |
3598 | + { | |
3599 | + *(.stab) | |
3600 | + } | |
3601 | + | |
3602 | + .stabstr 0 (NOLOAD) : | |
3603 | + { | |
3604 | + *(.stabstr) | |
3605 | + } | |
3606 | +} | |
3607 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/main.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/main.c | |
3608 | --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/main.c 1970-01-01 10:00:00.000000000 +1000 | |
3609 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/main.c 2003-10-20 09:11:56.247761864 +1000 | |
3610 | @@ -0,0 +1,32 @@ | |
3611 | + | |
3612 | +/* | |
3613 | + * linux/arch/m68knommu/platform/MC68VZ328/de2/zimage/main.c | |
3614 | + * | |
3615 | + * Copyright (C) 2002 Georges Menie | |
3616 | + * | |
3617 | + * This file is subject to the terms and conditions of the GNU General Public | |
3618 | + * License. See the file COPYING in the main directory of this archive | |
3619 | + * for more details. | |
3620 | + */ | |
3621 | + | |
3622 | +extern unsigned char input_data[]; | |
3623 | +extern unsigned char input_data_end[]; | |
3624 | +extern unsigned char output_data[]; | |
3625 | + | |
3626 | +void outstring (char *s) | |
3627 | +{ | |
3628 | + extern void putc (int); | |
3629 | + | |
3630 | + while (*s) | |
3631 | + putc (*s++); | |
3632 | +} | |
3633 | + | |
3634 | +void unzip_image (void) | |
3635 | +{ | |
3636 | + void memgunzip (unsigned char *dst, const unsigned char *src, | |
3637 | + unsigned int sz); | |
3638 | + | |
3639 | + outstring ("Uncompressing Linux"); | |
3640 | + memgunzip (output_data, input_data, input_data_end - input_data); | |
3641 | + outstring ("\r\nOk, booting the kernel.\r\n"); | |
3642 | +} | |
3643 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/Makefile linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/Makefile | |
3644 | --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/Makefile 1970-01-01 10:00:00.000000000 +1000 | |
3645 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/Makefile 2003-10-20 09:11:56.247761864 +1000 | |
3646 | @@ -0,0 +1,46 @@ | |
3647 | + | |
3648 | +# Runtime parameters | |
3649 | +UNZIP_ADDRESS := $(shell [ -f $(ROOTDIR)/$(LINUXDIR)/System.map ] && grep ' _stext$$' $(ROOTDIR)/$(LINUXDIR)/System.map | cut -d' ' -f1) | |
3650 | +START_ADDRESS := $(shell [ -f $(ROOTDIR)/$(LINUXDIR)/System.map ] && grep ' _start$$' $(ROOTDIR)/$(LINUXDIR)/System.map | cut -d' ' -f1) | |
3651 | + | |
3652 | +# Compiler and associated tools filenames. | |
3653 | +CC = $(CROSS_COMPILE)gcc | |
3654 | +LD = $(CROSS_COMPILE)ld | |
3655 | +OBJCOPY = $(CROSS_COMPILE)objcopy | |
3656 | + | |
3657 | +# Flags. | |
3658 | +AFLAGS = -m68000 -Wall -I$(ROOTDIR)/$(LINUXDIR)/include | |
3659 | +CFLAGS = -m68000 -Wall -O2 --omit-frame-pointer -I$(ROOTDIR)/$(LINUXDIR)/include | |
3660 | +LFLAGS = -m68000 -nostdlib -Wl,-Map=$(basename $@).map | |
3661 | + | |
3662 | +# | |
3663 | +# Targets | |
3664 | +# | |
3665 | + | |
3666 | +OBJECTS = \ | |
3667 | + main.o \ | |
3668 | + misc.o | |
3669 | + | |
3670 | +all: $(IMAGEDIR)/zImage.bin | |
3671 | + | |
3672 | +crt0.o: crt0.S | |
3673 | + $(CC) $(AFLAGS) -o $@ -c $+ | |
3674 | + | |
3675 | +image.o: $(IMAGEDIR)/image.bin | |
3676 | + tmpimage=_tmp_$$$$image; \ | |
3677 | + cat $+ | gzip -f -9 > $$tmpimage; \ | |
3678 | + $(LD) -r -o $@ -b binary $$tmpimage; \ | |
3679 | + rm -f $$tmpimage | |
3680 | + | |
3681 | +$(IMAGEDIR)/zImage.bin: crt0.o image.o ${OBJECTS} | |
3682 | + tmpprog=_tmp_$$$$prog; \ | |
3683 | + tmplnk=_tmp_$$$$lnk; \ | |
3684 | + cp image.ld $$tmplnk; \ | |
3685 | + echo "PROVIDE (output_data = 0x$(UNZIP_ADDRESS));" >> $$tmplnk; \ | |
3686 | + echo "PROVIDE (start_image = 0x$(START_ADDRESS));" >> $$tmplnk; \ | |
3687 | + $(CC) $(LFLAGS) -T $$tmplnk -o $$tmpprog ${OBJECTS}; \ | |
3688 | + $(OBJCOPY) -O binary -j .text -j .data $$tmpprog $@; \ | |
3689 | + rm -f $$tmpprog $$tmplnk | |
3690 | + | |
3691 | +clean: | |
3692 | + rm -f *.o _tmp_* | |
3693 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/misc.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/misc.c | |
3694 | --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/misc.c 1970-01-01 10:00:00.000000000 +1000 | |
3695 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/misc.c 2003-10-20 09:11:56.248761712 +1000 | |
3696 | @@ -0,0 +1,151 @@ | |
3697 | + | |
3698 | +/* | |
3699 | + * linux/arch/m68knommu/platform/MC68VZ328/de2/zimage/misc.c | |
3700 | + * | |
3701 | + * Copyright (C) 2002 Georges Menie | |
3702 | + * | |
3703 | + * This file is subject to the terms and conditions of the GNU General Public | |
3704 | + * License. See the file COPYING in the main directory of this archive | |
3705 | + * for more details. | |
3706 | + * | |
3707 | + * gunzip wrapper based on : | |
3708 | + * | |
3709 | + * arch/sh/boot/compressed/misc.c | |
3710 | + * | |
3711 | + * This is a collection of several routines from gzip-1.0.3 | |
3712 | + * adapted for Linux. | |
3713 | + * | |
3714 | + * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994 | |
3715 | + * | |
3716 | + * Adapted for SH by Stuart Menefy, Aug 1999 | |
3717 | + * | |
3718 | + * Modified to use standard LinuxSH BIOS by Greg Banks 7Jul2000 | |
3719 | + */ | |
3720 | + | |
3721 | +/* | |
3722 | + * gzip declarations | |
3723 | + */ | |
3724 | + | |
3725 | +#define NULL 0 | |
3726 | + | |
3727 | +#define OF(args) args | |
3728 | +#define STATIC static | |
3729 | + | |
3730 | +#define memzero(s, n) memset ((s), 0, (n)) | |
3731 | + | |
3732 | +void outstring (const char *); | |
3733 | +void exit (int); | |
3734 | + | |
3735 | +typedef unsigned char uch; | |
3736 | +typedef unsigned short ush; | |
3737 | +typedef unsigned long ulg; | |
3738 | + | |
3739 | +#define WSIZE 0x8000 /* Window size must be at least 32k, */ | |
3740 | + /* and a power of two */ | |
3741 | + | |
3742 | +static uch window[WSIZE]; /* Sliding window buffer */ | |
3743 | + | |
3744 | +static ulg inptr = 0; /* index of next byte to be processed in inbuf */ | |
3745 | +static ulg outcnt = 0; /* bytes in output buffer */ | |
3746 | +static ulg bytes_out = 0; | |
3747 | + | |
3748 | +/* Diagnostic functions */ | |
3749 | +#define Assert(cond,msg) | |
3750 | +#define Trace(x) | |
3751 | +#define Tracev(x) | |
3752 | +#define Tracevv(x) | |
3753 | +#define Tracec(c,x) | |
3754 | +#define Tracecv(c,x) | |
3755 | + | |
3756 | +static void flush_window (void); | |
3757 | +static void *malloc (int size); | |
3758 | +static void free (void *where); | |
3759 | +static void error (char *m); | |
3760 | +static void gzip_mark (void **); | |
3761 | +static void gzip_release (void **); | |
3762 | + | |
3763 | +static const unsigned char *data_in; | |
3764 | +static unsigned char *data_out; | |
3765 | +static unsigned int data_in_len; | |
3766 | + | |
3767 | +#define get_byte() ((inptr < data_in_len)?data_in[inptr++]:(error("ran out of input data\n"),0)) | |
3768 | +#define put_byte(c) *data_out++ = c | |
3769 | + | |
3770 | +#include "../../../../../../lib/inflate.c" | |
3771 | + | |
3772 | +#define HEAPSIZE (24*1024) | |
3773 | +static unsigned char heap[HEAPSIZE]; | |
3774 | +static unsigned char *free_mem_ptr = heap; | |
3775 | + | |
3776 | +static void *malloc (int size) | |
3777 | +{ | |
3778 | + void *p; | |
3779 | + | |
3780 | + if (size < 0) | |
3781 | + error ("Malloc error\n"); | |
3782 | + if (free_mem_ptr == 0) | |
3783 | + error ("Memory error\n"); | |
3784 | + | |
3785 | + free_mem_ptr = (unsigned char *) (((unsigned long) free_mem_ptr + 3) & ~3); /* Align */ | |
3786 | + | |
3787 | + p = free_mem_ptr; | |
3788 | + free_mem_ptr += size; | |
3789 | + | |
3790 | + if (free_mem_ptr >= &heap[HEAPSIZE]) | |
3791 | + error ("\nOut of memory\n"); | |
3792 | + | |
3793 | + return p; | |
3794 | +} | |
3795 | + | |
3796 | +static void free (void *where) | |
3797 | +{ /* Don't care */ | |
3798 | +} | |
3799 | + | |
3800 | +static void gzip_mark (void **ptr) | |
3801 | +{ | |
3802 | + *ptr = free_mem_ptr; | |
3803 | +} | |
3804 | + | |
3805 | +static void gzip_release (void **ptr) | |
3806 | +{ | |
3807 | + free_mem_ptr = *ptr; | |
3808 | +} | |
3809 | + | |
3810 | +/* =========================================================================== | |
3811 | + * Write the output window window[0..outcnt-1] and update crc and bytes_out. | |
3812 | + * (Used for the decompressed data only.) | |
3813 | + */ | |
3814 | +static void flush_window (void) | |
3815 | +{ | |
3816 | + ulg c = crc; /* temporary variable */ | |
3817 | + unsigned n; | |
3818 | + uch *in, ch; | |
3819 | + | |
3820 | + in = window; | |
3821 | + for (n = 0; n < outcnt; n++) { | |
3822 | + ch = *in++; | |
3823 | + put_byte (ch); | |
3824 | + c = crc_32_tab[((int) c ^ ch) & 0xff] ^ (c >> 8); | |
3825 | + } | |
3826 | + crc = c; | |
3827 | + bytes_out += outcnt; | |
3828 | + outcnt = 0; | |
3829 | + outstring ("."); | |
3830 | +} | |
3831 | + | |
3832 | +static void error (char *x) | |
3833 | +{ | |
3834 | + outstring ("\r\n\r\n"); | |
3835 | + outstring (x); | |
3836 | + outstring ("\r\n\r\n -- System halted\r\n"); | |
3837 | + exit (1); | |
3838 | +} | |
3839 | + | |
3840 | +void memgunzip (unsigned char *dst, const unsigned char *src, unsigned int sz) | |
3841 | +{ | |
3842 | + data_out = dst; | |
3843 | + data_in = src; | |
3844 | + data_in_len = sz; | |
3845 | + makecrc (); | |
3846 | + gunzip (); | |
3847 | +} | |
3848 | diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/ucdimm/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/ucdimm/config.c | |
3849 | --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/ucdimm/config.c 2003-10-20 09:10:57.662668152 +1000 | |
3850 | +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/ucdimm/config.c 2003-10-20 09:11:56.251761256 +1000 | |
3851 | @@ -99,11 +99,11 @@ | |
3852 | { | |
3853 | unsigned char *p; | |
3854 | ||
3855 | - printk("\n68VZ328 DragonBallVZ support (c) 2001 Lineo, Inc.\n"); | |
3856 | + printk(KERN_INFO "\n68VZ328 DragonBallVZ support (c) 2001 Lineo, Inc.\n"); | |
3857 | ||
3858 | - printk("uCdimm serial string [%s]\n",getserialnum()); | |
3859 | + printk(KERN_INFO "uCdimm serial string [%s]\n",getserialnum()); | |
3860 | p = cs8900a_hwaddr = gethwaddr(0); | |
3861 | - printk("uCdimm hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n", | |
3862 | + printk(KERN_INFO "uCdimm hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n", | |
3863 | p[0], p[1], p[2], p[3], p[4], p[5]); | |
3864 | p = getbenv("APPEND"); | |
3865 | if (p) strcpy(p,command); | |
3866 | diff -Naur linux-2.6.0-test8/drivers/mtd/maps/se4000.c linux-2.6.0-test8-uc0/drivers/mtd/maps/se4000.c | |
3867 | --- linux-2.6.0-test8/drivers/mtd/maps/se4000.c 1970-01-01 10:00:00.000000000 +1000 | |
3868 | +++ linux-2.6.0-test8-uc0/drivers/mtd/maps/se4000.c 2003-10-20 09:12:24.267502216 +1000 | |
3869 | @@ -0,0 +1,141 @@ | |
3870 | +/****************************************************************************/ | |
3871 | + | |
3872 | +/* | |
3873 | + * se4000.c -- MTD map driver for SnapGear SE4000 platform | |
3874 | + * | |
3875 | + * (C) Copyright 2003, Greg Ungerer <gerg@snapgear.com> | |
3876 | + */ | |
3877 | + | |
3878 | +/****************************************************************************/ | |
3879 | + | |
3880 | +#include <linux/module.h> | |
3881 | +#include <linux/types.h> | |
3882 | +#include <linux/kernel.h> | |
3883 | +#include <linux/string.h> | |
3884 | +#include <linux/notifier.h> | |
3885 | +#include <linux/init.h> | |
3886 | +#include <linux/reboot.h> | |
3887 | +#include <linux/mtd/mtd.h> | |
3888 | +#include <linux/mtd/map.h> | |
3889 | +#include <linux/mtd/partitions.h> | |
3890 | +#include <linux/mtd/cfi.h> | |
3891 | +#include <linux/ioport.h> | |
3892 | +#include <asm/io.h> | |
3893 | + | |
3894 | +/****************************************************************************/ | |
3895 | + | |
3896 | +static struct map_info se4000_map = { | |
3897 | + .name = "SnapGear SE4000 Flash", | |
3898 | + .buswidth = 2, | |
3899 | + .phys = 0x50000000, | |
3900 | + .size = 0x01000000, | |
3901 | +}; | |
3902 | + | |
3903 | +static struct mtd_partition *parsed_parts; | |
3904 | + | |
3905 | +/****************************************************************************/ | |
3906 | + | |
3907 | +#ifdef CONFIG_MTD_CFI_INTELEXT | |
3908 | +/* | |
3909 | + * Set the Intel flash back to read mode as MTD may leave it in command mode. | |
3910 | + */ | |
3911 | + | |
3912 | +static int se4000_reboot_notifier( | |
3913 | + struct notifier_block *nb, | |
3914 | + unsigned long val, | |
3915 | + void *v) | |
3916 | +{ | |
3917 | + struct cfi_private *cfi = se4000_map.fldrv_priv; | |
3918 | + int i; | |
3919 | + | |
3920 | + for (i = 0; cfi && i < cfi->numchips; i++) | |
3921 | + cfi_send_gen_cmd(0xff, 0x55, cfi->chips[i].start, &se4000_map, | |
3922 | + cfi, cfi->device_type, NULL); | |
3923 | + | |
3924 | + return NOTIFY_OK; | |
3925 | +} | |
3926 | + | |
3927 | +static struct notifier_block se4000_notifier_block = { | |
3928 | + se4000_reboot_notifier, NULL, 0 | |
3929 | +}; | |
3930 | + | |
3931 | +#endif | |
3932 | + | |
3933 | + | |
3934 | +/****************************************************************************/ | |
3935 | + | |
3936 | +static struct mtd_info *se4000_mtd; | |
3937 | +static const char *probes[] = { "RedBoot", NULL }; | |
3938 | + | |
3939 | +/****************************************************************************/ | |
3940 | + | |
3941 | +static void se4000_exit(void) | |
3942 | +{ | |
3943 | + if (se4000_mtd) { | |
3944 | + del_mtd_partitions(se4000_mtd); | |
3945 | + map_destroy(se4000_mtd); | |
3946 | + } | |
3947 | + if (se4000_map.virt) | |
3948 | + iounmap((void *)se4000_map.virt); | |
3949 | + | |
3950 | + if (parsed_parts) | |
3951 | + kfree(parsed_parts); | |
3952 | + | |
3953 | + /* Disable flash write */ | |
3954 | + *IXP425_EXP_CS0 &= ~IXP425_FLASH_WRITABLE; | |
3955 | +} | |
3956 | + | |
3957 | +/****************************************************************************/ | |
3958 | + | |
3959 | +static int __init se4000_init(void) | |
3960 | +{ | |
3961 | + int res, npart; | |
3962 | + | |
3963 | + /* Enable flash write */ | |
3964 | + *IXP425_EXP_CS0 |= IXP425_FLASH_WRITABLE; | |
3965 | + | |
3966 | + se4000_map.virt = (unsigned long) ioremap(se4000_map.phys, se4000_map.size); | |
3967 | + if (!se4000_map.virt) { | |
3968 | + printk(KERN_ERR "SE4000: ioremap(%x) failed\n", (int)se4000_map.phys); | |
3969 | + res = -EIO; | |
3970 | + goto Error; | |
3971 | + } | |
3972 | + | |
3973 | + /* Probe for the CFI complaint chip */ | |
3974 | + se4000_mtd = do_map_probe("cfi_probe", &se4000_map); | |
3975 | + if (!se4000_mtd) { | |
3976 | + res = -ENXIO; | |
3977 | + goto Error; | |
3978 | + } | |
3979 | + se4000_mtd->owner = THIS_MODULE; | |
3980 | + | |
3981 | + /* Try to parse RedBoot partitions */ | |
3982 | + npart = parse_mtd_partitions(se4000_mtd, probes, &parsed_parts, 0); | |
3983 | + if (npart > 0) { | |
3984 | + /* found "npart" RedBoot partitions */ | |
3985 | + res = add_mtd_partitions(se4000_mtd, parsed_parts, npart); | |
3986 | + } else { | |
3987 | + res = -EIO; | |
3988 | + } | |
3989 | + | |
3990 | + if (res) | |
3991 | + goto Error; | |
3992 | + | |
3993 | +#ifdef CONFIG_MTD_CFI_INTELEXT | |
3994 | + register_reboot_notifier(&se4000_notifier_block); | |
3995 | +#endif | |
3996 | + | |
3997 | + return res; | |
3998 | +Error: | |
3999 | + se4000_exit(); | |
4000 | + return res; | |
4001 | +} | |
4002 | + | |
4003 | +/****************************************************************************/ | |
4004 | + | |
4005 | +module_init(se4000_init); | |
4006 | +module_exit(se4000_exit); | |
4007 | + | |
4008 | +MODULE_DESCRIPTION("MTD map driver for SnapGear SE4000"); | |
4009 | + | |
4010 | +/****************************************************************************/ | |
4011 | diff -Naur linux-2.6.0-test8/drivers/mtd/maps/uclinux.c linux-2.6.0-test8-uc0/drivers/mtd/maps/uclinux.c | |
4012 | --- linux-2.6.0-test8/drivers/mtd/maps/uclinux.c 2003-10-20 09:10:46.000000000 +1000 | |
4013 | +++ linux-2.6.0-test8-uc0/drivers/mtd/maps/uclinux.c 2003-10-20 09:12:24.281500088 +1000 | |
4014 | @@ -5,7 +5,7 @@ | |
4015 | * | |
4016 | * (C) Copyright 2002, Greg Ungerer (gerg@snapgear.com) | |
4017 | * | |
4018 | - * $Id$ | |
4019 | + * $Id$ | |
4020 | */ | |
4021 | ||
4022 | /****************************************************************************/ | |
4023 | @@ -17,6 +17,7 @@ | |
4024 | #include <linux/kernel.h> | |
4025 | #include <linux/fs.h> | |
4026 | #include <linux/major.h> | |
4027 | +#include <linux/root_dev.h> | |
4028 | #include <linux/mtd/mtd.h> | |
4029 | #include <linux/mtd/map.h> | |
4030 | #include <linux/mtd/partitions.h> | |
4031 | @@ -59,10 +60,16 @@ | |
4032 | struct mtd_info *mtd; | |
4033 | struct map_info *mapp; | |
4034 | extern char _ebss; | |
4035 | + unsigned long addr = (unsigned long) &_ebss; | |
4036 | + | |
4037 | +#ifdef CONFIG_PILOT | |
4038 | + extern char _etext, _sdata, __init_end; | |
4039 | + addr = (unsigned long) (&_etext + (&__init_end - &_sdata)); | |
4040 | +#endif | |
4041 | ||
4042 | mapp = &uclinux_ram_map; | |
4043 | - mapp->phys = (unsigned long) &_ebss; | |
4044 | - mapp->size = PAGE_ALIGN(*((unsigned long *)((&_ebss) + 8))); | |
4045 | + mapp->phys = addr; | |
4046 | + mapp->size = PAGE_ALIGN(*((unsigned long *)(addr + 8))); | |
4047 | mapp->buswidth = 4; | |
4048 | ||
4049 | printk("uclinux[mtd]: RAM probe address=0x%x size=0x%x\n", | |
4050 | @@ -95,7 +102,6 @@ | |
4051 | printk("uclinux[mtd]: set %s to be root filesystem\n", | |
4052 | uclinux_romfs[0].name); | |
4053 | ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, 0); | |
4054 | - put_mtd_device(mtd); | |
4055 | ||
4056 | return(0); | |
4057 | } | |
4058 | diff -Naur linux-2.6.0-test8/drivers/net/fec.c linux-2.6.0-test8-uc0/drivers/net/fec.c | |
4059 | --- linux-2.6.0-test8/drivers/net/fec.c 2003-10-20 09:10:28.000000000 +1000 | |
4060 | +++ linux-2.6.0-test8-uc0/drivers/net/fec.c 2003-10-20 09:12:25.475318600 +1000 | |
4061 | @@ -18,7 +18,7 @@ | |
4062 | * Much better multiple PHY support by Magnus Damm. | |
4063 | * Copyright (c) 2000 Ericsson Radio Systems AB. | |
4064 | * | |
4065 | - * Support for FEC controller of ColdFire/5272. | |
4066 | + * Support for FEC controller of ColdFire/5272/5282. | |
4067 | * Copyrught (c) 2001-2002 Greg Ungerer (gerg@snapgear.com) | |
4068 | */ | |
4069 | ||
4070 | @@ -46,7 +46,7 @@ | |
4071 | #include <asm/io.h> | |
4072 | #include <asm/pgtable.h> | |
4073 | ||
4074 | -#ifdef CONFIG_M5272 | |
4075 | +#if defined(CONFIG_M5272) || defined(CONFIG_M5282) | |
4076 | #include <asm/coldfire.h> | |
4077 | #include <asm/mcfsim.h> | |
4078 | #include "fec.h" | |
4079 | @@ -62,13 +62,16 @@ | |
4080 | /* | |
4081 | * Define the fixed address of the FEC hardware. | |
4082 | */ | |
4083 | -#ifdef CONFIG_M5272 | |
4084 | +#if defined(CONFIG_M5272) | |
4085 | static volatile fec_t *fec_hwp = (volatile fec_t *) (MCF_MBAR + 0x840); | |
4086 | static ushort my_enet_addr[] = { 0x00d0, 0xcf00, 0x0072 }; | |
4087 | +#elif defined(CONFIG_M5282) | |
4088 | +static volatile fec_t *fec_hwp = (volatile fec_t *) (MCF_MBAR + 0x1000); | |
4089 | +static ushort my_enet_addr[] = { 0x00d0, 0xcf00, 0x0082 }; | |
4090 | #else | |
4091 | static volatile fec_t *fec_hwp = &(((immap_t *)IMAP_ADDR)->im_cpm.cp_fec) | |
4092 | static ushort my_enet_addr[3]; | |
4093 | -#endif /* CONFIG_M5272 */ | |
4094 | +#endif | |
4095 | ||
4096 | /* | |
4097 | * Some hardware gets it MAC address out of local flash memory. | |
4098 | @@ -299,6 +302,24 @@ | |
4099 | bdp->cbd_bufaddr = __pa(skb->data); | |
4100 | bdp->cbd_datlen = skb->len; | |
4101 | ||
4102 | +#ifdef CONFIG_M5282 | |
4103 | + /* | |
4104 | + * The FEC on the 5282 must have its buffers alligned on | |
4105 | + * 4 byte boundaries. Bugger. Copy the skbuf contents in | |
4106 | + * place so they start on a 4 byte boundary. | |
4107 | + */ | |
4108 | + if (bdp->cbd_bufaddr & 0x2) { | |
4109 | + int i; | |
4110 | + unsigned char *src = (unsigned char *) bdp->cbd_bufaddr; | |
4111 | + unsigned char *dst = (unsigned char *) bdp->cbd_bufaddr; | |
4112 | + src += bdp->cbd_datlen; | |
4113 | + dst += bdp->cbd_datlen + 2; | |
4114 | + for (i = bdp->cbd_datlen-1; (i >= 0); i--) | |
4115 | + *--dst = *--src; | |
4116 | + bdp->cbd_bufaddr = (int) dst; | |
4117 | + } | |
4118 | +#endif | |
4119 | + | |
4120 | /* Save skb pointer. | |
4121 | */ | |
4122 | fep->tx_skbuff[fep->skb_cur] = skb; | |
4123 | @@ -407,10 +428,13 @@ | |
4124 | */ | |
4125 | while ((int_events = fecp->fec_ievent) != 0) { | |
4126 | fecp->fec_ievent = int_events; | |
4127 | + | |
4128 | +#ifndef CONFIG_M5282 | |
4129 | if ((int_events & (FEC_ENET_HBERR | FEC_ENET_BABR | | |
4130 | FEC_ENET_BABT | FEC_ENET_EBERR)) != 0) { | |
4131 | printk("FEC ERROR %x\n", int_events); | |
4132 | } | |
4133 | +#endif | |
4134 | ||
4135 | /* Handle receive event in its own function. | |
4136 | */ | |
4137 | @@ -1040,14 +1064,15 @@ | |
4138 | ||
4139 | /* ------------------------------------------------------------------------- */ | |
4140 | ||
4141 | -static void | |
4142 | #ifdef CONFIG_RPXCLASSIC | |
4143 | +static void | |
4144 | mii_link_interrupt(void *dev_id); | |
4145 | #else | |
4146 | +static irqreturn_t | |
4147 | mii_link_interrupt(int irq, void * dev_id, struct pt_regs * regs); | |
4148 | #endif | |
4149 | ||
4150 | -#ifdef CONFIG_M5272 | |
4151 | +#if defined(CONFIG_M5272) | |
4152 | ||
4153 | /* | |
4154 | * Code specific to Coldfire 5272 setup. | |
4155 | @@ -1151,6 +1176,143 @@ | |
4156 | ||
4157 | /* ------------------------------------------------------------------------- */ | |
4158 | ||
4159 | +#elif defined(CONFIG_M5282) | |
4160 | + | |
4161 | +/* | |
4162 | + * Code specific to Coldfire 5282 setup. | |
4163 | + */ | |
4164 | +static void __inline__ fec_request_intrs(struct net_device *dev, volatile fec_t *fecp) | |
4165 | +{ | |
4166 | + /* Setup interrupt handlers. */ | |
4167 | + if (request_irq(64+23, fec_enet_interrupt, 0, "fec(TXF)", dev) != 0) | |
4168 | + printk("FEC: Could not allocate FEC(TXF) IRQ(64+23)!\n"); | |
4169 | + if (request_irq(64+24, fec_enet_interrupt, 0, "fec(TXB)", dev) != 0) | |
4170 | + printk("FEC: Could not allocate FEC(TXB) IRQ(64+24)!\n"); | |
4171 | + if (request_irq(64+25, fec_enet_interrupt, 0, "fec(TXFIFO)", dev) != 0) | |
4172 | + printk("FEC: Could not allocate FEC(TXFIFO) IRQ(64+25)!\n"); | |
4173 | + if (request_irq(64+26, fec_enet_interrupt, 0, "fec(TXCR)", dev) != 0) | |
4174 | + printk("FEC: Could not allocate FEC(TXCR) IRQ(64+26)!\n"); | |
4175 | + | |
4176 | + if (request_irq(64+27, fec_enet_interrupt, 0, "fec(RXF)", dev) != 0) | |
4177 | + printk("FEC: Could not allocate FEC(RXF) IRQ(64+27)!\n"); | |
4178 | + if (request_irq(64+28, fec_enet_interrupt, 0, "fec(RXB)", dev) != 0) | |
4179 | + printk("FEC: Could not allocate FEC(RXB) IRQ(64+28)!\n"); | |
4180 | + | |
4181 | + if (request_irq(64+29, fec_enet_interrupt, 0, "fec(MII)", dev) != 0) | |
4182 | + printk("FEC: Could not allocate FEC(MII) IRQ(64+29)!\n"); | |
4183 | + if (request_irq(64+30, fec_enet_interrupt, 0, "fec(LC)", dev) != 0) | |
4184 | + printk("FEC: Could not allocate FEC(LC) IRQ(64+30)!\n"); | |
4185 | + if (request_irq(64+31, fec_enet_interrupt, 0, "fec(HBERR)", dev) != 0) | |
4186 | + printk("FEC: Could not allocate FEC(HBERR) IRQ(64+31)!\n"); | |
4187 | + if (request_irq(64+32, fec_enet_interrupt, 0, "fec(GRA)", dev) != 0) | |
4188 | + printk("FEC: Could not allocate FEC(GRA) IRQ(64+32)!\n"); | |
4189 | + if (request_irq(64+33, fec_enet_interrupt, 0, "fec(EBERR)", dev) != 0) | |
4190 | + printk("FEC: Could not allocate FEC(EBERR) IRQ(64+33)!\n"); | |
4191 | + if (request_irq(64+34, fec_enet_interrupt, 0, "fec(BABT)", dev) != 0) | |
4192 | + printk("FEC: Could not allocate FEC(BABT) IRQ(64+34)!\n"); | |
4193 | + if (request_irq(64+35, fec_enet_interrupt, 0, "fec(BABR)", dev) != 0) | |
4194 | + printk("FEC: Could not allocate FEC(BABR) IRQ(64+35)!\n"); | |
4195 | + | |
4196 | + /* Unmask interrupts at ColdFire 5282 interrupt controller */ | |
4197 | + { | |
4198 | + volatile unsigned char *icrp; | |
4199 | + volatile unsigned long *imrp; | |
4200 | + int i; | |
4201 | + | |
4202 | + icrp = (volatile unsigned char *) (MCF_IPSBAR + MCFICM_INTC0 + | |
4203 | + MCFINTC_ICR0); | |
4204 | + for (i = 23; (i < 36); i++) | |
4205 | + icrp[i] = 0x23; | |
4206 | + | |
4207 | + imrp = (volatile unsigned long *) (MCF_IPSBAR + MCFICM_INTC0 + | |
4208 | + MCFINTC_IMRH); | |
4209 | + *imrp &= ~0x0000000f; | |
4210 | + imrp = (volatile unsigned long *) (MCF_IPSBAR + MCFICM_INTC0 + | |
4211 | + MCFINTC_IMRL); | |
4212 | + *imrp &= ~0xff800001; | |
4213 | + } | |
4214 | + | |
4215 | + /* Set up gpio outputs for MII lines */ | |
4216 | + { | |
4217 | + volatile unsigned short *gpio_paspar; | |
4218 | + | |
4219 | + gpio_paspar = (volatile unsigned short *) (MCF_IPSBAR + | |
4220 | + 0x100056); | |
4221 | + *gpio_paspar = 0x0f00; | |
4222 | + } | |
4223 | +} | |
4224 | + | |
4225 | +static void __inline__ fec_set_mii(struct net_device *dev, struct fec_enet_private *fep) | |
4226 | +{ | |
4227 | + volatile fec_t *fecp; | |
4228 | + fecp = fec_hwp; | |
4229 | + | |
4230 | + fecp->fec_r_cntrl = 0x04; | |
4231 | + fecp->fec_x_cntrl = 0x00; | |
4232 | + | |
4233 | + /* Set MII speed to 2.5 MHz | |
4234 | + */ | |
4235 | + fecp->fec_mii_speed = fep->phy_speed = 0x0e; | |
4236 | + | |
4237 | + fec_restart(dev, 0); | |
4238 | +} | |
4239 | + | |
4240 | +static void __inline__ fec_get_mac(struct net_device *dev, struct fec_enet_private *fep) | |
4241 | +{ | |
4242 | + volatile fec_t *fecp; | |
4243 | + unsigned char *eap, *iap, tmpaddr[6]; | |
4244 | + int i; | |
4245 | + | |
4246 | + fecp = fec_hwp; | |
4247 | + eap = (unsigned char *) my_enet_addr; | |
4248 | + | |
4249 | + if (fec_flashmac) { | |
4250 | + /* | |
4251 | + * Get MAC address from FLASH. | |
4252 | + * If it is all 1's or 0's, use the default. | |
4253 | + */ | |
4254 | + iap = fec_flashmac; | |
4255 | + if ((iap[0] == 0) && (iap[1] == 0) && (iap[2] == 0) && | |
4256 | + (iap[3] == 0) && (iap[4] == 0) && (iap[5] == 0)) | |
4257 | + iap = eap; | |
4258 | + if ((iap[0] == 0xff) && (iap[1] == 0xff) && (iap[2] == 0xff) && | |
4259 | + (iap[3] == 0xff) && (iap[4] == 0xff) && (iap[5] == 0xff)) | |
4260 | + iap = eap; | |
4261 | + } else { | |
4262 | + *((unsigned long *) &tmpaddr[0]) = fecp->fec_addr_low; | |
4263 | + *((unsigned short *) &tmpaddr[4]) = (fecp->fec_addr_high >> 16); | |
4264 | + iap = &tmpaddr[0]; | |
4265 | + } | |
4266 | + | |
4267 | + for (i=0; i<6; i++) | |
4268 | + dev->dev_addr[i] = *eap++ = *iap++; | |
4269 | +} | |
4270 | + | |
4271 | +static void __inline__ fec_enable_phy_intr(void) | |
4272 | +{ | |
4273 | +} | |
4274 | + | |
4275 | +static void __inline__ fec_disable_phy_intr(void) | |
4276 | +{ | |
4277 | +} | |
4278 | + | |
4279 | +static void __inline__ fec_phy_ack_intr(void) | |
4280 | +{ | |
4281 | +} | |
4282 | + | |
4283 | +static void __inline__ fec_localhw_setup(void) | |
4284 | +{ | |
4285 | +} | |
4286 | + | |
4287 | +/* | |
4288 | + * Do not need to make region uncached on 5272. | |
4289 | + */ | |
4290 | +static void __inline__ fec_uncache(unsigned long addr) | |
4291 | +{ | |
4292 | +} | |
4293 | + | |
4294 | +/* ------------------------------------------------------------------------- */ | |
4295 | + | |
4296 | #else | |
4297 | ||
4298 | /* | |
4299 | @@ -1458,14 +1620,15 @@ | |
4300 | ||
4301 | /* This interrupt occurs when the PHY detects a link change. | |
4302 | */ | |
4303 | -static void | |
4304 | #ifdef CONFIG_RPXCLASSIC | |
4305 | +static void | |
4306 | mii_link_interrupt(void *dev_id) | |
4307 | #else | |
4308 | +static irqreturn_t | |
4309 | mii_link_interrupt(int irq, void * dev_id, struct pt_regs * regs) | |
4310 | #endif | |
4311 | { | |
4312 | - struct net_device *dev = dev_id; | |
4313 | + struct net_device *dev = dev_id; | |
4314 | struct fec_enet_private *fep = dev->priv; | |
4315 | ||
4316 | fec_phy_ack_intr(); | |
4317 | @@ -1477,6 +1640,7 @@ | |
4318 | mii_do_cmd(dev, fep->phy->ack_int); | |
4319 | mii_do_cmd(dev, phy_cmd_relink); /* restart and display status */ | |
4320 | ||
4321 | + return IRQ_HANDLED; | |
4322 | } | |
4323 | ||
4324 | static int | |
4325 | diff -Naur linux-2.6.0-test8/drivers/net/Kconfig linux-2.6.0-test8-uc0/drivers/net/Kconfig | |
4326 | --- linux-2.6.0-test8/drivers/net/Kconfig 2003-10-20 09:10:30.000000000 +1000 | |
4327 | +++ linux-2.6.0-test8-uc0/drivers/net/Kconfig 2003-10-20 09:12:24.802420896 +1000 | |
4328 | @@ -722,7 +722,7 @@ | |
4329 | ||
4330 | config NET_VENDOR_SMC | |
4331 | bool "Western Digital/SMC cards" | |
4332 | - depends on NET_ETHERNET && (ISA || MCA || EISA || MAC) | |
4333 | + depends on NET_ETHERNET && (ISA || MCA || EISA || MAC || EMBEDDED) | |
4334 | help | |
4335 | If you have a network (Ethernet) card belonging to this class, say Y | |
4336 | and read the Ethernet-HOWTO, available from | |
4337 | @@ -794,7 +794,7 @@ | |
4338 | ||
4339 | config SMC9194 | |
4340 | tristate "SMC 9194 support" | |
4341 | - depends on NET_VENDOR_SMC && (ISA || MAC && BROKEN) | |
4342 | + depends on NET_VENDOR_SMC && (ISA || MAC && BROKEN || EMBEDDED) | |
4343 | select CRC32 | |
4344 | ---help--- | |
4345 | This is support for the SMC9xxx based Ethernet cards. Choose this | |
4346 | diff -Naur linux-2.6.0-test8/drivers/net/smc9194.c linux-2.6.0-test8-uc0/drivers/net/smc9194.c | |
4347 | --- linux-2.6.0-test8/drivers/net/smc9194.c 2003-10-20 09:10:30.000000000 +1000 | |
4348 | +++ linux-2.6.0-test8-uc0/drivers/net/smc9194.c 2003-10-20 09:12:25.833264184 +1000 | |
4349 | @@ -59,9 +59,11 @@ | |
4350 | ||
4351 | #include <linux/module.h> | |
4352 | #include <linux/kernel.h> | |
4353 | +#include <linux/sched.h> | |
4354 | #include <linux/types.h> | |
4355 | #include <linux/fcntl.h> | |
4356 | #include <linux/interrupt.h> | |
4357 | +#include <linux/ptrace.h> | |
4358 | #include <linux/ioport.h> | |
4359 | #include <linux/in.h> | |
4360 | #include <linux/slab.h> | |
4361 | @@ -72,12 +74,46 @@ | |
4362 | #include <linux/netdevice.h> | |
4363 | #include <linux/etherdevice.h> | |
4364 | #include <linux/skbuff.h> | |
4365 | +#include <linux/delay.h> | |
4366 | ||
4367 | #include <asm/bitops.h> | |
4368 | #include <asm/io.h> | |
4369 | ||
4370 | #include "smc9194.h" | |
4371 | ||
4372 | +#ifdef CONFIG_M68EZ328 | |
4373 | +#include <asm/MC68EZ328.h> | |
4374 | +#include <asm/irq.h> | |
4375 | +#include <asm/mcfsmc.h> | |
4376 | +unsigned char smc_defethaddr[] = { 0x00, 0x10, 0x8b, 0xf1, 0xda, 0x01 }; | |
4377 | +#define NO_AUTOPROBE | |
4378 | +#endif | |
4379 | + | |
4380 | +#ifdef CONFIG_COLDFIRE | |
4381 | +#include <asm/coldfire.h> | |
4382 | +#include <asm/mcfsim.h> | |
4383 | +#include <asm/mcfsmc.h> | |
4384 | + | |
4385 | +unsigned char smc_defethaddr[] = { 0x00, 0xd0, 0xcf, 0x00, 0x00, 0x01 }; | |
4386 | + | |
4387 | +#define NO_AUTOPROBE | |
4388 | +#endif | |
4389 | + | |
4390 | +#ifdef CONFIG_SH_KEYWEST | |
4391 | +#include <asm/keywest.h> | |
4392 | +#define NO_AUTOPROBE | |
4393 | +#define PHY_SETUP | |
4394 | +#endif | |
4395 | + | |
4396 | +#ifdef CONFIG_LEDMAN | |
4397 | +#include <linux/ledman.h> | |
4398 | +#endif | |
4399 | + | |
4400 | +#if defined(CONFIG_CPU_H8300H) || defined(CONFIG_CPU_H8S) | |
4401 | +#include <asm/h8300_smsc.h> | |
4402 | +#define NO_AUTOPROBE | |
4403 | +#endif | |
4404 | + | |
4405 | /*------------------------------------------------------------------------ | |
4406 | . | |
4407 | . Configuration options, for the experienced user to change. | |
4408 | @@ -88,22 +124,59 @@ | |
4409 | . Do you want to use 32 bit xfers? This should work on all chips, as | |
4410 | . the chipset is designed to accommodate them. | |
4411 | */ | |
4412 | -#ifdef __sh__ | |
4413 | +#if (defined(__sh__) && !defined(CONFIG_SH_KEYWEST)) || \ | |
4414 | + defined(__H8300H__) || defined(__H8300S__) | |
4415 | #undef USE_32_BIT | |
4416 | #else | |
4417 | #define USE_32_BIT 1 | |
4418 | #endif | |
4419 | ||
4420 | /* | |
4421 | + .A typedef so we can change what IO looks like easily | |
4422 | +*/ | |
4423 | +typedef unsigned int smcio_t; | |
4424 | + | |
4425 | +/* | |
4426 | .the SMC9194 can be at any of the following port addresses. To change, | |
4427 | .for a slightly different card, you can add it to the array. Keep in | |
4428 | .mind that the array must end in zero. | |
4429 | */ | |
4430 | + | |
4431 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) || \ | |
4432 | + defined(CONFIG_SH_KEYWEST) | |
4433 | + | |
4434 | +#ifdef CONFIG_NETtel | |
4435 | +static smcio_t smc_portlist[] = { 0x30600300, 0x30600000, 0 }; | |
4436 | +static unsigned int smc_irqlist[] = { 29, 27, 0 }; | |
4437 | +#elif defined(CONFIG_SH_KEYWEST) | |
4438 | +static smcio_t smc_portlist[] = { KEYWEST_ETHR, 0 }; | |
4439 | +static unsigned int smc_irqlist[] = { IRQ4_IRQ, 0 }; | |
4440 | +#elif defined(CONFIG_M68EZ328) | |
4441 | +/* make sure that you program Port D selects to allow the interrupts! */ | |
4442 | +static smcio_t smc_portlist[] = { 0x2000300, 0x2000320, 0 }; | |
4443 | +static unsigned int smc_irqlist[] = { IRQ1_IRQ_NUM, IRQ2_IRQ_NUM, 0 }; | |
4444 | +#elif defined(CONFIG_CLEOPATRA) | |
4445 | +static unsigned int smc_portlist[] = { 0x30600300, 0 }; | |
4446 | +static unsigned int smc_irqlist[] = { 29, 0 }; | |
4447 | +#else | |
4448 | +static smcio_t smc_portlist[] = { 0x30600300, 0 }; | |
4449 | +static unsigned int smc_irqlist[] = { 27, 0 }; | |
4450 | +#endif | |
4451 | + | |
4452 | +#elif defined(CONFIG_BOARD_EDOSK2674) | |
4453 | +static smcio_t smc_portlist[] = { SMSC_BASE, 0 }; | |
4454 | +static unsigned int smc_irqlist[] = { SMSC_IRQ, 0 }; | |
4455 | +#else | |
4456 | + | |
4457 | static unsigned int smc_portlist[] __initdata = { | |
4458 | 0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0, | |
4459 | 0x300, 0x320, 0x340, 0x360, 0x380, 0x3A0, 0x3C0, 0x3E0, 0 | |
4460 | }; | |
4461 | ||
4462 | +#endif | |
4463 | + | |
4464 | +static unsigned int smc_found[] = { 0, 0, 0 }; | |
4465 | + | |
4466 | /* | |
4467 | . Wait time for memory to be free. This probably shouldn't be | |
4468 | . tuned that much, as waiting for this means nothing else happens | |
4469 | @@ -257,7 +330,7 @@ | |
4470 | . Test if a given location contains a chip, trying to cause as | |
4471 | . little damage as possible if it's not a SMC chip. | |
4472 | */ | |
4473 | -static int smc_probe(struct net_device *dev, int ioaddr); | |
4474 | +static int smc_probe(struct net_device *dev, smcio_t ioaddr); | |
4475 | ||
4476 | /* | |
4477 | . A rather simple routine to print out a packet for debugging purposes. | |
4478 | @@ -278,20 +351,31 @@ | |
4479 | static int smc_wait_to_send_packet( struct sk_buff * skb, struct net_device *dev ); | |
4480 | ||
4481 | /* this does a soft reset on the device */ | |
4482 | -static void smc_reset( int ioaddr ); | |
4483 | +static void smc_reset( smcio_t ioaddr ); | |
4484 | ||
4485 | /* Enable Interrupts, Receive, and Transmit */ | |
4486 | -static void smc_enable( int ioaddr ); | |
4487 | +static void smc_enable( smcio_t ioaddr ); | |
4488 | ||
4489 | /* this puts the device in an inactive state */ | |
4490 | -static void smc_shutdown( int ioaddr ); | |
4491 | +static void smc_shutdown( smcio_t ioaddr ); | |
4492 | ||
4493 | +#ifndef NO_AUTOPROBE | |
4494 | /* This routine will find the IRQ of the driver if one is not | |
4495 | . specified in the input to the device. */ | |
4496 | -static int smc_findirq( int ioaddr ); | |
4497 | +static int smc_findirq( smcio_t ioaddr ); | |
4498 | +#endif | |
4499 | + | |
4500 | +#ifdef PHY_SETUP | |
4501 | +static void clkmdio(smcio_t ioaddr, unsigned int MGMTData); | |
4502 | +static unsigned PHYAccess(smcio_t ioaddr, unsigned char PHYAdd, | |
4503 | + unsigned char RegAdd, unsigned char OPCode, unsigned wData); | |
4504 | +static unsigned char DetectPHY(smcio_t ioaddr, unsigned long *OUI, | |
4505 | + unsigned char *Model, unsigned char *Revision); | |
4506 | +static int setup_phy(smcio_t ioaddr); | |
4507 | +#endif | |
4508 | ||
4509 | /* | |
4510 | - . Function: smc_reset( int ioaddr ) | |
4511 | + . Function: smc_reset( smcio_t ioaddr ) | |
4512 | . Purpose: | |
4513 | . This sets the SMC91xx chip to its normal state, hopefully from whatever | |
4514 | . mess that any other DOS driver has put it in. | |
4515 | @@ -307,7 +391,7 @@ | |
4516 | . 5. clear all interrupts | |
4517 | . | |
4518 | */ | |
4519 | -static void smc_reset( int ioaddr ) | |
4520 | +static void smc_reset( smcio_t ioaddr ) | |
4521 | { | |
4522 | /* This resets the registers mostly to defaults, but doesn't | |
4523 | affect EEPROM. That seems unnecessary */ | |
4524 | @@ -328,6 +412,10 @@ | |
4525 | SMC_SELECT_BANK( 1 ); | |
4526 | outw( inw( ioaddr + CONTROL ) | CTL_AUTO_RELEASE , ioaddr + CONTROL ); | |
4527 | ||
4528 | +#if defined(CONFIG_LEDMAN) && defined(CONFIG_SNAPGEAR) | |
4529 | + outw( inw( ioaddr + CONTROL ) | CTL_LE_ENABLE , ioaddr + CONTROL ); | |
4530 | +#endif | |
4531 | + | |
4532 | /* Reset the MMU */ | |
4533 | SMC_SELECT_BANK( 2 ); | |
4534 | outw( MC_RESET, ioaddr + MMU_CMD ); | |
4535 | @@ -336,7 +424,7 @@ | |
4536 | but this is a place where future chipsets _COULD_ break. Be wary | |
4537 | of issuing another MMU command right after this */ | |
4538 | ||
4539 | - outb( 0, ioaddr + INT_MASK ); | |
4540 | + SMC_SET_INT( 0 ); | |
4541 | } | |
4542 | ||
4543 | /* | |
4544 | @@ -347,7 +435,7 @@ | |
4545 | . 2. Enable the receiver | |
4546 | . 3. Enable interrupts | |
4547 | */ | |
4548 | -static void smc_enable( int ioaddr ) | |
4549 | +static void smc_enable( smcio_t ioaddr ) | |
4550 | { | |
4551 | SMC_SELECT_BANK( 0 ); | |
4552 | /* see the header file for options in TCR/RCR NORMAL*/ | |
4553 | @@ -356,7 +444,7 @@ | |
4554 | ||
4555 | /* now, enable interrupts */ | |
4556 | SMC_SELECT_BANK( 2 ); | |
4557 | - outb( SMC_INTERRUPT_MASK, ioaddr + INT_MASK ); | |
4558 | + SMC_SET_INT( SMC_INTERRUPT_MASK ); | |
4559 | } | |
4560 | ||
4561 | /* | |
4562 | @@ -373,16 +461,21 @@ | |
4563 | . the manual says that it will wake up in response to any I/O requests | |
4564 | . in the register space. Empirical results do not show this working. | |
4565 | */ | |
4566 | -static void smc_shutdown( int ioaddr ) | |
4567 | +static void smc_shutdown( smcio_t ioaddr ) | |
4568 | { | |
4569 | /* no more interrupts for me */ | |
4570 | SMC_SELECT_BANK( 2 ); | |
4571 | - outb( 0, ioaddr + INT_MASK ); | |
4572 | + SMC_SET_INT( 0 ); | |
4573 | ||
4574 | /* and tell the card to stay away from that nasty outside world */ | |
4575 | SMC_SELECT_BANK( 0 ); | |
4576 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
4577 | + outw( RCR_CLEAR, ioaddr + RCR ); | |
4578 | + outw( TCR_CLEAR, ioaddr + TCR ); | |
4579 | +#else | |
4580 | outb( RCR_CLEAR, ioaddr + RCR ); | |
4581 | outb( TCR_CLEAR, ioaddr + TCR ); | |
4582 | +#endif /* CONFIG_COLDFIRE */ | |
4583 | #if 0 | |
4584 | /* finally, shut the chip down */ | |
4585 | SMC_SELECT_BANK( 1 ); | |
4586 | @@ -392,7 +485,7 @@ | |
4587 | ||
4588 | ||
4589 | /* | |
4590 | - . Function: smc_setmulticast( int ioaddr, int count, dev_mc_list * adds ) | |
4591 | + . Function: smc_setmulticast( smcio_t ioaddr, int count, dev_mc_list * adds ) | |
4592 | . Purpose: | |
4593 | . This sets the internal hardware table to filter out unwanted multicast | |
4594 | . packets before they take up memory. | |
4595 | @@ -409,7 +502,7 @@ | |
4596 | */ | |
4597 | ||
4598 | ||
4599 | -static void smc_setmulticast( int ioaddr, int count, struct dev_mc_list * addrs ) { | |
4600 | +static void smc_setmulticast( smcio_t ioaddr, int count, struct dev_mc_list * addrs ) { | |
4601 | int i; | |
4602 | unsigned char multicast_table[ 8 ]; | |
4603 | struct dev_mc_list * cur_addr; | |
4604 | @@ -442,11 +535,18 @@ | |
4605 | /* now, the table can be loaded into the chipset */ | |
4606 | SMC_SELECT_BANK( 3 ); | |
4607 | ||
4608 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
4609 | + for ( i = 0; i < 8 ; i += 2 ) { | |
4610 | + outw(((multicast_table[i+1]<<8)+(multicast_table[i])), ioaddr+MULTICAST1+i ); | |
4611 | + } | |
4612 | +#else | |
4613 | for ( i = 0; i < 8 ; i++ ) { | |
4614 | outb( multicast_table[i], ioaddr + MULTICAST1 + i ); | |
4615 | } | |
4616 | +#endif | |
4617 | } | |
4618 | ||
4619 | + | |
4620 | /* | |
4621 | . Function: smc_wait_to_send_packet( struct sk_buff * skb, struct net_device * ) | |
4622 | . Purpose: | |
4623 | @@ -466,7 +566,7 @@ | |
4624 | static int smc_wait_to_send_packet( struct sk_buff * skb, struct net_device * dev ) | |
4625 | { | |
4626 | struct smc_local *lp = (struct smc_local *)dev->priv; | |
4627 | - unsigned short ioaddr = dev->base_addr; | |
4628 | + smcio_t ioaddr = dev->base_addr; | |
4629 | word length; | |
4630 | unsigned short numPages; | |
4631 | word time_out; | |
4632 | @@ -481,18 +581,18 @@ | |
4633 | printk(CARDNAME": Bad Craziness - sent packet while busy.\n" ); | |
4634 | return 1; | |
4635 | } | |
4636 | - lp->saved_skb = skb; | |
4637 | ||
4638 | length = skb->len; | |
4639 | ||
4640 | - if (length < ETH_ZLEN) { | |
4641 | + if(length < ETH_ZLEN) { | |
4642 | skb = skb_padto(skb, ETH_ZLEN); | |
4643 | - if (skb == NULL) { | |
4644 | + if(skb == NULL) { | |
4645 | netif_wake_queue(dev); | |
4646 | return 0; | |
4647 | } | |
4648 | length = ETH_ZLEN; | |
4649 | } | |
4650 | + lp->saved_skb = skb; | |
4651 | ||
4652 | /* | |
4653 | ** The MMU wants the number of pages to be the number of 256 bytes | |
4654 | @@ -538,7 +638,7 @@ | |
4655 | status = inb( ioaddr + INTERRUPT ); | |
4656 | if ( status & IM_ALLOC_INT ) { | |
4657 | /* acknowledge the interrupt */ | |
4658 | - outb( IM_ALLOC_INT, ioaddr + INTERRUPT ); | |
4659 | + SMC_ACK_INT( IM_ALLOC_INT ); | |
4660 | break; | |
4661 | } | |
4662 | } while ( -- time_out ); | |
4663 | @@ -580,7 +680,7 @@ | |
4664 | byte packet_no; | |
4665 | struct sk_buff * skb = lp->saved_skb; | |
4666 | word length; | |
4667 | - unsigned short ioaddr; | |
4668 | + smcio_t ioaddr; | |
4669 | byte * buf; | |
4670 | ||
4671 | ioaddr = dev->base_addr; | |
4672 | @@ -604,7 +704,11 @@ | |
4673 | } | |
4674 | ||
4675 | /* we have a packet address, so tell the card to use it */ | |
4676 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
4677 | + outw( packet_no, ioaddr + PNR_ARR ); | |
4678 | +#else | |
4679 | outb( packet_no, ioaddr + PNR_ARR ); | |
4680 | +#endif | |
4681 | ||
4682 | /* point to the beginning of the packet */ | |
4683 | outw( PTR_AUTOINC , ioaddr + POINTER ); | |
4684 | @@ -616,14 +720,23 @@ | |
4685 | ||
4686 | /* send the packet length ( +6 for status, length and ctl byte ) | |
4687 | and the status word ( set to zeros ) */ | |
4688 | + | |
4689 | #ifdef USE_32_BIT | |
4690 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
4691 | + outl( (length +6 ) , ioaddr + DATA_1 ); | |
4692 | +#else | |
4693 | outl( (length +6 ) << 16 , ioaddr + DATA_1 ); | |
4694 | +#endif | |
4695 | #else | |
4696 | outw( 0, ioaddr + DATA_1 ); | |
4697 | /* send the packet length ( +6 for status words, length, and ctl*/ | |
4698 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) || defined(CONFIG_CPU_H8S) | |
4699 | + outw( (length+6) & 0xFFFF, ioaddr + DATA_1 ); | |
4700 | +#else | |
4701 | outb( (length+6) & 0xFF,ioaddr + DATA_1 ); | |
4702 | outb( (length+6) >> 8 , ioaddr + DATA_1 ); | |
4703 | #endif | |
4704 | +#endif | |
4705 | ||
4706 | /* send the actual data | |
4707 | . I _think_ it's faster to send the longs first, and then | |
4708 | @@ -635,7 +748,11 @@ | |
4709 | #ifdef USE_32_BIT | |
4710 | if ( length & 0x2 ) { | |
4711 | outsl(ioaddr + DATA_1, buf, length >> 2 ); | |
4712 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
4713 | + outwd( *((word *)(buf + (length & 0xFFFFFFFC))),ioaddr +DATA_1); | |
4714 | +#else | |
4715 | outw( *((word *)(buf + (length & 0xFFFFFFFC))),ioaddr +DATA_1); | |
4716 | +#endif | |
4717 | } | |
4718 | else | |
4719 | outsl(ioaddr + DATA_1, buf, length >> 2 ); | |
4720 | @@ -647,8 +764,12 @@ | |
4721 | if ( (length & 1) == 0 ) { | |
4722 | outw( 0, ioaddr + DATA_1 ); | |
4723 | } else { | |
4724 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
4725 | + outw( buf[length -1 ] | (0x20 << 8), ioaddr + DATA_1); | |
4726 | +#else | |
4727 | outb( buf[length -1 ], ioaddr + DATA_1 ); | |
4728 | outb( 0x20, ioaddr + DATA_1); | |
4729 | +#endif | |
4730 | } | |
4731 | ||
4732 | /* enable the interrupts */ | |
4733 | @@ -688,7 +809,12 @@ | |
4734 | int __init smc_init(struct net_device *dev) | |
4735 | { | |
4736 | int i; | |
4737 | +#if defined(NO_AUTOPROBE) | |
4738 | int base_addr = dev->base_addr; | |
4739 | +#else | |
4740 | + /* check for special auto-probe address */ | |
4741 | + int base_addr = (dev && dev->base_addr != 0xffe0) ? dev->base_addr : 0; | |
4742 | +#endif | |
4743 | ||
4744 | SET_MODULE_OWNER(dev); | |
4745 | ||
4746 | @@ -699,9 +825,22 @@ | |
4747 | return -ENXIO; | |
4748 | ||
4749 | /* check every ethernet address */ | |
4750 | - for (i = 0; smc_portlist[i]; i++) | |
4751 | - if (smc_probe(dev, smc_portlist[i]) == 0) | |
4752 | + for (i = 0; smc_portlist[i]; i++) { | |
4753 | +#ifdef CONFIG_NETtel | |
4754 | + smc_remap(smc_portlist[i]); | |
4755 | +#endif | |
4756 | +#if defined(NO_AUTOPROBE) | |
4757 | + dev->irq = smc_irqlist[i]; | |
4758 | + if (smc_found[i]) | |
4759 | + continue; | |
4760 | +#endif | |
4761 | + if (smc_probe(dev, smc_portlist[i]) == 0) { | |
4762 | +#if defined(NO_AUTOPROBE) | |
4763 | + smc_found[i] = 1; | |
4764 | +#endif | |
4765 | return 0; | |
4766 | + } | |
4767 | + } | |
4768 | ||
4769 | /* couldn't find anything */ | |
4770 | return -ENODEV; | |
4771 | @@ -714,12 +853,20 @@ | |
4772 | . interrupt, so an auto-detect routine can detect it, and find the IRQ, | |
4773 | ------------------------------------------------------------------------ | |
4774 | */ | |
4775 | -int __init smc_findirq( int ioaddr ) | |
4776 | +#ifndef NO_AUTOPROBE | |
4777 | +int __init smc_findirq( smcio_t ioaddr ) | |
4778 | { | |
4779 | int timeout = 20; | |
4780 | unsigned long cookie; | |
4781 | ||
4782 | ||
4783 | +#if 0 | |
4784 | + /* I have to do a STI() here, because this is called from | |
4785 | + a routine that does an CLI during this process, making it | |
4786 | + rather difficult to get interrupts for auto detection */ | |
4787 | + sti(); | |
4788 | +#endif | |
4789 | + | |
4790 | cookie = probe_irq_on(); | |
4791 | ||
4792 | /* | |
4793 | @@ -731,7 +878,7 @@ | |
4794 | ||
4795 | SMC_SELECT_BANK(2); | |
4796 | /* enable ALLOCation interrupts ONLY */ | |
4797 | - outb( IM_ALLOC_INT, ioaddr + INT_MASK ); | |
4798 | + SMC_SET_INT( IM_ALLOC_INT ); | |
4799 | ||
4800 | /* | |
4801 | . Allocate 512 bytes of memory. Note that the chip was just | |
4802 | @@ -766,14 +913,21 @@ | |
4803 | SMC_DELAY(); | |
4804 | ||
4805 | /* and disable all interrupts again */ | |
4806 | - outb( 0, ioaddr + INT_MASK ); | |
4807 | + SMC_SET_INT( 0 ); | |
4808 | + | |
4809 | +#if 0 | |
4810 | + /* clear hardware interrupts again, because that's how it | |
4811 | + was when I was called... */ | |
4812 | + cli(); | |
4813 | +#endif | |
4814 | ||
4815 | /* and return what I found */ | |
4816 | return probe_irq_off(cookie); | |
4817 | } | |
4818 | +#endif /* NO_AUTOPROBE */ | |
4819 | ||
4820 | /*---------------------------------------------------------------------- | |
4821 | - . Function: smc_probe( int ioaddr ) | |
4822 | + . Function: smc_probe( smcio_t ioaddr ) | |
4823 | . | |
4824 | . Purpose: | |
4825 | . Tests to see if a given ioaddr points to an SMC9xxx chip. | |
4826 | @@ -801,11 +955,17 @@ | |
4827 | . o GRAB the region | |
4828 | .----------------------------------------------------------------- | |
4829 | */ | |
4830 | -static int __init smc_probe(struct net_device *dev, int ioaddr) | |
4831 | +static int __init smc_probe(struct net_device *dev, smcio_t ioaddr) | |
4832 | { | |
4833 | int i, memory, retval; | |
4834 | static unsigned version_printed; | |
4835 | unsigned int bank; | |
4836 | +#if defined(CONFIG_NETtel) || defined(CONFIG_eLIA) || defined(CONFIG_DISKtel) || defined(CONFIG_CLEOPATRA) | |
4837 | + static int nr = 0; | |
4838 | +#endif | |
4839 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
4840 | + unsigned char *ep; | |
4841 | +#endif | |
4842 | ||
4843 | const char *version_string; | |
4844 | const char *if_string; | |
4845 | @@ -817,9 +977,18 @@ | |
4846 | word memory_info_register; | |
4847 | word memory_cfg_register; | |
4848 | ||
4849 | +#if !defined(CONFIG_COLDFIRE) && !defined(CONFIG_M68EZ328) && \ | |
4850 | + !defined(CONFIG_CPU_H8300H) && !defined(CONFIG_CPU_H8S) | |
4851 | /* Grab the region so that no one else tries to probe our ioports. */ | |
4852 | if (!request_region(ioaddr, SMC_IO_EXTENT, dev->name)) | |
4853 | return -EBUSY; | |
4854 | +#elif defined(CONFIG_COLDFIRE) | |
4855 | + /* | |
4856 | + * We need to put the SMC into 68k mode. | |
4857 | + * Do a write before anything else. | |
4858 | + */ | |
4859 | + outw(0, ioaddr + BANK_SELECT); | |
4860 | +#endif | |
4861 | ||
4862 | /* First, see if the high byte is 0x33 */ | |
4863 | bank = inw( ioaddr + BANK_SELECT ); | |
4864 | @@ -835,12 +1004,14 @@ | |
4865 | retval = -ENODEV; | |
4866 | goto err_out; | |
4867 | } | |
4868 | + | |
4869 | /* well, we've already written once, so hopefully another time won't | |
4870 | hurt. This time, I need to switch the bank register to bank 1, | |
4871 | so I can access the base address register */ | |
4872 | +#if !defined(CONFIG_CPU_H8300H) && !defined(CONFIG_CPU_H8S) | |
4873 | SMC_SELECT_BANK(1); | |
4874 | base_address_register = inw( ioaddr + BASE ); | |
4875 | - if ( ioaddr != ( base_address_register >> 3 & 0x3E0 ) ) { | |
4876 | + if ( (ioaddr & 0x3E0) != ( base_address_register >> 3 & 0x3E0 ) ) { | |
4877 | printk(CARDNAME ": IOADDR %x doesn't match configuration (%x)." | |
4878 | "Probably not a SMC chip\n", | |
4879 | ioaddr, base_address_register >> 3 & 0x3E0 ); | |
4880 | @@ -849,6 +1020,7 @@ | |
4881 | retval = -ENODEV; | |
4882 | goto err_out; | |
4883 | } | |
4884 | +#endif | |
4885 | ||
4886 | /* check if the revision register is something that I recognize. | |
4887 | These might need to be added to later, as future revisions | |
4888 | @@ -867,13 +1039,30 @@ | |
4889 | /* at this point I'll assume that the chip is an SMC9xxx. | |
4890 | It might be prudent to check a listing of MAC addresses | |
4891 | against the hardware address, or do some other tests. */ | |
4892 | - | |
4893 | if (version_printed++ == 0) | |
4894 | printk("%s", version); | |
4895 | ||
4896 | /* fill in some of the fields */ | |
4897 | dev->base_addr = ioaddr; | |
4898 | ||
4899 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
4900 | +#if defined(CONFIG_NETtel) || defined(CONFIG_eLIA) || defined(CONFIG_DISKtel) || defined(CONFIG_CLEOPATRA) | |
4901 | + /* | |
4902 | + . MAC address should be in FLASH, check that it is valid. | |
4903 | + . If good use it, otherwise use the default. | |
4904 | + */ | |
4905 | + ep = (unsigned char *) (0xf0006000 + (nr++ * 6)); | |
4906 | + if ((ep[0] == 0xff) && (ep[1] == 0xff) && (ep[2] == 0xff) && | |
4907 | + (ep[3] == 0xff) && (ep[4] == 0xff) && (ep[5] == 0xff)) | |
4908 | + ep = (unsigned char *) &smc_defethaddr[0]; | |
4909 | + else if ((ep[0] == 0) && (ep[1] == 0) && (ep[2] == 0) && | |
4910 | + (ep[3] == 0) && (ep[4] == 0) && (ep[5] == 0)) | |
4911 | + ep = (unsigned char *) &smc_defethaddr[0]; | |
4912 | +#else | |
4913 | + ep = (unsigned char *) &smc_defethaddr[0]; | |
4914 | +#endif | |
4915 | +#endif | |
4916 | + | |
4917 | /* | |
4918 | . Get the MAC address ( bank 1, regs 4 - 9 ) | |
4919 | */ | |
4920 | @@ -881,11 +1070,23 @@ | |
4921 | for ( i = 0; i < 6; i += 2 ) { | |
4922 | word address; | |
4923 | ||
4924 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
4925 | + dev->dev_addr[ i ] = ep[ i ]; | |
4926 | + dev->dev_addr[ i + 1 ] = ep[ i + 1 ]; | |
4927 | + address = (((word) ep[ i ]) << 8) | ep[ i + 1 ]; | |
4928 | + outw( address, ioaddr + ADDR0 + i); | |
4929 | +#else | |
4930 | address = inw( ioaddr + ADDR0 + i ); | |
4931 | dev->dev_addr[ i + 1] = address >> 8; | |
4932 | - dev->dev_addr[ i ] = address & 0xFF; | |
4933 | + dev->dev_addr[ i ] = address & 0xFF; | |
4934 | +#endif | |
4935 | } | |
4936 | ||
4937 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
4938 | + /* HACK: to support 2 ethernets when using default address! */ | |
4939 | + smc_defethaddr[5]++; | |
4940 | +#endif | |
4941 | + | |
4942 | /* get the memory information */ | |
4943 | ||
4944 | SMC_SELECT_BANK( 0 ); | |
4945 | @@ -938,6 +1139,7 @@ | |
4946 | . what (s)he is doing. No checking is done!!!! | |
4947 | . | |
4948 | */ | |
4949 | +#ifndef NO_AUTOPROBE | |
4950 | if ( dev->irq < 2 ) { | |
4951 | int trials; | |
4952 | ||
4953 | @@ -955,6 +1157,13 @@ | |
4954 | retval = -ENODEV; | |
4955 | goto err_out; | |
4956 | } | |
4957 | +#else | |
4958 | + if (dev->irq == 0 ) { | |
4959 | + printk(CARDNAME | |
4960 | + ": Autoprobing IRQs is not supported for this configuration.\n"); | |
4961 | + return -ENODEV; | |
4962 | + } | |
4963 | +#endif | |
4964 | ||
4965 | /* now, print out the card info, in a short format.. */ | |
4966 | ||
4967 | @@ -985,14 +1194,23 @@ | |
4968 | ether_setup(dev); | |
4969 | ||
4970 | /* Grab the IRQ */ | |
4971 | - retval = request_irq(dev->irq, &smc_interrupt, 0, dev->name, dev); | |
4972 | - if (retval) { | |
4973 | +#ifdef CONFIG_COLDFIRE | |
4974 | + mcf_autovector(dev->irq); | |
4975 | + retval = request_irq(dev->irq, &smc_interrupt, 0, dev->name, dev); | |
4976 | +#elif defined(CONFIG_M68EZ328) && !defined(CONFIG_CWEZ328) && !defined(CONFIG_CWVZ328) | |
4977 | + retval = request_irq(IRQ_MACHSPEC | dev->irq, &smc_interrupt, | |
4978 | + IRQ_FLG_STD, dev->name, dev); | |
4979 | + if (retval) panic("Unable to attach Lan91C96 intr\n"); | |
4980 | +#else | |
4981 | + retval = request_irq(dev->irq, &smc_interrupt, 0, dev->name, dev); | |
4982 | +#endif | |
4983 | + if (retval) { | |
4984 | printk("%s: unable to get IRQ %d (irqval=%d).\n", dev->name, | |
4985 | dev->irq, retval); | |
4986 | kfree(dev->priv); | |
4987 | dev->priv = NULL; | |
4988 | goto err_out; | |
4989 | - } | |
4990 | + } | |
4991 | ||
4992 | dev->open = smc_open; | |
4993 | dev->stop = smc_close; | |
4994 | @@ -1002,6 +1220,9 @@ | |
4995 | dev->get_stats = smc_query_statistics; | |
4996 | dev->set_multicast_list = smc_set_multicast_list; | |
4997 | ||
4998 | +#ifdef PHY_SETUP | |
4999 | + setup_phy( ioaddr ); | |
5000 | +#endif | |
5001 | return 0; | |
5002 | ||
5003 | err_out: | |
5004 | @@ -1054,7 +1275,7 @@ | |
5005 | */ | |
5006 | static int smc_open(struct net_device *dev) | |
5007 | { | |
5008 | - int ioaddr = dev->base_addr; | |
5009 | + smcio_t ioaddr = dev->base_addr; | |
5010 | ||
5011 | int i; /* used to set hw ethernet address */ | |
5012 | ||
5013 | @@ -1069,6 +1290,11 @@ | |
5014 | /* Select which interface to use */ | |
5015 | ||
5016 | SMC_SELECT_BANK( 1 ); | |
5017 | +#if defined(CONFIG_DISKtel) || defined(CONFIG_SH_KEYWEST) | |
5018 | + /* Setup to use external PHY on smc91c110 */ | |
5019 | + outw( inw( ioaddr + CONFIG ) | CFG_NO_WAIT | CFG_MII_SELECT, | |
5020 | + (ioaddr + CONFIG )); | |
5021 | +#else | |
5022 | if ( dev->if_port == 1 ) { | |
5023 | outw( inw( ioaddr + CONFIG ) & ~CFG_AUI_SELECT, | |
5024 | ioaddr + CONFIG ); | |
5025 | @@ -1077,6 +1303,7 @@ | |
5026 | outw( inw( ioaddr + CONFIG ) | CFG_AUI_SELECT, | |
5027 | ioaddr + CONFIG ); | |
5028 | } | |
5029 | +#endif | |
5030 | ||
5031 | /* | |
5032 | According to Becker, I have to set the hardware address | |
5033 | @@ -1093,6 +1320,18 @@ | |
5034 | } | |
5035 | ||
5036 | netif_start_queue(dev); | |
5037 | + | |
5038 | +#if defined(CONFIG_LEDMAN) && defined(CONFIG_SNAPGEAR) | |
5039 | + /* | |
5040 | + * fix the link status LED's | |
5041 | + */ | |
5042 | + SMC_SELECT_BANK( 0 ); | |
5043 | + ledman_cmd((inw(ioaddr + EPH_STATUS) & ES_LINK_OK) == ES_LINK_OK ? | |
5044 | + LEDMAN_CMD_ON : LEDMAN_CMD_OFF, | |
5045 | + strcmp(dev->name, "eth0") ? | |
5046 | + LEDMAN_LAN2_LINK : LEDMAN_LAN1_LINK); | |
5047 | +#endif | |
5048 | + | |
5049 | return 0; | |
5050 | } | |
5051 | ||
5052 | @@ -1135,19 +1374,23 @@ | |
5053 | static irqreturn_t smc_interrupt(int irq, void * dev_id, struct pt_regs * regs) | |
5054 | { | |
5055 | struct net_device *dev = dev_id; | |
5056 | - int ioaddr = dev->base_addr; | |
5057 | + smcio_t ioaddr = dev->base_addr; | |
5058 | struct smc_local *lp = (struct smc_local *)dev->priv; | |
5059 | ||
5060 | byte status; | |
5061 | word card_stats; | |
5062 | byte mask; | |
5063 | int timeout; | |
5064 | +#ifdef CONFIG_LEDMAN | |
5065 | + int tx; | |
5066 | +#endif | |
5067 | /* state registers */ | |
5068 | word saved_bank; | |
5069 | word saved_pointer; | |
5070 | int handled = 0; | |
5071 | ||
5072 | ||
5073 | + | |
5074 | PRINTK3((CARDNAME": SMC interrupt started \n")); | |
5075 | ||
5076 | saved_bank = inw( ioaddr + BANK_SELECT ); | |
5077 | @@ -1157,7 +1400,7 @@ | |
5078 | ||
5079 | mask = inb( ioaddr + INT_MASK ); | |
5080 | /* clear all interrupts */ | |
5081 | - outb( 0, ioaddr + INT_MASK ); | |
5082 | + SMC_SET_INT( 0 ); | |
5083 | ||
5084 | ||
5085 | /* set a timeout value, so I don't stay here forever */ | |
5086 | @@ -1170,7 +1413,9 @@ | |
5087 | if (!status ) | |
5088 | break; | |
5089 | ||
5090 | - handled = 1; | |
5091 | +#ifdef CONFIG_LEDMAN | |
5092 | + tx = 0; | |
5093 | +#endif | |
5094 | ||
5095 | PRINTK3((KERN_WARNING CARDNAME | |
5096 | ": Handling interrupt status %x \n", status )); | |
5097 | @@ -1184,7 +1429,10 @@ | |
5098 | PRINTK2((KERN_WARNING CARDNAME | |
5099 | ": TX ERROR handled\n")); | |
5100 | smc_tx(dev); | |
5101 | - outb(IM_TX_INT, ioaddr + INTERRUPT ); | |
5102 | + SMC_ACK_INT( IM_TX_INT ); | |
5103 | +#ifdef CONFIG_LEDMAN | |
5104 | + tx = 1; | |
5105 | +#endif | |
5106 | } else if (status & IM_TX_EMPTY_INT ) { | |
5107 | /* update stats */ | |
5108 | SMC_SELECT_BANK( 0 ); | |
5109 | @@ -1200,11 +1448,14 @@ | |
5110 | SMC_SELECT_BANK( 2 ); | |
5111 | PRINTK2((KERN_WARNING CARDNAME | |
5112 | ": TX_BUFFER_EMPTY handled\n")); | |
5113 | - outb( IM_TX_EMPTY_INT, ioaddr + INTERRUPT ); | |
5114 | + SMC_ACK_INT( IM_TX_EMPTY_INT ); | |
5115 | mask &= ~IM_TX_EMPTY_INT; | |
5116 | lp->stats.tx_packets += lp->packets_waiting; | |
5117 | + lp->stats.tx_bytes += lp->saved_skb->len; | |
5118 | lp->packets_waiting = 0; | |
5119 | - | |
5120 | +#ifdef CONFIG_LEDMAN | |
5121 | + tx = 1; | |
5122 | +#endif | |
5123 | } else if (status & IM_ALLOC_INT ) { | |
5124 | PRINTK2((KERN_DEBUG CARDNAME | |
5125 | ": Allocation interrupt \n")); | |
5126 | @@ -1220,22 +1471,50 @@ | |
5127 | netif_wake_queue(dev); | |
5128 | ||
5129 | PRINTK2((CARDNAME": Handoff done successfully.\n")); | |
5130 | +#ifdef CONFIG_LEDMAN | |
5131 | + tx = 1; | |
5132 | +#endif | |
5133 | } else if (status & IM_RX_OVRN_INT ) { | |
5134 | lp->stats.rx_errors++; | |
5135 | lp->stats.rx_fifo_errors++; | |
5136 | - outb( IM_RX_OVRN_INT, ioaddr + INTERRUPT ); | |
5137 | + SMC_ACK_INT( IM_RX_OVRN_INT ); | |
5138 | } else if (status & IM_EPH_INT ) { | |
5139 | +#if defined(CONFIG_LEDMAN) && defined(CONFIG_SNAPGEAR) | |
5140 | + SMC_SELECT_BANK( 0 ); | |
5141 | + ledman_cmd((inw(ioaddr + EPH_STATUS) & ES_LINK_OK) == ES_LINK_OK ? | |
5142 | + LEDMAN_CMD_ON : LEDMAN_CMD_OFF, | |
5143 | + strcmp(dev->name, "eth0")?LEDMAN_LAN2_LINK:LEDMAN_LAN1_LINK); | |
5144 | + SMC_SELECT_BANK( 1 ); | |
5145 | + /* ACK it */ | |
5146 | + outw(inw(ioaddr + CONTROL) & ~CTL_LE_ENABLE, ioaddr + CONTROL); | |
5147 | + outw(inw(ioaddr + CONTROL) | CTL_LE_ENABLE, ioaddr + CONTROL); | |
5148 | + SMC_SELECT_BANK( 2 ); | |
5149 | + SMC_ACK_INT( IM_EPH_INT ); | |
5150 | + continue; /* do not turn the TX/RX leds on */ | |
5151 | +#else | |
5152 | PRINTK((CARDNAME ": UNSUPPORTED: EPH INTERRUPT \n")); | |
5153 | +#endif | |
5154 | } else if (status & IM_ERCV_INT ) { | |
5155 | PRINTK((CARDNAME ": UNSUPPORTED: ERCV INTERRUPT \n")); | |
5156 | - outb( IM_ERCV_INT, ioaddr + INTERRUPT ); | |
5157 | + SMC_ACK_INT( IM_ERCV_INT ); | |
5158 | + } | |
5159 | +#ifdef CONFIG_LEDMAN | |
5160 | + if (tx) { | |
5161 | + ledman_cmd(LEDMAN_CMD_SET, | |
5162 | + strcmp(dev->name, "eth0") == 0 ? LEDMAN_LAN1_TX : | |
5163 | + LEDMAN_LAN2_TX); | |
5164 | + } else { | |
5165 | + ledman_cmd(LEDMAN_CMD_SET, | |
5166 | + strcmp(dev->name, "eth0") == 0 ? LEDMAN_LAN1_RX : | |
5167 | + LEDMAN_LAN2_RX); | |
5168 | } | |
5169 | +#endif | |
5170 | } while ( timeout -- ); | |
5171 | ||
5172 | ||
5173 | /* restore state register */ | |
5174 | SMC_SELECT_BANK( 2 ); | |
5175 | - outb( mask, ioaddr + INT_MASK ); | |
5176 | + SMC_SET_INT( mask ); | |
5177 | ||
5178 | PRINTK3(( KERN_WARNING CARDNAME ": MASK is now %x \n", mask )); | |
5179 | outw( saved_pointer, ioaddr + POINTER ); | |
5180 | @@ -1261,7 +1540,7 @@ | |
5181 | static void smc_rcv(struct net_device *dev) | |
5182 | { | |
5183 | struct smc_local *lp = (struct smc_local *)dev->priv; | |
5184 | - int ioaddr = dev->base_addr; | |
5185 | + smcio_t ioaddr = dev->base_addr; | |
5186 | int packet_number; | |
5187 | word status; | |
5188 | word packet_length; | |
5189 | @@ -1281,8 +1560,16 @@ | |
5190 | outw( PTR_READ | PTR_RCV | PTR_AUTOINC, ioaddr + POINTER ); | |
5191 | ||
5192 | /* First two words are status and packet_length */ | |
5193 | +#ifndef CONFIG_SH_KEYWEST | |
5194 | status = inw( ioaddr + DATA_1 ); | |
5195 | packet_length = inw( ioaddr + DATA_1 ); | |
5196 | +#else | |
5197 | + { | |
5198 | + unsigned int l = inl( ioaddr + DATA_1 ); | |
5199 | + status = l & 0xffff; | |
5200 | + packet_length = l >> 16; | |
5201 | + } | |
5202 | +#endif | |
5203 | ||
5204 | packet_length &= 0x07ff; /* mask off top bits */ | |
5205 | ||
5206 | @@ -1333,9 +1620,17 @@ | |
5207 | packet_length >> 2, packet_length & 3 )); | |
5208 | insl(ioaddr + DATA_1 , data, packet_length >> 2 ); | |
5209 | /* read the left over bytes */ | |
5210 | +#ifndef CONFIG_SH_KEYWEST | |
5211 | insb( ioaddr + DATA_1, data + (packet_length & 0xFFFFFC), | |
5212 | packet_length & 0x3 ); | |
5213 | #else | |
5214 | + if (packet_length & 3) { | |
5215 | + union { unsigned int l; char data[4]; } l; | |
5216 | + l.l = inl(ioaddr + DATA_1); | |
5217 | + memcpy(data + (packet_length & ~0x3), l.data, packet_length & 0x3); | |
5218 | + } | |
5219 | +#endif | |
5220 | +#else | |
5221 | PRINTK3((" Reading %d words and %d byte(s) \n", | |
5222 | (packet_length >> 1 ), packet_length & 1 )); | |
5223 | insw(ioaddr + DATA_1 , data, packet_length >> 1); | |
5224 | @@ -1386,7 +1681,7 @@ | |
5225 | ************************************************************************/ | |
5226 | static void smc_tx( struct net_device * dev ) | |
5227 | { | |
5228 | - int ioaddr = dev->base_addr; | |
5229 | + smcio_t ioaddr = dev->base_addr; | |
5230 | struct smc_local *lp = (struct smc_local *)dev->priv; | |
5231 | byte saved_packet; | |
5232 | byte packet_no; | |
5233 | @@ -1400,7 +1695,12 @@ | |
5234 | packet_no &= 0x7F; | |
5235 | ||
5236 | /* select this as the packet to read from */ | |
5237 | - outb( packet_no, ioaddr + PNR_ARR ); | |
5238 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
5239 | + outw( packet_no, ioaddr + PNR_ARR ); | |
5240 | +#else | |
5241 | + outb( packet_no, ioaddr + PNR_ARR ); | |
5242 | +#endif | |
5243 | + | |
5244 | ||
5245 | /* read the first word from this packet */ | |
5246 | outw( PTR_AUTOINC | PTR_READ, ioaddr + POINTER ); | |
5247 | @@ -1411,8 +1711,10 @@ | |
5248 | lp->stats.tx_errors++; | |
5249 | if ( tx_status & TS_LOSTCAR ) lp->stats.tx_carrier_errors++; | |
5250 | if ( tx_status & TS_LATCOL ) { | |
5251 | +#if 0 | |
5252 | printk(KERN_DEBUG CARDNAME | |
5253 | ": Late collision occurred on last xmit.\n"); | |
5254 | +#endif | |
5255 | lp->stats.tx_window_errors++; | |
5256 | } | |
5257 | #if 0 | |
5258 | @@ -1433,7 +1735,11 @@ | |
5259 | /* one less packet waiting for me */ | |
5260 | lp->packets_waiting--; | |
5261 | ||
5262 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
5263 | + outw( saved_packet, ioaddr + PNR_ARR ); | |
5264 | +#else | |
5265 | outb( saved_packet, ioaddr + PNR_ARR ); | |
5266 | +#endif | |
5267 | return; | |
5268 | } | |
5269 | ||
5270 | @@ -1451,6 +1757,11 @@ | |
5271 | /* clear everything */ | |
5272 | smc_shutdown( dev->base_addr ); | |
5273 | ||
5274 | +#if defined(CONFIG_LEDMAN) && defined(CONFIG_SNAPGEAR) | |
5275 | + ledman_cmd(LEDMAN_CMD_OFF, | |
5276 | + strcmp(dev->name, "eth0")?LEDMAN_LAN2_LINK : LEDMAN_LAN1_LINK); | |
5277 | +#endif | |
5278 | + | |
5279 | /* Update the statistics here. */ | |
5280 | return 0; | |
5281 | } | |
5282 | @@ -1475,7 +1786,7 @@ | |
5283 | */ | |
5284 | static void smc_set_multicast_list(struct net_device *dev) | |
5285 | { | |
5286 | - short ioaddr = dev->base_addr; | |
5287 | + smcio_t ioaddr = dev->base_addr; | |
5288 | ||
5289 | SMC_SELECT_BANK(0); | |
5290 | if ( dev->flags & IFF_PROMISC ) | |
5291 | @@ -1522,6 +1833,12 @@ | |
5292 | } | |
5293 | } | |
5294 | ||
5295 | +#ifdef PHY_SETUP | |
5296 | +static int phy_delay1 = 4; | |
5297 | +static int phy_delay2 = 1; | |
5298 | +static int phy_delay3 = 100; | |
5299 | +#endif | |
5300 | + | |
5301 | #ifdef MODULE | |
5302 | ||
5303 | static struct net_device devSMC9194; | |
5304 | @@ -1537,6 +1854,15 @@ | |
5305 | MODULE_PARM_DESC(irq, "SMC 99194 IRQ number"); | |
5306 | MODULE_PARM_DESC(ifport, "SMC 99194 interface port (0-default, 1-TP, 2-AUI)"); | |
5307 | ||
5308 | +#ifdef PHY_SETUP | |
5309 | +MODULE_PARM(phy_delay1, "i"); | |
5310 | +MODULE_PARM(phy_delay2, "i"); | |
5311 | +MODULE_PARM(phy_delay3, "i"); | |
5312 | +MODULE_PARM_DESC(phy_delay1, "Per MII clock delay [4]"); | |
5313 | +MODULE_PARM_DESC(phy_delay2, "General delay [1]"); | |
5314 | +MODULE_PARM_DESC(phy_delay3, "pre probe delay [100]"); | |
5315 | +#endif | |
5316 | + | |
5317 | int init_module(void) | |
5318 | { | |
5319 | int result; | |
5320 | @@ -1545,6 +1871,10 @@ | |
5321 | printk(KERN_WARNING | |
5322 | CARDNAME": You shouldn't use auto-probing with insmod!\n" ); | |
5323 | ||
5324 | +#ifdef PHY_SETUP | |
5325 | + printk(CARDNAME ": phy_delays %d %d %d\n", phy_delay1, phy_delay2, | |
5326 | + phy_delay3); | |
5327 | +#endif | |
5328 | /* copy the parameters from insmod into the device structure */ | |
5329 | devSMC9194.base_addr = io; | |
5330 | devSMC9194.irq = irq; | |
5331 | @@ -1558,6 +1888,7 @@ | |
5332 | ||
5333 | void cleanup_module(void) | |
5334 | { | |
5335 | + /* No need to check MOD_IN_USE, as sys_delete_module() checks. */ | |
5336 | unregister_netdev(&devSMC9194); | |
5337 | ||
5338 | free_irq(devSMC9194.irq, &devSMC9194); | |
5339 | @@ -1568,3 +1899,437 @@ | |
5340 | } | |
5341 | ||
5342 | #endif /* MODULE */ | |
5343 | + | |
5344 | + | |
5345 | +#ifdef PHY_SETUP | |
5346 | +/*----------------------------------------------------------- | |
5347 | + . PHY/MII setup routines | |
5348 | + . | |
5349 | +*/ | |
5350 | + | |
5351 | +#define phy_delay(x) ({ int d; for (d = 0; d < 100; d++) udelay((x) * 10); }) | |
5352 | + | |
5353 | +/* | |
5354 | + * Ports for talking to the PHY/MII | |
5355 | + */ | |
5356 | + | |
5357 | +#define NV_CONTROL 0x10 | |
5358 | +#define MIICTRL 0x30 | |
5359 | +#define MIIDATA 0x34 | |
5360 | +#define MIICFG 0x38 | |
5361 | + | |
5362 | +#define MIIREAD 0x0001 | |
5363 | +#define MIIWRITE 0x0002 | |
5364 | + | |
5365 | +#define MDO 0x01 /* MII Register bits */ | |
5366 | +#define MDI 0x02 | |
5367 | +#define MCLK 0x04 | |
5368 | +#define MDOE 0x08 | |
5369 | +#define MALL 0x0F | |
5370 | +#define OPWrite 0x01 | |
5371 | +#define OPRead 0x02 | |
5372 | + | |
5373 | + | |
5374 | +#define PHY_CR 0 /* PHY Registers and bits */ | |
5375 | +#define PHY_CR_Reset 0x8000 | |
5376 | +#define PHY_CR_Speed 0x2000 | |
5377 | +#define PHY_CR_Duplex 0x0100 | |
5378 | + | |
5379 | +#define PHY_SR 1 | |
5380 | +#define PHY_ID1 2 | |
5381 | +#define PHY_ID2 3 | |
5382 | + | |
5383 | +/* | |
5384 | + * PHY propietary registers | |
5385 | + */ | |
5386 | + | |
5387 | +#define PHY_NATIONAL_PAR 0x19 | |
5388 | +#define PHY_NATIONAL_PAR_DUPLEX 0x0080 | |
5389 | +#define PHY_NATIONAL_PAR_SPEED_10 0x0040 | |
5390 | + | |
5391 | +#define PHY_TDK_DIAG 0x12 | |
5392 | +#define PHY_TDK_DIAG_DUPLEX 0x0800 | |
5393 | +#define PHY_TDK_DIAG_RATE 0x0400 | |
5394 | + | |
5395 | +#define PHY_QSI_BASETX 0x1F | |
5396 | +#define PHY_QSI_BASETX_OPMODE_MASK 0x001c | |
5397 | +#define PHY_QSI_BASETX_OPMODE_10HD (2<<0x1) | |
5398 | +#define PHY_QSI_BASETX_OPMODE_100HD (2<<0x2) | |
5399 | +#define PHY_QSI_BASETX_OPMODE_10FD (2<<0x5) | |
5400 | +#define PHY_QSI_BASETX_OPMODE_100FD (2<<0x6) | |
5401 | + | |
5402 | +#define PHY_SEEQ_STATUS_OUTPUT 0x12 | |
5403 | +#define PHY_SEEQ_SPD_DET 0x80 | |
5404 | +#define PHY_SEEQ_DPLX_DET 0x40 | |
5405 | + | |
5406 | +#define PHY_OUI_QSI 0x006051 | |
5407 | +#define PHY_OUI_TDK 0x00C039 | |
5408 | +#define PHY_OUI_MITELSMSC 0x00A087 | |
5409 | +#define PHY_OUI_NATIONAL 0x080017 | |
5410 | +#define PHY_OUI_SEEQSMSC 0x0005BE | |
5411 | + | |
5412 | +#define NWAY_TIMEOUT 10 | |
5413 | + | |
5414 | +#define MAC_IS_FEAST() (1) | |
5415 | +#define MAC_IS_EPIC() (0) | |
5416 | + | |
5417 | +static void | |
5418 | +clkmdio(smcio_t ioaddr, unsigned int MGMTData) | |
5419 | +{ | |
5420 | + outw(MGMTData, ioaddr + MGMT); | |
5421 | + udelay(phy_delay1); | |
5422 | + outw(MGMTData | MCLK, ioaddr + MGMT); | |
5423 | + udelay(phy_delay1); | |
5424 | +} | |
5425 | + | |
5426 | + | |
5427 | +static unsigned | |
5428 | +PHYAccess( | |
5429 | + smcio_t ioaddr, | |
5430 | + unsigned char PHYAdd, | |
5431 | + unsigned char RegAdd, | |
5432 | + unsigned char OPCode, | |
5433 | + unsigned wData) | |
5434 | +{ | |
5435 | + int i; | |
5436 | + unsigned MGMTval; | |
5437 | + | |
5438 | + // Filter unused bits from input variables. | |
5439 | + | |
5440 | + PHYAdd &= 0x1F; | |
5441 | + RegAdd &= 0x1F; | |
5442 | + OPCode &= 0x03; | |
5443 | + | |
5444 | + if (MAC_IS_FEAST()) { | |
5445 | + MGMTval = inw(ioaddr + MGMT) & (MALL ^ 0xFFFF); | |
5446 | + | |
5447 | + // Output Preamble (32 '1's) | |
5448 | + | |
5449 | + for (i = 0; i < 32; i++) | |
5450 | + clkmdio(ioaddr, MGMTval | MDOE | MDO); | |
5451 | + | |
5452 | + // Output Start of Frame ('01') | |
5453 | + | |
5454 | + for (i = 0; i < 2; i++) | |
5455 | + clkmdio(ioaddr, MGMTval | MDOE | i); | |
5456 | + | |
5457 | + // Output OPCode ('01' for write or '10' for Read) | |
5458 | + | |
5459 | + for (i = 1; i >= 0; i--) | |
5460 | + clkmdio(ioaddr, MGMTval | MDOE | ((OPCode>>i) & 0x01) ); | |
5461 | + | |
5462 | + // Output PHY Address | |
5463 | + | |
5464 | + for (i = 4; i >= 0; i--) | |
5465 | + clkmdio(ioaddr, MGMTval | MDOE | ((PHYAdd>>i) & 0x01) ); | |
5466 | + | |
5467 | + // Output Register Address | |
5468 | + | |
5469 | + for (i = 4; i >= 0; i--) | |
5470 | + clkmdio(ioaddr, MGMTval | MDOE | ((RegAdd>>i) & 0x01) ); | |
5471 | + | |
5472 | + if (OPCode == OPRead) { | |
5473 | + // Read Operation | |
5474 | + | |
5475 | + // Implement Turnaround ('Z0') | |
5476 | + | |
5477 | + clkmdio(ioaddr, MGMTval); | |
5478 | + // clkmdio(ioaddr, MGMTval | MDOE); | |
5479 | + | |
5480 | + // Read Data | |
5481 | + | |
5482 | + wData = 0; | |
5483 | + | |
5484 | + for (i = 15; i >= 0; i--) { | |
5485 | + clkmdio(ioaddr, MGMTval); | |
5486 | + wData |= (((inw(ioaddr + MGMT) & MDI) >> 1) << i); | |
5487 | + } | |
5488 | + | |
5489 | + // Add Idle state | |
5490 | + | |
5491 | + clkmdio(ioaddr, MGMTval); | |
5492 | + | |
5493 | + return (wData); | |
5494 | + } else { | |
5495 | + // Write Operation | |
5496 | + | |
5497 | + // Implement Turnaround ('10') | |
5498 | + | |
5499 | + for (i = 1; i >= 0; i--) | |
5500 | + clkmdio(ioaddr, MGMTval | MDOE | ((2>>i) & 0x01)); | |
5501 | + | |
5502 | + // Write Data | |
5503 | + | |
5504 | + for (i = 15; i >= 0; i--) | |
5505 | + clkmdio(ioaddr, MGMTval | MDOE | ((wData>>i) & 0x01)); | |
5506 | + | |
5507 | + // Add Idle state | |
5508 | + | |
5509 | + clkmdio(ioaddr, MGMTval); | |
5510 | + | |
5511 | + return (1); | |
5512 | + } | |
5513 | + } | |
5514 | + | |
5515 | + if (MAC_IS_EPIC()) { | |
5516 | + if (OPCode == OPRead) { | |
5517 | + // Read Operation | |
5518 | + outw((((unsigned)PHYAdd)<<9) | (((unsigned)RegAdd)<<4) | MIIREAD, | |
5519 | + ioaddr + MIICTRL); | |
5520 | + phy_delay(phy_delay2); | |
5521 | + wData = inw(MIIDATA); | |
5522 | + return(wData); | |
5523 | + } else { | |
5524 | + // Write Operation | |
5525 | + outw(wData, ioaddr + MIIDATA); | |
5526 | + outw((((unsigned)PHYAdd)<<9) | (((unsigned)RegAdd)<<4) | MIIWRITE, | |
5527 | + ioaddr + MIICTRL); | |
5528 | + phy_delay(phy_delay2); | |
5529 | + return(1); | |
5530 | + } | |
5531 | + } | |
5532 | + | |
5533 | + return(1); | |
5534 | + | |
5535 | +} | |
5536 | + | |
5537 | + | |
5538 | +static unsigned char | |
5539 | +DetectPHY( | |
5540 | + smcio_t ioaddr, | |
5541 | + unsigned long *OUI, | |
5542 | + unsigned char *Model, | |
5543 | + unsigned char *Revision) | |
5544 | +{ | |
5545 | + unsigned int PhyId1, PhyId2; | |
5546 | + unsigned char PhyAdd=0xff; | |
5547 | + int Count; | |
5548 | + | |
5549 | + for (Count=31; Count >= 0; Count--) { | |
5550 | + PhyId1 = PHYAccess(ioaddr, Count, PHY_ID1, OPRead, 0); | |
5551 | + PhyId1 = PHYAccess(ioaddr, Count, PHY_ID1, OPRead, 0); | |
5552 | + PhyId2 = PHYAccess(ioaddr, Count, PHY_ID2, OPRead, 0); | |
5553 | + PhyId2 = PHYAccess(ioaddr, Count, PHY_ID2, OPRead, 0); | |
5554 | + | |
5555 | + if (PhyId1 > 0x0000 && PhyId1 < 0xffff && PhyId2 > 0x0000 && | |
5556 | + PhyId2 < 0xffff && PhyId1 != 0x8000 && PhyId2 != 0x8000) { | |
5557 | + PhyAdd = (unsigned char) Count; | |
5558 | + break; | |
5559 | + } | |
5560 | + phy_delay(phy_delay2); | |
5561 | + } | |
5562 | + | |
5563 | + *OUI = (((unsigned long) PhyId1) << 6) | ((PhyId2 & 0xfc00) >> 10); | |
5564 | + *Model = (unsigned char) ((PhyId2 & 0x03f0) >> 4); | |
5565 | + *Revision = (unsigned char) (PhyId2 & 0x000f); | |
5566 | + | |
5567 | + return(PhyAdd); | |
5568 | +} | |
5569 | + | |
5570 | + | |
5571 | +static int | |
5572 | +setup_phy(smcio_t ioaddr) | |
5573 | +{ | |
5574 | + int duplex = 0; /* 0 = Half, !0 = Full */ | |
5575 | + int speed = 0; /* 0 = 10Mbps, !0 = 100Mbps */ | |
5576 | + char *report = ""; | |
5577 | + unsigned long OUI; | |
5578 | + unsigned char Model, Revision; | |
5579 | + | |
5580 | + unsigned int i, PHYConfig, PHYConfig2, data; | |
5581 | + unsigned char PHYAdd, ositech = 0; | |
5582 | + | |
5583 | + printk("SMCPHY: "); | |
5584 | +#if 0 | |
5585 | + ositech = 1; | |
5586 | +#endif | |
5587 | + | |
5588 | + //Setting the AUI Select Bit for 91C110 PCMCIA Design. 11/23/99 PG | |
5589 | + if (ositech) { | |
5590 | + SMC_SELECT_BANK( 1 ); | |
5591 | + data = inw(ioaddr + BANK_SELECT); | |
5592 | + outw(data | 0x0100, ioaddr); | |
5593 | + } | |
5594 | + | |
5595 | + if (MAC_IS_FEAST()) | |
5596 | + SMC_SELECT_BANK ( 3 ); | |
5597 | + | |
5598 | + PHYAdd = DetectPHY(ioaddr, &OUI, &Model, &Revision); | |
5599 | + | |
5600 | + if (PHYAdd > 31) { | |
5601 | + printk("UNRECOVERABLE ERROR: PHY is not present or not supported\n"); | |
5602 | + return(-1); | |
5603 | + } | |
5604 | + | |
5605 | + //Setup NV_CONTROL for the cardbus card. | |
5606 | + if (OUI == PHY_OUI_TDK) | |
5607 | + outw(0x7c03, ioaddr + NV_CONTROL); | |
5608 | + | |
5609 | + // Save Register 0. | |
5610 | + | |
5611 | + if (OUI == PHY_OUI_TDK) | |
5612 | + PHYAccess(ioaddr, PHYAdd, PHY_CR, OPRead, 0); | |
5613 | + PHYConfig = PHYAccess(ioaddr, PHYAdd,PHY_CR,OPRead,0); | |
5614 | + | |
5615 | + if (OUI == PHY_OUI_TDK) { | |
5616 | + outw(0x0012, ioaddr + MIICFG); /* Set ENABLE_694 */ | |
5617 | + /* if using EPIC, Hardware Reset the PHY from the MAC */ | |
5618 | + outw(inw(ioaddr + CONTROL) | 0x4000, ioaddr + CONTROL); | |
5619 | + phy_delay(phy_delay2); | |
5620 | + outw(inw(ioaddr + CONTROL) & (~0x4000), ioaddr + CONTROL); | |
5621 | + phy_delay(phy_delay2); | |
5622 | + } | |
5623 | + | |
5624 | + /* Reset PHY */ | |
5625 | + PHYAccess(ioaddr, PHYAdd, PHY_CR, OPWrite, PHY_CR_Reset); | |
5626 | + if (OUI == PHY_OUI_TDK) | |
5627 | + PHYAccess(ioaddr, PHYAdd, PHY_CR, OPWrite, PHY_CR_Reset); | |
5628 | + | |
5629 | + for (i = 0; i < 500; i++) { | |
5630 | + if (OUI == PHY_OUI_TDK) | |
5631 | + PHYAccess(ioaddr, PHYAdd, PHY_CR, OPRead, 0); | |
5632 | + | |
5633 | + if (PHYAccess(ioaddr, PHYAdd, PHY_CR, OPRead, 0) & PHY_CR_Reset) | |
5634 | + phy_delay(phy_delay2); | |
5635 | + else | |
5636 | + break; | |
5637 | + } | |
5638 | + | |
5639 | + if (i == 500) { | |
5640 | + printk("UNRECOVERABLE ERROR: Could not reset PHY\n"); | |
5641 | + return(-1); | |
5642 | + } | |
5643 | + | |
5644 | + /* Write selected configuration to the PHY and verify it by reading back */ | |
5645 | + /* Set Advertising Register for all 10/100 and Half/Full combinations */ | |
5646 | + | |
5647 | + if (OUI == PHY_OUI_TDK) | |
5648 | + PHYConfig = PHYAccess(ioaddr, PHYAdd, 4, OPRead, 0); | |
5649 | + PHYConfig = PHYAccess(ioaddr, PHYAdd, 4, OPRead, 0); | |
5650 | + PHYConfig |= 0x01e0; | |
5651 | + PHYAccess(ioaddr, PHYAdd, 4, OPWrite, PHYConfig); | |
5652 | + if (OUI == PHY_OUI_TDK) | |
5653 | + PHYAccess(ioaddr, PHYAdd, 4, OPWrite, PHYConfig); | |
5654 | + | |
5655 | + /* Start 1 */ | |
5656 | + | |
5657 | + /* National PHY requires clear before set 1 enable. */ | |
5658 | + PHYAccess(ioaddr, PHYAdd, 0, OPWrite, 0x0000); | |
5659 | + PHYAccess(ioaddr, PHYAdd, 0, OPWrite, 0x1200); | |
5660 | + if (OUI == PHY_OUI_TDK) | |
5661 | + PHYAccess(ioaddr, PHYAdd, 0, OPWrite, 0x1200); | |
5662 | + | |
5663 | + /* Wait for completion */ | |
5664 | + for (i = 0; i < NWAY_TIMEOUT * 10; i++) { | |
5665 | + printk("%c\b", "|/-\\"[i&3]); | |
5666 | + | |
5667 | + phy_delay(phy_delay3); | |
5668 | + | |
5669 | + PHYConfig = PHYAccess(ioaddr, PHYAdd, 1, OPRead, 0); | |
5670 | + PHYConfig2 = PHYAccess(ioaddr, PHYAdd, 1, OPRead, 0); | |
5671 | + | |
5672 | + if (PHYConfig != PHYConfig2) /* Value is not stable */ | |
5673 | + continue; | |
5674 | + if (PHYConfig & 0x0010) /* Remote Fault */ | |
5675 | + continue; | |
5676 | + if ((PHYConfig == 0x0000) || (PHYConfig == 0xffff)) /* invalid value */ | |
5677 | + continue; | |
5678 | + if (PHYConfig & 0x0020) | |
5679 | + break; | |
5680 | + } | |
5681 | + | |
5682 | + /* Now read the results of the NWAY. */ | |
5683 | + | |
5684 | + if (OUI == PHY_OUI_TDK) | |
5685 | + PHYConfig = PHYAccess(ioaddr, PHYAdd, 5, OPRead, 0); | |
5686 | + PHYConfig = PHYAccess(ioaddr, PHYAdd, 5, OPRead, 0); | |
5687 | + | |
5688 | + if (PHYConfig != 0) { | |
5689 | + /* Got real NWAY information here */ | |
5690 | + report = "ANLPA"; | |
5691 | + speed = (PHYConfig & 0x0180); | |
5692 | + duplex = (PHYConfig & 0x0140); | |
5693 | + } else { | |
5694 | + /* | |
5695 | + * ANLPA was 0 so NWAY did not complete or is not reported fine. | |
5696 | + * Get the info from propietary regs or from the control register. | |
5697 | + */ | |
5698 | + report = "Prop."; /* Proprietary Status */ | |
5699 | + | |
5700 | + switch (OUI) { | |
5701 | + case PHY_OUI_NATIONAL: | |
5702 | + PHYConfig = PHYAccess(ioaddr, PHYAdd, PHY_NATIONAL_PAR, OPRead, 0); | |
5703 | + duplex = (PHYConfig & PHY_NATIONAL_PAR_DUPLEX); | |
5704 | + speed = ! (PHYConfig & PHY_NATIONAL_PAR_SPEED_10); | |
5705 | + break; | |
5706 | + | |
5707 | + case PHY_OUI_TDK: | |
5708 | + PHYConfig = PHYAccess(ioaddr, PHYAdd, PHY_TDK_DIAG, OPRead, 0); | |
5709 | + PHYConfig = PHYAccess(ioaddr, PHYAdd, PHY_TDK_DIAG, OPRead, 0); | |
5710 | + speed = ((Revision < 7) && ((PHYConfig & 0x300) == 0x300)) || | |
5711 | + ((Revision >= 7) && (PHYConfig & PHY_TDK_DIAG_RATE)); | |
5712 | + duplex = ((Revision >= 7) && (PHYConfig & PHY_TDK_DIAG_DUPLEX)); | |
5713 | + break; | |
5714 | + | |
5715 | + case PHY_OUI_QSI: | |
5716 | + PHYConfig = PHYAccess(ioaddr, PHYAdd, PHY_QSI_BASETX, OPRead, 0); | |
5717 | + PHYConfig &= PHY_QSI_BASETX_OPMODE_MASK; | |
5718 | + duplex = (PHYConfig & PHY_QSI_BASETX_OPMODE_10FD) || | |
5719 | + (PHYConfig & PHY_QSI_BASETX_OPMODE_100FD); | |
5720 | + speed = (PHYConfig & PHY_QSI_BASETX_OPMODE_100HD) || | |
5721 | + (PHYConfig & PHY_QSI_BASETX_OPMODE_100FD); | |
5722 | + break; | |
5723 | + | |
5724 | + case PHY_OUI_SEEQSMSC: | |
5725 | + PHYConfig=PHYAccess(ioaddr,PHYAdd,PHY_SEEQ_STATUS_OUTPUT,OPRead,0); | |
5726 | + duplex = (PHYConfig & PHY_SEEQ_DPLX_DET); | |
5727 | + speed = (PHYConfig & PHY_SEEQ_SPD_DET); | |
5728 | + break; | |
5729 | + | |
5730 | + default: | |
5731 | + report = "Command"; | |
5732 | + PHYConfig = PHYAccess(ioaddr, PHYAdd, 0, OPRead, 0); | |
5733 | + speed = (PHYConfig & 0x2000); | |
5734 | + duplex = (PHYConfig & 0x0100); | |
5735 | + break; | |
5736 | + } | |
5737 | + } | |
5738 | + | |
5739 | + /* Do we need to adjust the Carrier sense on full duplex FEAST issue ? */ | |
5740 | + | |
5741 | + if (duplex && MAC_IS_FEAST() && (OUI == PHY_OUI_MITELSMSC)) | |
5742 | + PHYAccess(ioaddr, PHYAdd, 0x18, OPWrite, | |
5743 | + 0x0020 | PHYAccess(ioaddr, PHYAdd, 0x18, OPRead, 0)); | |
5744 | + | |
5745 | + /* Display what we learned */ | |
5746 | + | |
5747 | + printk(" %s-duplex %d Mbps ", duplex ? "Full" : "Half", speed ? 100 : 10); | |
5748 | + | |
5749 | + if (MAC_IS_FEAST()) | |
5750 | + printk("FEAST "); | |
5751 | + if (MAC_IS_EPIC()) | |
5752 | + printk("EPIC "); | |
5753 | + | |
5754 | + switch (OUI) { | |
5755 | + case PHY_OUI_QSI: printk("QSI"); break; | |
5756 | + case PHY_OUI_TDK: printk("TDK"); break; | |
5757 | + case PHY_OUI_MITELSMSC: printk("MITEL/SMSC180"); break; | |
5758 | + case PHY_OUI_NATIONAL: printk("NATIONAL"); break; | |
5759 | + case PHY_OUI_SEEQSMSC: printk("SEEQ/SMSC183"); break; | |
5760 | + default: printk("%06lX(UNKNOWN)",OUI); break; | |
5761 | + } | |
5762 | + | |
5763 | + printk(" Model=%02X Rev=%02X ", Model, Revision); | |
5764 | +#if DEBUG | |
5765 | + printk("Addr=%02X ", PHYAdd); | |
5766 | + printk("Conf=%s ", report); | |
5767 | +#endif | |
5768 | + if (i == NWAY_TIMEOUT) | |
5769 | + printk("TIMEOUT!\n"); | |
5770 | + else | |
5771 | + printk("Done.\n"); | |
5772 | + return(0); | |
5773 | +} | |
5774 | + | |
5775 | +/*----------------------------------------------------------- */ | |
5776 | +#endif /* PHY_SETUP */ | |
5777 | diff -Naur linux-2.6.0-test8/drivers/net/smc9194.h linux-2.6.0-test8-uc0/drivers/net/smc9194.h | |
5778 | --- linux-2.6.0-test8/drivers/net/smc9194.h 2003-10-20 09:10:30.000000000 +1000 | |
5779 | +++ linux-2.6.0-test8-uc0/drivers/net/smc9194.h 2003-10-20 09:12:25.833264184 +1000 | |
5780 | @@ -96,6 +96,8 @@ | |
5781 | /* BANK 1 */ | |
5782 | #define CONFIG 0 | |
5783 | #define CFG_AUI_SELECT 0x100 | |
5784 | +#define CFG_NO_WAIT 0x1000 | |
5785 | +#define CFG_MII_SELECT 0x8000 | |
5786 | #define BASE 2 | |
5787 | #define ADDR0 4 | |
5788 | #define ADDR1 6 | |
5789 | @@ -208,6 +210,44 @@ | |
5790 | inw( ioaddr + RCR );\ | |
5791 | inw( ioaddr + RCR ); } | |
5792 | ||
5793 | +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) | |
5794 | + | |
5795 | +/* this enables an interrupt in the interrupt mask register */ | |
5796 | +#define SMC_ENABLE_INT(x) {\ | |
5797 | + unsigned char mask;\ | |
5798 | + SMC_SELECT_BANK(2);\ | |
5799 | + mask = inb( ioaddr + INT_MASK );\ | |
5800 | + mask |= (x);\ | |
5801 | + outw( mask << 8, ioaddr + INTERRUPT ); \ | |
5802 | +} | |
5803 | + | |
5804 | +/* this disables an interrupt from the interrupt mask register */ | |
5805 | + | |
5806 | +#define SMC_DISABLE_INT(x) {\ | |
5807 | + unsigned char mask;\ | |
5808 | + SMC_SELECT_BANK(2);\ | |
5809 | + mask = inb( ioaddr + INT_MASK );\ | |
5810 | + mask &= ~(x);\ | |
5811 | + outw( mask << 8, ioaddr + INTERRUPT ); \ | |
5812 | +} | |
5813 | + | |
5814 | +/* set the interrupt mask register */ | |
5815 | +#define SMC_SET_INT(x) {\ | |
5816 | + SMC_SELECT_BANK(2);\ | |
5817 | + outw( ((unsigned short) (x)) << 8, ioaddr + INTERRUPT );\ | |
5818 | +} | |
5819 | + | |
5820 | +/* acknowledge an interrupt */ | |
5821 | +#define SMC_ACK_INT(x) {\ | |
5822 | + unsigned short val;\ | |
5823 | + /* assume BANK 2 selected */\ | |
5824 | + val = inb( ioaddr + INT_MASK );\ | |
5825 | + val = (val << 8) | (x);\ | |
5826 | + outw( val, ioaddr + INTERRUPT );\ | |
5827 | +} | |
5828 | + | |
5829 | +#else | |
5830 | + | |
5831 | /* this enables an interrupt in the interrupt mask register */ | |
5832 | #define SMC_ENABLE_INT(x) {\ | |
5833 | unsigned char mask;\ | |
5834 | @@ -227,6 +267,17 @@ | |
5835 | outb( mask, ioaddr + INT_MASK ); \ | |
5836 | } | |
5837 | ||
5838 | +/* set the interrupt mask register */ | |
5839 | +#define SMC_SET_INT(x) {\ | |
5840 | + SMC_SELECT_BANK(2);\ | |
5841 | + outb( (x), ioaddr + INT_MASK );\ | |
5842 | +} | |
5843 | + | |
5844 | +/* acknowledge an interrupt */ | |
5845 | +#define SMC_ACK_INT(x) outb( (x), ioaddr + INTERRUPT ) | |
5846 | + | |
5847 | +#endif | |
5848 | + | |
5849 | /*---------------------------------------------------------------------- | |
5850 | . Define the interrupts that I want to receive from the card | |
5851 | . | |
5852 | diff -Naur linux-2.6.0-test8/drivers/serial/68328serial.c linux-2.6.0-test8-uc0/drivers/serial/68328serial.c | |
5853 | --- linux-2.6.0-test8/drivers/serial/68328serial.c 2003-10-20 09:10:41.000000000 +1000 | |
5854 | +++ linux-2.6.0-test8-uc0/drivers/serial/68328serial.c 2003-10-20 09:12:40.942967160 +1000 | |
5855 | @@ -4,7 +4,7 @@ | |
5856 | * Copyright (C) 1998 Kenneth Albanowski <kjahds@kjahds.com> | |
5857 | * Copyright (C) 1998, 1999 D. Jeff Dionne <jeff@uclinux.org> | |
5858 | * Copyright (C) 1999 Vladimir Gurevich <vgurevic@cisco.com> | |
5859 | - * Copyright (C) 2002 David McCullough <davidm@snapgear.com> | |
5860 | + * Copyright (C) 2002-2003 David McCullough <davidm@snapgear.com> | |
5861 | * Copyright (C) 2002 Greg Ungerer <gerg@snapgear.com> | |
5862 | * | |
5863 | * VZ Support/Fixes Evan Stawnyczy <e@lineo.ca> | |
5864 | @@ -67,12 +67,12 @@ | |
5865 | #endif | |
5866 | ||
5867 | static struct m68k_serial m68k_soft[NR_PORTS]; | |
5868 | -struct m86k_serial *IRQ_ports[NR_IRQS]; | |
5869 | +struct m68k_serial *IRQ_ports[NR_IRQS]; | |
5870 | ||
5871 | static unsigned int uart_irqs[NR_PORTS] = UART_IRQ_DEFNS; | |
5872 | ||
5873 | /* multiple ports are contiguous in memory */ | |
5874 | -m68328_uart *uart_addr = USTCNT_ADDR; | |
5875 | +m68328_uart *uart_addr = (m68328_uart *)USTCNT_ADDR; | |
5876 | ||
5877 | struct tty_struct m68k_ttys; | |
5878 | struct m68k_serial *m68k_consinfo = 0; | |
5879 | @@ -400,7 +400,7 @@ | |
5880 | /* | |
5881 | * This is the serial driver's generic interrupt routine | |
5882 | */ | |
5883 | -void rs_interrupt(int irq, void *dev_id, struct pt_regs * regs) | |
5884 | +irqreturn_t rs_interrupt(int irq, void *dev_id, struct pt_regs * regs) | |
5885 | { | |
5886 | struct m68k_serial * info; | |
5887 | m68328_uart *uart; | |
5888 | @@ -409,7 +409,7 @@ | |
5889 | ||
5890 | info = IRQ_ports[irq]; | |
5891 | if(!info) | |
5892 | - return; | |
5893 | + return IRQ_NONE; | |
5894 | ||
5895 | uart = &uart_addr[info->line]; | |
5896 | rx = uart->urx.w; | |
5897 | @@ -422,7 +422,7 @@ | |
5898 | #else | |
5899 | receive_chars(info, regs, rx); | |
5900 | #endif | |
5901 | - return; | |
5902 | + return IRQ_HANDLED; | |
5903 | } | |
5904 | ||
5905 | static void do_softint(void *private) | |
5906 | @@ -777,7 +777,7 @@ | |
5907 | save_flags(flags); | |
5908 | while (1) { | |
5909 | cli(); | |
5910 | - c = min(count, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1, | |
5911 | + c = min_t(int, count, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1, | |
5912 | SERIAL_XMIT_SIZE - info->xmit_head)); | |
5913 | if (c <= 0) | |
5914 | break; | |
5915 | @@ -785,7 +785,7 @@ | |
5916 | if (from_user) { | |
5917 | down(&tmp_buf_sem); | |
5918 | copy_from_user(tmp_buf, buf, c); | |
5919 | - c = min(c, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1, | |
5920 | + c = min_t(int, c, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1, | |
5921 | SERIAL_XMIT_SIZE - info->xmit_head)); | |
5922 | memcpy(info->xmit_buf + info->xmit_head, tmp_buf, c); | |
5923 | up(&tmp_buf_sem); | |
5924 | @@ -1056,11 +1056,10 @@ | |
5925 | send_break(info, arg ? arg*(HZ/10) : HZ/4); | |
5926 | return 0; | |
5927 | case TIOCGSOFTCAR: | |
5928 | - error = verify_area(VERIFY_WRITE, (void *) arg,sizeof(long)); | |
5929 | + error = put_user(C_CLOCAL(tty) ? 1 : 0, | |
5930 | + (unsigned long *) arg); | |
5931 | if (error) | |
5932 | return error; | |
5933 | - put_user(C_CLOCAL(tty) ? 1 : 0, | |
5934 | - (unsigned long *) arg); | |
5935 | return 0; | |
5936 | case TIOCSSOFTCAR: | |
5937 | get_user(arg, (unsigned long *) arg); | |
5938 | diff -Naur linux-2.6.0-test8/drivers/serial/mcfserial.c linux-2.6.0-test8-uc0/drivers/serial/mcfserial.c | |
5939 | --- linux-2.6.0-test8/drivers/serial/mcfserial.c 2003-10-20 09:10:41.000000000 +1000 | |
5940 | +++ linux-2.6.0-test8-uc0/drivers/serial/mcfserial.c 2003-10-20 09:12:41.033953328 +1000 | |
5941 | @@ -10,6 +10,11 @@ | |
5942 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | |
5943 | * Copyright (C) 1998 TSHG | |
5944 | * Copyright (c) 1999 Rt-Control Inc. <jeff@uclinux.org> | |
5945 | + * | |
5946 | + * Changes: | |
5947 | + * 08/07/2003 Daniele Bellucci <bellucda@tiscali.it> | |
5948 | + * some cleanups in mcfrs_write. | |
5949 | + * | |
5950 | */ | |
5951 | ||
5952 | #include <linux/module.h> | |
5953 | @@ -31,7 +36,6 @@ | |
5954 | #include <linux/ledman.h> | |
5955 | #endif | |
5956 | #include <linux/console.h> | |
5957 | -#include <linux/version.h> | |
5958 | #include <linux/init.h> | |
5959 | ||
5960 | #include <asm/io.h> | |
5961 | @@ -138,6 +142,7 @@ | |
5962 | * Forware declarations... | |
5963 | */ | |
5964 | static void mcfrs_change_speed(struct mcf_serial *info); | |
5965 | +static void mcfrs_wait_until_sent(struct tty_struct *tty, int timeout); | |
5966 | ||
5967 | ||
5968 | static inline int serial_paranoia_check(struct mcf_serial *info, | |
5969 | @@ -603,6 +608,9 @@ | |
5970 | unsigned long flags; | |
5971 | unsigned char mr1, mr2; | |
5972 | int i; | |
5973 | +#ifdef CONFIG_M5272 | |
5974 | + unsigned int fraction; | |
5975 | +#endif | |
5976 | ||
5977 | if (!info->tty || !info->tty->termios) | |
5978 | return; | |
5979 | @@ -626,7 +634,20 @@ | |
5980 | mcfrs_setsignals(info, 0, -1); | |
5981 | return; | |
5982 | } | |
5983 | + | |
5984 | + /* compute the baudrate clock */ | |
5985 | +#ifdef CONFIG_M5272 | |
5986 | + /* | |
5987 | + * For the MCF5272, also compute the baudrate fraction. | |
5988 | + */ | |
5989 | + baudclk = (MCF_BUSCLK / mcfrs_baud_table[i]) / 32; | |
5990 | + fraction = MCF_BUSCLK - (baudclk * 32 * mcfrs_baud_table[i]); | |
5991 | + fraction *= 16; | |
5992 | + fraction /= (32 * mcfrs_baud_table[i]); | |
5993 | +#else | |
5994 | baudclk = ((MCF_BUSCLK / mcfrs_baud_table[i]) + 16) / 32; | |
5995 | +#endif | |
5996 | + | |
5997 | info->baud = mcfrs_baud_table[i]; | |
5998 | ||
5999 | mr1 = MCFUART_MR1_RXIRQRDY | MCFUART_MR1_RXERRCHAR; | |
6000 | @@ -690,6 +711,9 @@ | |
6001 | uartp[MCFUART_UMR] = mr2; | |
6002 | uartp[MCFUART_UBG1] = (baudclk & 0xff00) >> 8; /* set msb byte */ | |
6003 | uartp[MCFUART_UBG2] = (baudclk & 0xff); /* set lsb byte */ | |
6004 | +#ifdef CONFIG_M5272 | |
6005 | + uartp[MCFUART_UFPD] = (fraction & 0xf); /* set fraction */ | |
6006 | +#endif | |
6007 | uartp[MCFUART_UCSR] = MCFUART_UCSR_RXCLKTIMER | MCFUART_UCSR_TXCLKTIMER; | |
6008 | uartp[MCFUART_UCR] = MCFUART_UCR_RXENABLE | MCFUART_UCR_TXENABLE; | |
6009 | mcfrs_setsignals(info, 1, -1); | |
6010 | @@ -742,24 +766,26 @@ | |
6011 | local_irq_disable(); | |
6012 | c = min(count, (int) min(((int)SERIAL_XMIT_SIZE) - info->xmit_cnt - 1, | |
6013 | ((int)SERIAL_XMIT_SIZE) - info->xmit_head)); | |
6014 | + local_irq_restore(flags); | |
6015 | ||
6016 | - if (c <= 0) { | |
6017 | - local_irq_restore(flags); | |
6018 | + if (c <= 0) | |
6019 | break; | |
6020 | - } | |
6021 | ||
6022 | if (from_user) { | |
6023 | down(&mcfrs_tmp_buf_sem); | |
6024 | - copy_from_user(mcfrs_tmp_buf, buf, c); | |
6025 | - local_irq_restore(flags); | |
6026 | - local_irq_disable(); | |
6027 | + if (copy_from_user(mcfrs_tmp_buf, buf, c)) | |
6028 | + return -EFAULT; | |
6029 | + | |
6030 | + local_irq_disable(); | |
6031 | c = min(c, (int) min(((int)SERIAL_XMIT_SIZE) - info->xmit_cnt - 1, | |
6032 | ((int)SERIAL_XMIT_SIZE) - info->xmit_head)); | |
6033 | + local_irq_restore(flags); | |
6034 | memcpy(info->xmit_buf + info->xmit_head, mcfrs_tmp_buf, c); | |
6035 | up(&mcfrs_tmp_buf_sem); | |
6036 | } else | |
6037 | memcpy(info->xmit_buf + info->xmit_head, buf, c); | |
6038 | ||
6039 | + local_irq_disable(); | |
6040 | info->xmit_head = (info->xmit_head + c) & (SERIAL_XMIT_SIZE-1); | |
6041 | info->xmit_cnt += c; | |
6042 | local_irq_restore(flags); | |
6043 | @@ -1020,11 +1046,10 @@ | |
6044 | send_break(info, arg ? arg*(HZ/10) : HZ/4); | |
6045 | return 0; | |
6046 | case TIOCGSOFTCAR: | |
6047 | - error = verify_area(VERIFY_WRITE, (void *) arg,sizeof(long)); | |
6048 | + error = put_user(C_CLOCAL(tty) ? 1 : 0, | |
6049 | + (unsigned long *) arg); | |
6050 | if (error) | |
6051 | return error; | |
6052 | - put_user(C_CLOCAL(tty) ? 1 : 0, | |
6053 | - (unsigned long *) arg); | |
6054 | return 0; | |
6055 | case TIOCSSOFTCAR: | |
6056 | get_user(arg, (unsigned long *) arg); | |
6057 | @@ -1051,48 +1076,37 @@ | |
6058 | return get_lsr_info(info, (unsigned int *) arg); | |
6059 | ||
6060 | case TIOCSERGSTRUCT: | |
6061 | - error = verify_area(VERIFY_WRITE, (void *) arg, | |
6062 | - sizeof(struct mcf_serial)); | |
6063 | - if (error) | |
6064 | - return error; | |
6065 | - copy_to_user((struct mcf_serial *) arg, | |
6066 | + error = copy_to_user((struct mcf_serial *) arg, | |
6067 | info, sizeof(struct mcf_serial)); | |
6068 | + if (error) | |
6069 | + return -EFAULT; | |
6070 | return 0; | |
6071 | ||
6072 | case TIOCMGET: | |
6073 | - if ((error = verify_area(VERIFY_WRITE, (void *) arg, | |
6074 | - sizeof(unsigned int)))) | |
6075 | - return(error); | |
6076 | val = mcfrs_getsignals(info); | |
6077 | - put_user(val, (unsigned int *) arg); | |
6078 | + if ((error = put_user(val, (unsigned int *) arg))) | |
6079 | + return error; | |
6080 | break; | |
6081 | ||
6082 | case TIOCMBIS: | |
6083 | - if ((error = verify_area(VERIFY_WRITE, (void *) arg, | |
6084 | - sizeof(unsigned int)))) | |
6085 | - return(error); | |
6086 | - | |
6087 | - get_user(val, (unsigned int *) arg); | |
6088 | + if ((error = get_user(val, (unsigned int *) arg))) | |
6089 | + return error; | |
6090 | rts = (val & TIOCM_RTS) ? 1 : -1; | |
6091 | dtr = (val & TIOCM_DTR) ? 1 : -1; | |
6092 | mcfrs_setsignals(info, dtr, rts); | |
6093 | break; | |
6094 | ||
6095 | case TIOCMBIC: | |
6096 | - if ((error = verify_area(VERIFY_WRITE, (void *) arg, | |
6097 | - sizeof(unsigned int)))) | |
6098 | - return(error); | |
6099 | - get_user(val, (unsigned int *) arg); | |
6100 | + if ((error = get_user(val, (unsigned int *) arg))) | |
6101 | + return error; | |
6102 | rts = (val & TIOCM_RTS) ? 0 : -1; | |
6103 | dtr = (val & TIOCM_DTR) ? 0 : -1; | |
6104 | mcfrs_setsignals(info, dtr, rts); | |
6105 | break; | |
6106 | ||
6107 | case TIOCMSET: | |
6108 | - if ((error = verify_area(VERIFY_WRITE, (void *) arg, | |
6109 | - sizeof(unsigned int)))) | |
6110 | - return(error); | |
6111 | - get_user(val, (unsigned int *) arg); | |
6112 | + if ((error = get_user(val, (unsigned int *) arg))) | |
6113 | + return error; | |
6114 | rts = (val & TIOCM_RTS) ? 1 : 0; | |
6115 | dtr = (val & TIOCM_DTR) ? 1 : 0; | |
6116 | mcfrs_setsignals(info, dtr, rts); | |
6117 | @@ -1239,6 +1253,76 @@ | |
6118 | } | |
6119 | ||
6120 | /* | |
6121 | + * mcfrs_wait_until_sent() --- wait until the transmitter is empty | |
6122 | + */ | |
6123 | +static void | |
6124 | +mcfrs_wait_until_sent(struct tty_struct *tty, int timeout) | |
6125 | +{ | |
6126 | +#ifdef CONFIG_M5272 | |
6127 | +#define MCF5272_FIFO_SIZE 25 /* fifo size + shift reg */ | |
6128 | + | |
6129 | + struct mcf_serial * info = (struct mcf_serial *)tty->driver_data; | |
6130 | + volatile unsigned char *uartp; | |
6131 | + unsigned long orig_jiffies, fifo_time, char_time, fifo_cnt; | |
6132 | + | |
6133 | + if (serial_paranoia_check(info, tty->name, "mcfrs_wait_until_sent")) | |
6134 | + return; | |
6135 | + | |
6136 | + orig_jiffies = jiffies; | |
6137 | + | |
6138 | + /* | |
6139 | + * Set the check interval to be 1/5 of the approximate time | |
6140 | + * to send the entire fifo, and make it at least 1. The check | |
6141 | + * interval should also be less than the timeout. | |
6142 | + * | |
6143 | + * Note: we have to use pretty tight timings here to satisfy | |
6144 | + * the NIST-PCTS. | |
6145 | + */ | |
6146 | + fifo_time = (MCF5272_FIFO_SIZE * HZ * 10) / info->baud; | |
6147 | + char_time = fifo_time / 5; | |
6148 | + if (char_time == 0) | |
6149 | + char_time = 1; | |
6150 | + if (timeout && timeout < char_time) | |
6151 | + char_time = timeout; | |
6152 | + | |
6153 | + /* | |
6154 | + * Clamp the timeout period at 2 * the time to empty the | |
6155 | + * fifo. Just to be safe, set the minimum at .5 seconds. | |
6156 | + */ | |
6157 | + fifo_time *= 2; | |
6158 | + if (fifo_time < (HZ/2)) | |
6159 | + fifo_time = HZ/2; | |
6160 | + if (!timeout || timeout > fifo_time) | |
6161 | + timeout = fifo_time; | |
6162 | + | |
6163 | + /* | |
6164 | + * Account for the number of bytes in the UART | |
6165 | + * transmitter FIFO plus any byte being shifted out. | |
6166 | + */ | |
6167 | + uartp = (volatile unsigned char *) info->addr; | |
6168 | + for (;;) { | |
6169 | + fifo_cnt = (uartp[MCFUART_UTF] & MCFUART_UTF_TXB); | |
6170 | + if ((uartp[MCFUART_USR] & (MCFUART_USR_TXREADY| | |
6171 | + MCFUART_USR_TXEMPTY)) == | |
6172 | + MCFUART_USR_TXREADY) | |
6173 | + fifo_cnt++; | |
6174 | + if (fifo_cnt == 0) | |
6175 | + break; | |
6176 | + set_current_state(TASK_INTERRUPTIBLE); | |
6177 | + schedule_timeout(char_time); | |
6178 | + if (signal_pending(current)) | |
6179 | + break; | |
6180 | + if (timeout && time_after(jiffies, orig_jiffies + timeout)) | |
6181 | + break; | |
6182 | + } | |
6183 | +#else | |
6184 | + /* | |
6185 | + * For the other coldfire models, assume all data has been sent | |
6186 | + */ | |
6187 | +#endif | |
6188 | +} | |
6189 | + | |
6190 | +/* | |
6191 | * mcfrs_hangup() --- called by tty_hangup() when a hangup is signaled. | |
6192 | */ | |
6193 | void mcfrs_hangup(struct tty_struct *tty) | |
6194 | @@ -1563,6 +1647,7 @@ | |
6195 | .start = mcfrs_start, | |
6196 | .hangup = mcfrs_hangup, | |
6197 | .read_proc = mcfrs_readproc, | |
6198 | + .wait_until_sent = mcfrs_wait_until_sent, | |
6199 | }; | |
6200 | ||
6201 | /* mcfrs_init inits the driver */ | |
6202 | @@ -1589,7 +1674,9 @@ | |
6203 | show_serial_version(); | |
6204 | ||
6205 | /* Initialize the tty_driver structure */ | |
6206 | + mcfrs_serial_driver->owner = THIS_MODULE; | |
6207 | mcfrs_serial_driver->name = "ttyS"; | |
6208 | + mcfrs_serial_driver->devfs_name = "ttys/"; | |
6209 | mcfrs_serial_driver->driver_name = "serial"; | |
6210 | mcfrs_serial_driver->major = TTY_MAJOR; | |
6211 | mcfrs_serial_driver->minor_start = 64; | |
6212 | diff -Naur linux-2.6.0-test8/fs/binfmt_flat.c linux-2.6.0-test8-uc0/fs/binfmt_flat.c | |
6213 | --- linux-2.6.0-test8/fs/binfmt_flat.c 2003-10-20 09:10:54.989074600 +1000 | |
6214 | +++ linux-2.6.0-test8-uc0/fs/binfmt_flat.c 2003-10-20 09:12:45.018347608 +1000 | |
6215 | @@ -179,7 +179,7 @@ | |
6216 | unsigned char *buf; | |
6217 | z_stream strm; | |
6218 | loff_t fpos; | |
6219 | - int ret; | |
6220 | + int ret, retval; | |
6221 | ||
6222 | DBG_FLT("decompress_exec(offset=%x,buf=%x,len=%x)\n",(int)offset, (int)dst, (int)len); | |
6223 | ||
6224 | @@ -192,7 +192,8 @@ | |
6225 | buf = kmalloc(LBUFSIZE, GFP_KERNEL); | |
6226 | if (buf == NULL) { | |
6227 | DBG_FLT("binfmt_flat: no memory for read buffer\n"); | |
6228 | - return -ENOMEM; | |
6229 | + retval = -ENOMEM; | |
6230 | + goto out_free; | |
6231 | } | |
6232 | ||
6233 | /* Read in first chunk of data and parse gzip header. */ | |
6234 | @@ -203,28 +204,30 @@ | |
6235 | strm.avail_in = ret; | |
6236 | strm.total_in = 0; | |
6237 | ||
6238 | + retval = -ENOEXEC; | |
6239 | + | |
6240 | /* Check minimum size -- gzip header */ | |
6241 | if (ret < 10) { | |
6242 | DBG_FLT("binfmt_flat: file too small?\n"); | |
6243 | - return -ENOEXEC; | |
6244 | + goto out_free_buf; | |
6245 | } | |
6246 | ||
6247 | /* Check gzip magic number */ | |
6248 | if ((buf[0] != 037) || ((buf[1] != 0213) && (buf[1] != 0236))) { | |
6249 | DBG_FLT("binfmt_flat: unknown compression magic?\n"); | |
6250 | - return -ENOEXEC; | |
6251 | + goto out_free_buf; | |
6252 | } | |
6253 | ||
6254 | /* Check gzip method */ | |
6255 | if (buf[2] != 8) { | |
6256 | DBG_FLT("binfmt_flat: unknown compression method?\n"); | |
6257 | - return -ENOEXEC; | |
6258 | + goto out_free_buf; | |
6259 | } | |
6260 | /* Check gzip flags */ | |
6261 | if ((buf[3] & ENCRYPTED) || (buf[3] & CONTINUATION) || | |
6262 | (buf[3] & RESERVED)) { | |
6263 | DBG_FLT("binfmt_flat: unknown flags?\n"); | |
6264 | - return -ENOEXEC; | |
6265 | + goto out_free_buf; | |
6266 | } | |
6267 | ||
6268 | ret = 10; | |
6269 | @@ -232,7 +235,7 @@ | |
6270 | ret += 2 + buf[10] + (buf[11] << 8); | |
6271 | if (unlikely(LBUFSIZE == ret)) { | |
6272 | DBG_FLT("binfmt_flat: buffer overflow (EXTRA)?\n"); | |
6273 | - return -ENOEXEC; | |
6274 | + goto out_free_buf; | |
6275 | } | |
6276 | } | |
6277 | if (buf[3] & ORIG_NAME) { | |
6278 | @@ -240,7 +243,7 @@ | |
6279 | ; | |
6280 | if (unlikely(LBUFSIZE == ret)) { | |
6281 | DBG_FLT("binfmt_flat: buffer overflow (ORIG_NAME)?\n"); | |
6282 | - return -ENOEXEC; | |
6283 | + goto out_free_buf; | |
6284 | } | |
6285 | } | |
6286 | if (buf[3] & COMMENT) { | |
6287 | @@ -248,7 +251,7 @@ | |
6288 | ; | |
6289 | if (unlikely(LBUFSIZE == ret)) { | |
6290 | DBG_FLT("binfmt_flat: buffer overflow (COMMENT)?\n"); | |
6291 | - return -ENOEXEC; | |
6292 | + goto out_free_buf; | |
6293 | } | |
6294 | } | |
6295 | ||
6296 | @@ -261,7 +264,7 @@ | |
6297 | ||
6298 | if (zlib_inflateInit2(&strm, -MAX_WBITS) != Z_OK) { | |
6299 | DBG_FLT("binfmt_flat: zlib init failed?\n"); | |
6300 | - return -ENOEXEC; | |
6301 | + goto out_free_buf; | |
6302 | } | |
6303 | ||
6304 | while ((ret = zlib_inflate(&strm, Z_NO_FLUSH)) == Z_OK) { | |
6305 | @@ -280,13 +283,17 @@ | |
6306 | if (ret < 0) { | |
6307 | DBG_FLT("binfmt_flat: decompression failed (%d), %s\n", | |
6308 | ret, strm.msg); | |
6309 | - return -ENOEXEC; | |
6310 | + goto out_free_buf; | |
6311 | } | |
6312 | ||
6313 | zlib_inflateEnd(&strm); | |
6314 | + retval = 0; | |
6315 | +out_free_buf: | |
6316 | kfree(buf); | |
6317 | +out_free: | |
6318 | kfree(strm.workspace); | |
6319 | - return 0; | |
6320 | +out: | |
6321 | + return retval; | |
6322 | } | |
6323 | ||
6324 | #endif /* CONFIG_BINFMT_ZFLAT */ | |
6325 | diff -Naur linux-2.6.0-test8/fs/Kconfig.binfmt linux-2.6.0-test8-uc0/fs/Kconfig.binfmt | |
6326 | --- linux-2.6.0-test8/fs/Kconfig.binfmt 2003-10-20 09:10:57.047761632 +1000 | |
6327 | +++ linux-2.6.0-test8-uc0/fs/Kconfig.binfmt 2003-10-20 09:12:45.006349432 +1000 | |
6328 | @@ -40,6 +40,12 @@ | |
6329 | help | |
6330 | Support FLAT format compressed binaries | |
6331 | ||
6332 | +config BINFMT_SHARED_FLAT | |
6333 | + bool "Enable shared FLAT support" | |
6334 | + depends on BINFMT_FLAT | |
6335 | + help | |
6336 | + Support FLAT shared libraries | |
6337 | + | |
6338 | config BINFMT_AOUT | |
6339 | tristate "Kernel support for a.out and ECOFF binaries" | |
6340 | depends on (X86 && !X86_64) || ALPHA || ARM || M68K || MIPS || SPARC | |
6341 | diff -Naur linux-2.6.0-test8/fs/proc/task_nommu.c linux-2.6.0-test8-uc0/fs/proc/task_nommu.c | |
6342 | --- linux-2.6.0-test8/fs/proc/task_nommu.c 2003-10-20 09:10:56.398860280 +1000 | |
6343 | +++ linux-2.6.0-test8-uc0/fs/proc/task_nommu.c 2003-10-20 09:12:50.002589888 +1000 | |
6344 | @@ -1,6 +1,7 @@ | |
6345 | ||
6346 | #include <linux/mm.h> | |
6347 | #include <linux/file.h> | |
6348 | +#include <linux/seq_file.h> | |
6349 | ||
6350 | /* | |
6351 | * Logic: we've got two memory sums for each process, "shared", and | |
6352 | @@ -97,12 +98,28 @@ | |
6353 | return size; | |
6354 | } | |
6355 | ||
6356 | -/* | |
6357 | - * Albert D. Cahalan suggested to fake entries for the traditional | |
6358 | - * sections here. This might be worth investigating. | |
6359 | - */ | |
6360 | -ssize_t proc_pid_read_maps(struct task_struct *task, struct file *file, | |
6361 | - char *buf, size_t count, loff_t *ppos) | |
6362 | +static int show_map(struct seq_file *m, void *v) | |
6363 | { | |
6364 | return 0; | |
6365 | } | |
6366 | + | |
6367 | +static void *m_start(struct seq_file *m, loff_t *pos) | |
6368 | +{ | |
6369 | + return NULL; | |
6370 | +} | |
6371 | + | |
6372 | +static void m_stop(struct seq_file *m, void *v) | |
6373 | +{ | |
6374 | +} | |
6375 | + | |
6376 | +static void *m_next(struct seq_file *m, void *v, loff_t *pos) | |
6377 | +{ | |
6378 | + return NULL; | |
6379 | +} | |
6380 | + | |
6381 | +struct seq_operations proc_pid_maps_op = { | |
6382 | + .start = m_start, | |
6383 | + .next = m_next, | |
6384 | + .stop = m_stop, | |
6385 | + .show = show_map | |
6386 | +}; | |
6387 | diff -Naur linux-2.6.0-test8/include/asm-m68knommu/bitops.h linux-2.6.0-test8-uc0/include/asm-m68knommu/bitops.h | |
6388 | --- linux-2.6.0-test8/include/asm-m68knommu/bitops.h 2003-10-20 09:11:27.864076840 +1000 | |
6389 | +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/bitops.h 2003-10-20 09:13:01.807795224 +1000 | |
6390 | @@ -77,12 +77,6 @@ | |
6391 | } | |
6392 | ||
6393 | /* | |
6394 | - * fls: find last bit set. | |
6395 | - */ | |
6396 | -#define fls(x) generic_fls(x) | |
6397 | - | |
6398 | - | |
6399 | -/* | |
6400 | * Every architecture must define this function. It's the fastest | |
6401 | * way of searching a 140-bit bitmap where the first 100 bits are | |
6402 | * unlikely to be set. It's guaranteed that at least one of the 140 | |
6403 | @@ -283,7 +277,7 @@ | |
6404 | return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0; | |
6405 | } | |
6406 | ||
6407 | -static __inline__ int __test_bit(int nr, const unsigned long * addr) | |
6408 | +static __inline__ int __test_bit(int nr, const volatile unsigned long * addr) | |
6409 | { | |
6410 | int * a = (int *) addr; | |
6411 | int mask; | |
6412 | @@ -478,4 +472,9 @@ | |
6413 | ||
6414 | #endif /* __KERNEL__ */ | |
6415 | ||
6416 | +/* | |
6417 | + * fls: find last bit set. | |
6418 | + */ | |
6419 | +#define fls(x) generic_fls(x) | |
6420 | + | |
6421 | #endif /* _M68KNOMMU_BITOPS_H */ | |
6422 | diff -Naur linux-2.6.0-test8/include/asm-m68knommu/cacheflush.h linux-2.6.0-test8-uc0/include/asm-m68knommu/cacheflush.h | |
6423 | --- linux-2.6.0-test8/include/asm-m68knommu/cacheflush.h 2003-10-20 09:11:27.959062400 +1000 | |
6424 | +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/cacheflush.h 2003-10-20 09:13:01.831791576 +1000 | |
6425 | @@ -37,13 +37,15 @@ | |
6426 | "1:\n\t" | |
6427 | "movel %%d0,%%a0\n\t" | |
6428 | "2:\n\t" | |
6429 | - ".word 0xf4e8\n\t" | |
6430 | + ".word 0xf468\n\t" | |
6431 | "addl #0x10,%%a0\n\t" | |
6432 | "cmpl #0x00000800,%%a0\n\t" | |
6433 | "blt 2b\n\t" | |
6434 | "addql #1,%%d0\n\t" | |
6435 | "cmpil #4,%%d0\n\t" | |
6436 | "bne 1b\n\t" | |
6437 | + "movel #0xb6088500,%%d0\n\t" | |
6438 | + "movec %%d0,%%CACR\n\t" | |
6439 | : : : "d0", "a0" ); | |
6440 | #endif /* CONFIG_M5407 */ | |
6441 | #ifdef CONFIG_M5272 | |
6442 | diff -Naur linux-2.6.0-test8/include/asm-m68knommu/elf.h linux-2.6.0-test8-uc0/include/asm-m68knommu/elf.h | |
6443 | --- linux-2.6.0-test8/include/asm-m68knommu/elf.h 2003-10-20 09:11:27.956062856 +1000 | |
6444 | +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/elf.h 2003-10-20 09:13:01.848788992 +1000 | |
6445 | @@ -9,6 +9,33 @@ | |
6446 | #include <asm/ptrace.h> | |
6447 | #include <asm/user.h> | |
6448 | ||
6449 | +/* | |
6450 | + * 68k ELF relocation types | |
6451 | + */ | |
6452 | +#define R_68K_NONE 0 | |
6453 | +#define R_68K_32 1 | |
6454 | +#define R_68K_16 2 | |
6455 | +#define R_68K_8 3 | |
6456 | +#define R_68K_PC32 4 | |
6457 | +#define R_68K_PC16 5 | |
6458 | +#define R_68K_PC8 6 | |
6459 | +#define R_68K_GOT32 7 | |
6460 | +#define R_68K_GOT16 8 | |
6461 | +#define R_68K_GOT8 9 | |
6462 | +#define R_68K_GOT32O 10 | |
6463 | +#define R_68K_GOT16O 11 | |
6464 | +#define R_68K_GOT8O 12 | |
6465 | +#define R_68K_PLT32 13 | |
6466 | +#define R_68K_PLT16 14 | |
6467 | +#define R_68K_PLT8 15 | |
6468 | +#define R_68K_PLT32O 16 | |
6469 | +#define R_68K_PLT16O 17 | |
6470 | +#define R_68K_PLT8O 18 | |
6471 | +#define R_68K_COPY 19 | |
6472 | +#define R_68K_GLOB_DAT 20 | |
6473 | +#define R_68K_JMP_SLOT 21 | |
6474 | +#define R_68K_RELATIVE 22 | |
6475 | + | |
6476 | typedef unsigned long elf_greg_t; | |
6477 | ||
6478 | #define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) | |
6479 | diff -Naur linux-2.6.0-test8/include/asm-m68knommu/kmap_types.h linux-2.6.0-test8-uc0/include/asm-m68knommu/kmap_types.h | |
6480 | --- linux-2.6.0-test8/include/asm-m68knommu/kmap_types.h 2003-10-20 09:11:27.862077144 +1000 | |
6481 | +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/kmap_types.h 2003-10-20 09:13:01.991767256 +1000 | |
6482 | @@ -13,6 +13,8 @@ | |
6483 | KM_PTE1, | |
6484 | KM_IRQ0, | |
6485 | KM_IRQ1, | |
6486 | + KM_SOFTIRQ0, | |
6487 | + KM_SOFTIRQ1, | |
6488 | KM_TYPE_NR | |
6489 | }; | |
6490 | ||
6491 | diff -Naur linux-2.6.0-test8/include/asm-m68knommu/m68360_enet.h linux-2.6.0-test8-uc0/include/asm-m68knommu/m68360_enet.h | |
6492 | --- linux-2.6.0-test8/include/asm-m68knommu/m68360_enet.h 2003-10-20 09:11:27.882074104 +1000 | |
6493 | +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/m68360_enet.h 2003-10-20 09:13:01.994766800 +1000 | |
6494 | @@ -1,7 +1,4 @@ | |
6495 | -/*********************************** | |
6496 | - * $Id$ | |
6497 | - *********************************** | |
6498 | - * | |
6499 | +/* | |
6500 | *************************************** | |
6501 | * Definitions for the ETHERNET controllers | |
6502 | *************************************** | |
6503 | diff -Naur linux-2.6.0-test8/include/asm-m68knommu/machdep.h linux-2.6.0-test8-uc0/include/asm-m68knommu/machdep.h | |
6504 | --- linux-2.6.0-test8/include/asm-m68knommu/machdep.h 2003-10-20 09:11:27.879074560 +1000 | |
6505 | +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/machdep.h 2003-10-20 09:13:01.996766496 +1000 | |
6506 | @@ -2,6 +2,7 @@ | |
6507 | #define _M68KNOMMU_MACHDEP_H | |
6508 | ||
6509 | #include <linux/seq_file.h> | |
6510 | +#include <linux/interrupt.h> | |
6511 | ||
6512 | struct pt_regs; | |
6513 | struct kbd_repeat; | |
6514 | @@ -10,14 +11,14 @@ | |
6515 | struct gendisk; | |
6516 | struct buffer_head; | |
6517 | ||
6518 | -extern void (*mach_sched_init) (void (*handler)(int, void *, struct pt_regs *)); | |
6519 | +extern void (*mach_sched_init) (irqreturn_t (*handler)(int, void *, struct pt_regs *)); | |
6520 | /* machine dependent keyboard functions */ | |
6521 | extern int (*mach_keyb_init) (void); | |
6522 | extern int (*mach_kbdrate) (struct kbd_repeat *); | |
6523 | extern void (*mach_kbd_leds) (unsigned int); | |
6524 | /* machine dependent irq functions */ | |
6525 | extern void (*mach_init_IRQ) (void); | |
6526 | -extern void (*(*mach_default_handler)[]) (int, void *, struct pt_regs *); | |
6527 | +extern irqreturn_t (*(*mach_default_handler)[]) (int, void *, struct pt_regs *); | |
6528 | extern int (*mach_request_irq) (unsigned int irq, void (*handler)(int, void *, struct pt_regs *), | |
6529 | unsigned long flags, const char *devname, void *dev_id); | |
6530 | extern void (*mach_free_irq) (unsigned int irq, void *dev_id); | |
6531 | diff -Naur linux-2.6.0-test8/include/asm-m68knommu/mcfsmc.h linux-2.6.0-test8-uc0/include/asm-m68knommu/mcfsmc.h | |
6532 | --- linux-2.6.0-test8/include/asm-m68knommu/mcfsmc.h 2003-10-20 09:11:27.880074408 +1000 | |
6533 | +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/mcfsmc.h 2003-10-20 09:13:02.023762392 +1000 | |
6534 | @@ -21,6 +21,18 @@ | |
6535 | ||
6536 | #undef outb | |
6537 | #undef inb | |
6538 | +#undef outw | |
6539 | +#undef outwd | |
6540 | +#undef inw | |
6541 | +#undef outl | |
6542 | +#undef inl | |
6543 | + | |
6544 | +#undef outsb | |
6545 | +#undef outsw | |
6546 | +#undef outsl | |
6547 | +#undef insb | |
6548 | +#undef insw | |
6549 | +#undef insl | |
6550 | ||
6551 | /* | |
6552 | * Re-defines for ColdFire environment... The SMC part is | |
6553 | diff -Naur linux-2.6.0-test8/include/asm-m68knommu/types.h linux-2.6.0-test8-uc0/include/asm-m68knommu/types.h | |
6554 | --- linux-2.6.0-test8/include/asm-m68knommu/types.h 2003-10-20 09:11:27.865076688 +1000 | |
6555 | +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/types.h 2003-10-20 09:13:02.041759656 +1000 | |
6556 | @@ -1,66 +1 @@ | |
6557 | -#ifndef _M68K_TYPES_H | |
6558 | -#define _M68K_TYPES_H | |
6559 | - | |
6560 | -/* | |
6561 | - * This file is never included by application software unless | |
6562 | - * explicitly requested (e.g., via linux/types.h) in which case the | |
6563 | - * application is Linux specific so (user-) name space pollution is | |
6564 | - * not a major issue. However, for interoperability, libraries still | |
6565 | - * need to be careful to avoid a name clashes. | |
6566 | - */ | |
6567 | - | |
6568 | -#ifndef __ASSEMBLY__ | |
6569 | - | |
6570 | -typedef unsigned short umode_t; | |
6571 | - | |
6572 | -/* | |
6573 | - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the | |
6574 | - * header files exported to user space | |
6575 | - */ | |
6576 | - | |
6577 | -typedef __signed__ char __s8; | |
6578 | -typedef unsigned char __u8; | |
6579 | - | |
6580 | -typedef __signed__ short __s16; | |
6581 | -typedef unsigned short __u16; | |
6582 | - | |
6583 | -typedef __signed__ int __s32; | |
6584 | -typedef unsigned int __u32; | |
6585 | - | |
6586 | -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) | |
6587 | -typedef __signed__ long long __s64; | |
6588 | -typedef unsigned long long __u64; | |
6589 | -#endif | |
6590 | - | |
6591 | -#endif /* __ASSEMBLY__ */ | |
6592 | - | |
6593 | -/* | |
6594 | - * These aren't exported outside the kernel to avoid name space clashes | |
6595 | - */ | |
6596 | -#ifdef __KERNEL__ | |
6597 | - | |
6598 | -#define BITS_PER_LONG 32 | |
6599 | - | |
6600 | -#ifndef __ASSEMBLY__ | |
6601 | - | |
6602 | -typedef signed char s8; | |
6603 | -typedef unsigned char u8; | |
6604 | - | |
6605 | -typedef signed short s16; | |
6606 | -typedef unsigned short u16; | |
6607 | - | |
6608 | -typedef signed int s32; | |
6609 | -typedef unsigned int u32; | |
6610 | - | |
6611 | -typedef signed long long s64; | |
6612 | -typedef unsigned long long u64; | |
6613 | - | |
6614 | -/* Dma addresses are 32-bits wide. */ | |
6615 | - | |
6616 | -typedef u32 dma_addr_t; | |
6617 | - | |
6618 | -#endif /* __ASSEMBLY__ */ | |
6619 | - | |
6620 | -#endif /* __KERNEL__ */ | |
6621 | - | |
6622 | -#endif /* _M68K_TYPES_H */ | |
6623 | +#include <asm-m68k/types.h> | |
6624 | diff -Naur linux-2.6.0-test8/include/linux/list.h linux-2.6.0-test8-uc0/include/linux/list.h | |
6625 | --- linux-2.6.0-test8/include/linux/list.h 2003-10-20 09:11:18.436510048 +1000 | |
6626 | +++ linux-2.6.0-test8-uc0/include/linux/list.h 2003-10-20 09:13:15.424725136 +1000 | |
6627 | @@ -3,6 +3,7 @@ | |
6628 | ||
6629 | #ifdef __KERNEL__ | |
6630 | ||
6631 | +#include <linux/kernel.h> | |
6632 | #include <linux/stddef.h> | |
6633 | #include <linux/prefetch.h> | |
6634 | #include <asm/system.h> | |
6635 | diff -Naur linux-2.6.0-test8/include/linux/mtd/inftl.h linux-2.6.0-test8-uc0/include/linux/mtd/inftl.h | |
6636 | --- linux-2.6.0-test8/include/linux/mtd/inftl.h 2003-10-20 09:11:17.755613560 +1000 | |
6637 | +++ linux-2.6.0-test8-uc0/include/linux/mtd/inftl.h 2003-10-20 09:13:16.352584080 +1000 | |
6638 | @@ -19,7 +19,7 @@ | |
6639 | #define SECTORSIZE 512 | |
6640 | ||
6641 | #ifndef INFTL_MAJOR | |
6642 | -#define INFTL_MAJOR 93 /* FIXME */ | |
6643 | +#define INFTL_MAJOR 94 | |
6644 | #endif | |
6645 | #define INFTL_PARTN_BITS 4 | |
6646 | ||
6647 | diff -Naur linux-2.6.0-test8/mm/nommu.c linux-2.6.0-test8-uc0/mm/nommu.c | |
6648 | --- linux-2.6.0-test8/mm/nommu.c 2003-10-20 09:11:41.792959328 +1000 | |
6649 | +++ linux-2.6.0-test8-uc0/mm/nommu.c 2003-10-20 09:13:21.524797784 +1000 | |
6650 | @@ -551,6 +551,11 @@ | |
6651 | return NULL; | |
6652 | } | |
6653 | ||
6654 | +struct vm_area_struct *find_extend_vma(struct mm_struct *mm, unsigned long addr) | |
6655 | +{ | |
6656 | + return NULL; | |
6657 | +} | |
6658 | + | |
6659 | int remap_page_range(struct vm_area_struct *vma, unsigned long from, | |
6660 | unsigned long to, unsigned long size, pgprot_t prot) | |
6661 | { |