]> git.pld-linux.org Git - packages/kernel.git/blame - 2.6.0-t8-uc0.patch
- CSZ scheduler removed from kernel tree.
[packages/kernel.git] / 2.6.0-t8-uc0.patch
CommitLineData
5de4fc43 1diff -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
19diff -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
448diff -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
463diff -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+}
566diff -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 /*
674diff -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
782diff -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. */
803diff -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);
819diff -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
921diff -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 {
932diff -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+}
1007diff -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+}
1077diff -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
1098diff -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+}
1140diff -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
1150diff -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+}
1223diff -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 */
1235diff -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
1247diff -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+}
1298diff -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+}
1715diff -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
1743diff -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 */
1755diff -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
1767diff -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
1788diff -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));
1874diff -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)
1886diff -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)
1898diff -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)
1910diff -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)
1922diff -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)
1951diff -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)
1980diff -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 */
2001diff -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];
2099diff -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);
2111diff -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 }
2123diff -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 */
2147diff -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 */
2190diff -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 */
2220diff -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 }
2259diff -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;
2369diff -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; */
2381diff -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");
2400diff -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 }
2509diff -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");
2528diff -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);
2540diff -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
2583diff -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
2605diff -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 };
3413diff -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 $_;
3423diff -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
3505diff -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+}
3607diff -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+}
3643diff -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_*
3693diff -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+}
3848diff -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);
3866diff -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+/****************************************************************************/
4011diff -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 }
4058diff -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
4325diff -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
4346diff -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 */
5777diff -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 .
5852diff -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);
5938diff -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;
6212diff -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 */
6325diff -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
6341diff -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+};
6387diff -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 */
6422diff -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
6442diff -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))
6479diff -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
6491diff -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 ***************************************
6503diff -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);
6531diff -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
6553diff -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>
6624diff -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>
6635diff -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
6647diff -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 {
This page took 0.812869 seconds and 4 git commands to generate.