]> git.pld-linux.org Git - packages/kernel.git/blob - 2.6.0-t8-uc0.patch
- obsolete
[packages/kernel.git] / 2.6.0-t8-uc0.patch
1 diff -Naur linux-2.6.0-test8/arch/m68knommu/Kconfig linux-2.6.0-test8-uc0/arch/m68knommu/Kconfig
2 --- linux-2.6.0-test8/arch/m68knommu/Kconfig    2003-10-20 09:10:57.875635776 +1000
3 +++ linux-2.6.0-test8-uc0/arch/m68knommu/Kconfig        2003-10-20 09:11:53.701149008 +1000
4 @@ -560,6 +560,14 @@
5         help
6           Enable debuging symbols on kernel build.
7  
8 +config FRAME_POINTER
9 +       bool "Compile the kernel with frame pointers"
10 +       help
11 +         If you say Y here the resulting kernel image will be slightly larger
12 +         and slower, but it will give very useful debugging information.
13 +         If you don't debug the kernel, you can say N, but we may not be able
14 +         to solve problems without frame pointers.
15 +
16  config MAGIC_SYSRQ
17         bool "Magic SysRq key"
18         help
19 diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/comempci.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/comempci.c
20 --- linux-2.6.0-test8/arch/m68knommu/kernel/comempci.c  2003-10-20 09:10:57.723658880 +1000
21 +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/comempci.c      2003-10-20 09:11:54.088090184 +1000
22 @@ -89,7 +89,7 @@
23         int     i;
24  
25  #ifdef DEBUGPCI
26 -       printk("pci_resetbus()\n");
27 +       printk(KERN_DEBUG "pci_resetbus()\n");
28  #endif
29  
30         *((volatile unsigned short *) (MCF_MBAR+MCFSIM_PADDR)) |= eLIA_PCIRESET;
31 @@ -113,7 +113,7 @@
32         int                     bar;
33  
34  #ifdef DEBUGPCI
35 -       printk("pcibios_assign_resource_slot(slot=%x)\n", slot);
36 +       printk(KERN_INFO "pcibios_assign_resource_slot(slot=%x)\n", slot);
37  #endif
38  
39         rp = (volatile unsigned long *) COMEM_BASE;
40 @@ -125,9 +125,9 @@
41                 rp[LREG(COMEM_DAHBASE)] = COMEM_DA_CFGRD | idsel;
42                 val = rp[LREG(addr)];
43  #ifdef DEBUGRES
44 -               printk("-----------------------------------"
45 +               printk(KERN_DEBUG "-----------------------------------"
46                         "-------------------------------------\n");
47 -               printk("BAR[%d]: read=%08x ", bar, val);
48 +               printk(KERN_DEBUG "BAR[%d]: read=%08x ", bar, val);
49  #endif
50  
51                 rp[LREG(COMEM_DAHBASE)] = COMEM_DA_CFGWR | idsel;
52 @@ -136,11 +136,11 @@
53                 rp[LREG(COMEM_DAHBASE)] = COMEM_DA_CFGRD | idsel;
54                 val = rp[LREG(addr)];
55  #ifdef DEBUGRES
56 -               printk("write=%08x ", val);
57 +               printk(KERN_DEBUG "write=%08x ", val);
58  #endif
59                 if (val == 0) {
60  #ifdef DEBUGRES
61 -                       printk("\n");
62 +                       printk(KERN_DEBUG "\n");
63  #endif
64                         continue;
65                 }
66 @@ -153,7 +153,7 @@
67                 }
68  
69  #ifdef DEBUGRES
70 -               printk("size=%08x(%d)\n", (0x1 << i), i);
71 +               printk(KERN_DEBUG "size=%08x(%d)\n", (0x1 << i), i);
72  #endif
73                 i = 0x1 << i;
74  
75 @@ -162,14 +162,14 @@
76                         if (i < PCI_MINIO)
77                                 i = PCI_MINIO;
78  #ifdef DEBUGRES
79 -                       printk("BAR[%d]: IO size=%08x iobase=%08x\n",
80 +                       printk(KERN_DEBUG "BAR[%d]: IO size=%08x iobase=%08x\n",
81                                 bar, i, pci_iobase);
82  #endif
83                         if (i > 0xffff) {
84                                 /* Invalid size?? */
85                                 val = 0 | PCI_BASE_ADDRESS_SPACE_IO;
86  #ifdef DEBUGRES
87 -                               printk("BAR[%d]: too big for IO??\n", bar);
88 +                               printk(KERN_DEBUG "BAR[%d]: too big for IO??\n", bar);
89  #endif
90                         } else {
91                                 /* Check for un-alignment */
92 @@ -182,7 +182,7 @@
93                         if (i < PCI_MINMEM)
94                                 i = PCI_MINMEM;
95  #ifdef DEBUGRES
96 -                       printk("BAR[%d]: MEMORY size=%08x membase=%08x\n",
97 +                       printk(KERN_DEBUG "BAR[%d]: MEMORY size=%08x membase=%08x\n",
98                                 bar, i, pci_membase);
99  #endif
100                         /* Check for un-alignment */
101 @@ -196,12 +196,12 @@
102                 rp[LREG(COMEM_DAHBASE)] = COMEM_DA_CFGWR | idsel;
103                 rp[LREG(addr)] = val;
104  #ifdef DEBUGRES
105 -               printk("BAR[%d]: assigned bar=%08x\n", bar, val);
106 +               printk(KERN_DEBUG "BAR[%d]: assigned bar=%08x\n", bar, val);
107  #endif
108         }
109  
110  #ifdef DEBUGRES
111 -       printk("-----------------------------------"
112 +       printk(KERN_DEBUG "-----------------------------------"
113                         "-------------------------------------\n");
114  #endif
115  
116 @@ -215,7 +215,7 @@
117                 addr = (PCI_INTERRUPT_LINE & 0xfc)+(~PCI_INTERRUPT_LINE & 0x03);
118                 ip[addr] = 25;
119  #ifdef DEBUGRES
120 -               printk("IRQ LINE=25\n");
121 +               printk(KERN_DEBUG "IRQ LINE=25\n");
122  #endif
123         }
124  
125 @@ -232,7 +232,7 @@
126         unsigned short          cmd;
127  
128  #ifdef DEBUGPCI
129 -       printk("pcibios_enbale_slot(slot=%x)\n", slot);
130 +       printk(KERN_DEBUG "pcibios_enbale_slot(slot=%x)\n", slot);
131  #endif
132  
133         rp = (volatile unsigned long *) COMEM_BASE;
134 @@ -273,7 +273,7 @@
135                 rp[LREG(COMEM_PCIBUS)] = 0; /* Clear bus */
136                 id = rp[LREG(COMEM_PCIBUS)];
137                 if ((id != 0) && ((id & 0xffff0000) != (sel & 0xffff0000))) {
138 -                       printk("PCI: slot=%d id=%08x\n", slot, (int) id);
139 +                       printk(KERN_INFO "PCI: slot=%d id=%08x\n", slot, (int) id);
140                         pci_slotmask |= 0x1 << slot;
141                         pcibios_assign_resource_slot(slot);
142                         pcibios_enable_slot(slot);
143 @@ -290,7 +290,7 @@
144         int                     slot;
145  
146  #ifdef DEBUGPCI
147 -       printk("pcibios_init()\n");
148 +       printk(KERN_DEBUG "pcibios_init()\n");
149  #endif
150  
151         pci_resetbus();
152 @@ -302,7 +302,7 @@
153          */
154         rp = (volatile unsigned long *) COMEM_BASE;
155         if ((rp[LREG(COMEM_LBUSCFG)] & 0xff) != 0x50) {
156 -               printk("PCI: no PCI bus present\n");
157 +               printk(KERN_INFO "PCI: no PCI bus present\n");
158                 return(0);
159         }
160  
161 @@ -317,11 +317,11 @@
162         rp[LREG(COMEM_PCIBUS)] = 0; /* Clear bus */
163         id = rp[LREG(COMEM_PCIBUS)];
164         if ((id == 0) || ((id & 0xffff0000) == (sel & 0xffff0000))) {
165 -               printk("PCI: no PCI bus bridge present\n");
166 +               printk(KERN_INFO "PCI: no PCI bus bridge present\n");
167                 return(0);
168         }
169  
170 -       printk("PCI: bridge device at slot=%d id=%08x\n", slot, (int) id);
171 +       printk(KERN_INFO "PCI: bridge device at slot=%d id=%08x\n", slot, (int) id);
172         pci_slotmask |= 0x1 << slot;
173         pci_shmemaddr = pci_membase;
174         pcibios_assign_resource_slot(slot);
175 @@ -332,7 +332,7 @@
176  
177         /* Get PCI irq for local vectoring */
178         if (request_irq(COMEM_IRQ, pci_interrupt, 0, "PCI bridge", NULL)) {
179 -               printk("PCI: failed to acquire interrupt %d\n", COMEM_IRQ);
180 +               printk(KERN_WARNING "PCI: failed to acquire interrupt %d\n", COMEM_IRQ);
181         } else {
182                 mcf_autovector(COMEM_IRQ);
183         }
184 @@ -379,7 +379,7 @@
185  
186  void pcibios_update_resource(struct pci_dev *dev, struct resource *root, struct resource *r, int resource)
187  {
188 -       printk("%s(%d): no support for changing PCI resources...\n",
189 +       printk(KERN_WARNING "%s(%d): no support for changing PCI resources...\n",
190                 __FILE__, __LINE__);
191  }
192  
193 @@ -401,7 +401,7 @@
194         volatile unsigned char  *bp;
195  
196  #ifdef DEBUGIO
197 -       printk("pci_outb(val=%02x,addr=%x)\n", val, addr);
198 +       printk(KERN_DEBUG "pci_outb(val=%02x,addr=%x)\n", val, addr);
199  #endif
200  
201         rp = (volatile unsigned long *) COMEM_BASE;
202 @@ -419,7 +419,7 @@
203         volatile unsigned short *sp;
204  
205  #ifdef DEBUGIO
206 -       printk("pci_outw(val=%04x,addr=%x)", val, addr);
207 +       printk(KERN_DEBUG "pci_outw(val=%04x,addr=%x)", val, addr);
208  #endif
209  
210         rp = (volatile unsigned long *) COMEM_BASE;
211 @@ -439,7 +439,7 @@
212         volatile unsigned int   *lp;
213  
214  #ifdef DEBUGIO
215 -       printk("pci_outl(val=%08x,addr=%x)\n", val, addr);
216 +       printk(KERN_DEBUG "pci_outl(val=%08x,addr=%x)\n", val, addr);
217  #endif
218  
219         rp = (volatile unsigned long *) COMEM_BASE;
220 @@ -470,7 +470,7 @@
221         unsigned char           val;
222  
223  #ifdef DEBUGIO
224 -       printk("pci_inb(addr=%x)", addr);
225 +       printk(KERN_DEBUG "pci_inb(addr=%x)", addr);
226  #endif
227  
228         rp = (volatile unsigned long *) COMEM_BASE;
229 @@ -501,7 +501,7 @@
230         unsigned short          val;
231  
232  #ifdef DEBUGIO
233 -       printk("pci_inw(addr=%x)", addr);
234 +       printk(KERN_DEBUG "pci_inw(addr=%x)", addr);
235  #endif
236  
237         rp = (volatile unsigned long *) COMEM_BASE;
238 @@ -514,7 +514,7 @@
239         if (pci_byteswap)
240                 val = ((val & 0xff) << 8) | ((val >> 8) & 0xff);
241  #ifdef DEBUGIO
242 -       printk("=%04x\n", val);
243 +       printk(KERN_DEBUG "=%04x\n", val);
244  #endif
245         return(val);
246  }
247 @@ -528,7 +528,7 @@
248         unsigned int            val;
249  
250  #ifdef DEBUGIO
251 -       printk("pci_inl(addr=%x)", addr);
252 +       printk(KERN_DEBUG "pci_inl(addr=%x)", addr);
253  #endif
254  
255         rp = (volatile unsigned long *) COMEM_BASE;
256 @@ -541,7 +541,7 @@
257                         ((val & 0x00ff0000) >> 8) | (val >> 24);
258  
259  #ifdef DEBUGIO
260 -       printk("=%08x\n", val);
261 +       printk(KERN_DEBUG "=%08x\n", val);
262  #endif
263         return(val);
264  }
265 @@ -556,7 +556,7 @@
266         unsigned int            a = (unsigned int) addr;
267  
268  #ifdef DEBUGIO
269 -       printk("pci_outsb(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
270 +       printk(KERN_DEBUG "pci_outsb(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
271  #endif
272  
273         rp = (volatile unsigned long *) COMEM_BASE;
274 @@ -580,7 +580,7 @@
275         unsigned int            a = (unsigned int) addr;
276  
277  #ifdef DEBUGIO
278 -       printk("pci_outsw(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
279 +       printk(KERN_DEBUG "pci_outsw(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
280  #endif
281  
282         rp = (volatile unsigned long *) COMEM_BASE;
283 @@ -608,7 +608,7 @@
284         unsigned int            a = (unsigned int) addr;
285  
286  #ifdef DEBUGIO
287 -       printk("pci_outsl(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
288 +       printk(KERN_DEBUG "pci_outsl(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
289  #endif
290  
291         rp = (volatile unsigned long *) COMEM_BASE;
292 @@ -636,7 +636,7 @@
293         unsigned int            a = (unsigned int) addr;
294  
295  #ifdef DEBUGIO
296 -       printk("pci_insb(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
297 +       printk(KERN_DEBUG "pci_insb(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
298  #endif
299  
300         rp = (volatile unsigned long *) COMEM_BASE;
301 @@ -660,7 +660,7 @@
302         unsigned int            a = (unsigned int) addr;
303  
304  #ifdef DEBUGIO
305 -       printk("pci_insw(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
306 +       printk(KERN_DEBUG "pci_insw(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
307  #endif
308  
309         rp = (volatile unsigned long *) COMEM_BASE;
310 @@ -688,7 +688,7 @@
311         unsigned int            a = (unsigned int) addr;
312  
313  #ifdef DEBUGIO
314 -       printk("pci_insl(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
315 +       printk(KERN_DEBUG "pci_insl(addr=%x,buf=%x,len=%d)\n", (int)addr, (int)buf, len);
316  #endif
317  
318         rp = (volatile unsigned long *) COMEM_BASE;
319 @@ -725,7 +725,7 @@
320         int     i;
321  
322  #ifdef DEBUGIO
323 -       printk("pci_request_irq(irq=%d,handler=%x,flags=%x,device=%s,"
324 +       printk(KERN_DEBUG "pci_request_irq(irq=%d,handler=%x,flags=%x,device=%s,"
325                 "dev_id=%x)\n", irq, (int) handler, (int) flags, device,
326                 (int) dev_id);
327  #endif
328 @@ -757,7 +757,7 @@
329         int     i;
330  
331  #ifdef DEBUGIO
332 -       printk("pci_free_irq(irq=%d,dev_id=%x)\n", irq, (int) dev_id);
333 +       printk(KERN_DEBUG "pci_free_irq(irq=%d,dev_id=%x)\n", irq, (int) dev_id);
334  #endif
335  
336         if (dev_id == (void *) NULL)
337 @@ -781,7 +781,7 @@
338         int     i;
339  
340  #ifdef DEBUGIO
341 -       printk("pci_interrupt(irq=%d,id=%x,fp=%x)\n", irq, (int) id, (int) fp);
342 +       printk(KERN_DEBUG "pci_interrupt(irq=%d,id=%x,fp=%x)\n", irq, (int) id, (int) fp);
343  #endif
344  
345         for (i = 0; (i < COMEM_MAXPCI); i++) {
346 @@ -809,7 +809,7 @@
347         int     i, j, nrslots;
348  
349  #ifdef DEBUGIO
350 -       printk("pci_bmalloc(size=%d)\n", size);
351 +       printk(KERN_DEBUG "pci_bmalloc(size=%d)\n", size);
352  #endif
353  
354         if (size <= 0)
355 @@ -841,7 +841,7 @@
356         int     i, j, nrslots;
357  
358  #ifdef DEBUGIO
359 -       printk("pci_bmfree(mp=%x,size=%d)\n", (int) mp, size);
360 +       printk(KERN_DEBUG "pci_bmfree(mp=%x,size=%d)\n", (int) mp, size);
361  #endif
362  
363         nrslots = size / PCI_MEMSLOTSIZE;
364 @@ -859,12 +859,12 @@
365         unsigned long   l;
366  
367  #ifdef DEBUGIO
368 -       printk("pci_virt_to_bus(address=%x)", (int) address);
369 +       printk(KERN_DEBUG "pci_virt_to_bus(address=%x)", (int) address);
370  #endif
371  
372         l = ((unsigned long) address) - COMEM_BASE;
373  #ifdef DEBUGIO
374 -       printk("=%x\n", (int) (l+pci_shmemaddr));
375 +       printk(KERN_DEBUG "=%x\n", (int) (l+pci_shmemaddr));
376  #endif
377         return(l + pci_shmemaddr);
378  }
379 @@ -876,12 +876,12 @@
380         unsigned long   l;
381  
382  #ifdef DEBUGIO
383 -       printk("pci_bus_to_virt(address=%x)", (int) address);
384 +       printk(KERN_DEBUG "pci_bus_to_virt(address=%x)", (int) address);
385  #endif
386  
387         l = address - pci_shmemaddr;
388  #ifdef DEBUGIO
389 -       printk("=%x\n", (int) (address + COMEM_BASE));
390 +       printk(KERN_DEBUG "=%x\n", (int) (address + COMEM_BASE));
391  #endif
392         return((void *) (address + COMEM_BASE));
393  }
394 @@ -895,7 +895,7 @@
395         int             i, j;
396  
397  #ifdef DEBUGIO
398 -       printk("pci_bmcpyto(dst=%x,src=%x,len=%d)\n", (int)dst, (int)src, len);
399 +       printk(KERN_DEBUG "pci_bmcpyto(dst=%x,src=%x,len=%d)\n", (int)dst, (int)src, len);
400  #endif
401  
402         dp = (unsigned long *) dst;
403 @@ -903,13 +903,13 @@
404         i = len >> 2;
405  
406  #if 0
407 -       printk("DATA:");
408 +       printk(KERN_INFO "DATA:");
409         scp = (unsigned char *) sp;
410         for (i = 0; (i < len); i++) {
411 -               if ((i % 16) == 0) printk("\n%04x: ", i);
412 -               printk("%02x ", *scp++);
413 +               if ((i % 16) == 0) printk(KERN_INFO "\n%04x: ", i);
414 +               printk(KERN_INFO "%02x ", *scp++);
415         }
416 -       printk("\n");
417 +       printk(KERN_INFO "\n");
418  #endif
419  
420         for (j = 0; (i >= 0); i--, j++) {
421 @@ -936,7 +936,7 @@
422         int             i;
423  
424  #ifdef DEBUGIO
425 -       printk("pci_bmcpyfrom(dst=%x,src=%x,len=%d)\n",(int)dst,(int)src,len);
426 +       printk(KERN_DEBUG "pci_bmcpyfrom(dst=%x,src=%x,len=%d)\n",(int)dst,(int)src,len);
427  #endif
428  
429         dp = (unsigned long *) dst;
430 @@ -958,13 +958,13 @@
431         }
432  
433  #if 0
434 -       printk("DATA:");
435 +       printk(KERN_INFO "DATA:");
436         dcp = (unsigned char *) dst;
437         for (i = 0; (i < len); i++) {
438 -               if ((i % 16) == 0) printk("\n%04x: ", i);
439 -               printk("%02x ", *dcp++);
440 +               if ((i % 16) == 0) printk(KERN_INFO "\n%04x: ", i);
441 +               printk(KERN_INFO "%02x ", *dcp++);
442         }
443 -       printk("\n");
444 +       printk(KERN_INFO "\n");
445  #endif
446  }
447  
448 diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/Makefile linux-2.6.0-test8-uc0/arch/m68knommu/kernel/Makefile
449 --- linux-2.6.0-test8/arch/m68knommu/kernel/Makefile    2003-10-20 09:10:57.721659184 +1000
450 +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/Makefile        2003-10-20 09:11:54.086090488 +1000
451 @@ -4,8 +4,8 @@
452  
453  extra-y := vmlinux.lds.s
454  
455 -obj-y += entry.o init_task.o m68k_ksyms.o process.o ptrace.o \
456 -        semaphore.o setup.o signal.o syscalltable.o sys_m68k.o time.o \
457 -        traps.o
458 +obj-y += entry.o init_task.o m68k_ksyms.o process.o ptrace.o semaphore.o \
459 +        setup.o signal.o syscalltable.o sys_m68k.o time.o traps.o
460  
461 +obj-$(CONFIG_MODULES)  += module.o
462  obj-$(CONFIG_COMEMPCI) += comempci.o
463 diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/module.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/module.c
464 --- linux-2.6.0-test8/arch/m68knommu/kernel/module.c    1970-01-01 10:00:00.000000000 +1000
465 +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/module.c        2003-10-20 09:11:54.095089120 +1000
466 @@ -0,0 +1,99 @@
467 +#include <linux/moduleloader.h>
468 +#include <linux/elf.h>
469 +#include <linux/vmalloc.h>
470 +#include <linux/fs.h>
471 +#include <linux/string.h>
472 +#include <linux/kernel.h>
473 +
474 +#if 0
475 +#define DEBUGP printk
476 +#else
477 +#define DEBUGP(fmt...)
478 +#endif
479 +
480 +void *module_alloc(unsigned long size)
481 +{
482 +       if (size == 0)
483 +               return NULL;
484 +       return vmalloc(size);
485 +}
486 +
487 +
488 +/* Free memory returned from module_alloc */
489 +void module_free(struct module *mod, void *module_region)
490 +{
491 +       vfree(module_region);
492 +       /* FIXME: If module_region == mod->init_region, trim exception
493 +           table entries. */
494 +}
495 +
496 +/* We don't need anything special. */
497 +int module_frob_arch_sections(Elf_Ehdr *hdr,
498 +                             Elf_Shdr *sechdrs,
499 +                             char *secstrings,
500 +                             struct module *mod)
501 +{
502 +       return 0;
503 +}
504 +
505 +int apply_relocate(Elf32_Shdr *sechdrs,
506 +                  const char *strtab,
507 +                  unsigned int symindex,
508 +                  unsigned int relsec,
509 +                  struct module *me)
510 +{
511 +       unsigned int i;
512 +       Elf32_Rel *rel = (void *)sechdrs[relsec].sh_addr;
513 +       Elf32_Sym *sym;
514 +       uint32_t *location;
515 +
516 +       DEBUGP("Applying relocate section %u to %u\n", relsec,
517 +              sechdrs[relsec].sh_info);
518 +       for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
519 +               /* This is where to make the change */
520 +               location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
521 +                       + rel[i].r_offset;
522 +               /* This is the symbol it is referring to.  Note that all
523 +                  undefined symbols have been resolved.  */
524 +               sym = (Elf32_Sym *)sechdrs[symindex].sh_addr
525 +                       + ELF32_R_SYM(rel[i].r_info);
526 +
527 +               switch (ELF32_R_TYPE(rel[i].r_info)) {
528 +               case R_68K_32:
529 +                       /* We add the value into the location given */
530 +                       *location += sym->st_value;
531 +                       break;
532 +               case R_68K_PC32:
533 +                       /* Add the value, subtract its postition */
534 +                       *location += sym->st_value - (uint32_t)location;
535 +                       break;
536 +               default:
537 +                       printk(KERN_ERR "module %s: Unknown relocation: %u\n",
538 +                              me->name, ELF32_R_TYPE(rel[i].r_info));
539 +                       return -ENOEXEC;
540 +               }
541 +       }
542 +       return 0;
543 +}
544 +
545 +int apply_relocate_add(Elf32_Shdr *sechdrs,
546 +                      const char *strtab,
547 +                      unsigned int symindex,
548 +                      unsigned int relsec,
549 +                      struct module *me)
550 +{
551 +       printk(KERN_ERR "module %s: ADD RELOCATION unsupported\n",
552 +              me->name);
553 +       return -ENOEXEC;
554 +}
555 +
556 +int module_finalize(const Elf_Ehdr *hdr,
557 +                   const Elf_Shdr *sechdrs,
558 +                   struct module *me)
559 +{
560 +       return 0;
561 +}
562 +
563 +void module_arch_cleanup(struct module *mod)
564 +{
565 +}
566 diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/process.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/process.c
567 --- linux-2.6.0-test8/arch/m68knommu/kernel/process.c   2003-10-20 09:10:57.720659336 +1000
568 +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/process.c       2003-10-20 09:11:54.102088056 +1000
569 @@ -95,17 +95,17 @@
570  
571  void show_regs(struct pt_regs * regs)
572  {
573 -       printk("\n");
574 -       printk("Format %02x  Vector: %04x  PC: %08lx  Status: %04x    %s\n",
575 +       printk(KERN_NOTICE "\n");
576 +       printk(KERN_NOTICE "Format %02x  Vector: %04x  PC: %08lx  Status: %04x    %s\n",
577                regs->format, regs->vector, regs->pc, regs->sr, print_tainted());
578 -       printk("ORIG_D0: %08lx  D0: %08lx  A2: %08lx  A1: %08lx\n",
579 +       printk(KERN_NOTICE "ORIG_D0: %08lx  D0: %08lx  A2: %08lx  A1: %08lx\n",
580                regs->orig_d0, regs->d0, regs->a2, regs->a1);
581 -       printk("A0: %08lx  D5: %08lx  D4: %08lx\n",
582 +       printk(KERN_NOTICE "A0: %08lx  D5: %08lx  D4: %08lx\n",
583                regs->a0, regs->d5, regs->d4);
584 -       printk("D3: %08lx  D2: %08lx  D1: %08lx\n",
585 +       printk(KERN_NOTICE "D3: %08lx  D2: %08lx  D1: %08lx\n",
586                regs->d3, regs->d2, regs->d1);
587         if (!(regs->sr & PS_S))
588 -               printk("USP: %08lx\n", rdusp());
589 +               printk(KERN_NOTICE "USP: %08lx\n", rdusp());
590  }
591  
592  /*
593 @@ -328,58 +328,58 @@
594         unsigned char   *tp;
595         int             i;
596  
597 -       printk("\nCURRENT PROCESS:\n\n");
598 -       printk("COMM=%s PID=%d\n", current->comm, current->pid);
599 +       printk(KERN_EMERG "\nCURRENT PROCESS:\n\n");
600 +       printk(KERN_EMERG "COMM=%s PID=%d\n", current->comm, current->pid);
601  
602         if (current->mm) {
603 -               printk("TEXT=%08x-%08x DATA=%08x-%08x BSS=%08x-%08x\n",
604 +               printk(KERN_EMERG "TEXT=%08x-%08x DATA=%08x-%08x BSS=%08x-%08x\n",
605                         (int) current->mm->start_code,
606                         (int) current->mm->end_code,
607                         (int) current->mm->start_data,
608                         (int) current->mm->end_data,
609                         (int) current->mm->end_data,
610                         (int) current->mm->brk);
611 -               printk("USER-STACK=%08x  KERNEL-STACK=%08x\n\n",
612 +               printk(KERN_EMERG "USER-STACK=%08x  KERNEL-STACK=%08x\n\n",
613                         (int) current->mm->start_stack,
614                         (int)(((unsigned long) current) + KTHREAD_SIZE));
615         }
616  
617 -       printk("PC: %08lx\n", fp->pc);
618 -       printk("SR: %08lx    SP: %08lx\n", (long) fp->sr, (long) fp);
619 -       printk("d0: %08lx    d1: %08lx    d2: %08lx    d3: %08lx\n",
620 +       printk(KERN_EMERG "PC: %08lx\n", fp->pc);
621 +       printk(KERN_EMERG "SR: %08lx    SP: %08lx\n", (long) fp->sr, (long) fp);
622 +       printk(KERN_EMERG "d0: %08lx    d1: %08lx    d2: %08lx    d3: %08lx\n",
623                 fp->d0, fp->d1, fp->d2, fp->d3);
624 -       printk("d4: %08lx    d5: %08lx    a0: %08lx    a1: %08lx\n",
625 +       printk(KERN_EMERG "d4: %08lx    d5: %08lx    a0: %08lx    a1: %08lx\n",
626                 fp->d4, fp->d5, fp->a0, fp->a1);
627 -       printk("\nUSP: %08x   TRAPFRAME: %08x\n", (unsigned int) rdusp(),
628 +       printk(KERN_EMERG "\nUSP: %08x   TRAPFRAME: %08x\n", (unsigned int) rdusp(),
629                 (unsigned int) fp);
630  
631 -       printk("\nCODE:");
632 +       printk(KERN_EMERG "\nCODE:");
633         tp = ((unsigned char *) fp->pc) - 0x20;
634         for (sp = (unsigned long *) tp, i = 0; (i < 0x40);  i += 4) {
635                 if ((i % 0x10) == 0)
636 -                       printk("\n%08x: ", (int) (tp + i));
637 -               printk("%08x ", (int) *sp++);
638 +                       printk(KERN_EMERG "\n%08x: ", (int) (tp + i));
639 +               printk(KERN_EMERG "%08x ", (int) *sp++);
640         }
641 -       printk("\n");
642 +       printk(KERN_EMERG "\n");
643  
644 -       printk("\nKERNEL STACK:");
645 +       printk(KERN_EMERG "\nKERNEL STACK:");
646         tp = ((unsigned char *) fp) - 0x40;
647         for (sp = (unsigned long *) tp, i = 0; (i < 0xc0); i += 4) {
648                 if ((i % 0x10) == 0)
649 -                       printk("\n%08x: ", (int) (tp + i));
650 -               printk("%08x ", (int) *sp++);
651 +                       printk(KERN_EMERG "\n%08x: ", (int) (tp + i));
652 +               printk(KERN_EMERG "%08x ", (int) *sp++);
653         }
654 -       printk("\n");
655 -       printk("\n");
656 +       printk(KERN_EMERG "\n");
657 +       printk(KERN_EMERG "\n");
658  
659 -       printk("\nUSER STACK:");
660 +       printk(KERN_EMERG "\nUSER STACK:");
661         tp = (unsigned char *) (rdusp() - 0x10);
662         for (sp = (unsigned long *) tp, i = 0; (i < 0x80); i += 4) {
663                 if ((i % 0x10) == 0)
664 -                       printk("\n%08x: ", (int) (tp + i));
665 -               printk("%08x ", (int) *sp++);
666 +                       printk(KERN_EMERG "\n%08x: ", (int) (tp + i));
667 +               printk(KERN_EMERG "%08x ", (int) *sp++);
668         }
669 -       printk("\n\n");
670 +       printk(KERN_EMERG "\n\n");
671  }
672  
673  /*
674 diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/setup.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/setup.c
675 --- linux-2.6.0-test8/arch/m68knommu/kernel/setup.c     2003-10-20 09:10:57.813645200 +1000
676 +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/setup.c 2003-10-20 09:11:54.104087752 +1000
677 @@ -59,7 +59,7 @@
678  {
679  }
680  
681 -void (*mach_sched_init) (void (*handler)(int, void *, struct pt_regs *)) = NULL;
682 +void (*mach_sched_init) (irqreturn_t (*handler)(int, void *, struct pt_regs *)) = NULL;
683  void (*mach_tick)( void ) = NULL;
684  /* machine dependent keyboard functions */
685  int (*mach_keyb_init) (void) = NULL;
686 @@ -67,10 +67,7 @@
687  void (*mach_kbd_leds) (unsigned int) = NULL;
688  /* machine dependent irq functions */
689  void (*mach_init_IRQ) (void) = NULL;
690 -void (*(*mach_default_handler)[]) (int, void *, struct pt_regs *) = NULL;
691 -int (*mach_request_irq) (unsigned int, void (*)(int, void *, struct pt_regs *),
692 -                         unsigned long, const char *, void *);
693 -void (*mach_free_irq) (unsigned int irq, void *dev_id) = NULL;
694 +irqreturn_t (*(*mach_default_handler)[]) (int, void *, struct pt_regs *) = NULL;
695  void (*mach_enable_irq) (unsigned int) = NULL;
696  void (*mach_disable_irq) (unsigned int) = NULL;
697  int (*mach_get_irq_list) (struct seq_file *, void *) = NULL;
698 @@ -163,57 +160,57 @@
699  
700         config_BSP(&command_line[0], sizeof(command_line));
701  
702 -       printk("\x0F\r\n\nuClinux/" CPU "\n");
703 +       printk(KERN_INFO "\x0F\r\n\nuClinux/" CPU "\n");
704  
705  #ifdef CONFIG_UCDIMM
706 -       printk("uCdimm by Lineo, Inc. <www.lineo.com>\n");
707 +       printk(KERN_INFO "uCdimm by Lineo, Inc. <www.lineo.com>\n");
708  #endif
709  #ifdef CONFIG_M68VZ328
710 -       printk("M68VZ328 support by Evan Stawnyczy <e@lineo.ca>\n");
711 +       printk(KERN_INFO "M68VZ328 support by Evan Stawnyczy <e@lineo.ca>\n");
712  #endif
713  #ifdef CONFIG_COLDFIRE
714 -       printk("COLDFIRE port done by Greg Ungerer, gerg@snapgear.com\n");
715 +       printk(KERN_INFO "COLDFIRE port done by Greg Ungerer, gerg@snapgear.com\n");
716  #ifdef CONFIG_M5307
717 -       printk("Modified for M5307 by Dave Miller, dmiller@intellistor.com\n");
718 +       printk(KERN_INFO "Modified for M5307 by Dave Miller, dmiller@intellistor.com\n");
719  #endif
720  #ifdef CONFIG_ELITE
721 -       printk("Modified for M5206eLITE by Rob Scott, rscott@mtrob.fdns.net\n");
722 +       printk(KERN_INFO "Modified for M5206eLITE by Rob Scott, rscott@mtrob.fdns.net\n");
723  #endif  
724  #ifdef CONFIG_TELOS
725 -       printk("Modified for Omnia ToolVox by James D. Schettine, james@telos-systems.com\n");
726 +       printk(KERN_INFO "Modified for Omnia ToolVox by James D. Schettine, james@telos-systems.com\n");
727  #endif
728  #endif
729 -       printk("Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n");
730 +       printk(KERN_INFO "Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n");
731  
732  #if defined( CONFIG_PILOT ) && defined( CONFIG_M68328 )
733 -       printk("TRG SuperPilot FLASH card support <info@trgnet.com>\n");
734 +       printk(KERN_INFO "TRG SuperPilot FLASH card support <info@trgnet.com>\n");
735  #endif
736  
737  #if defined( CONFIG_PILOT ) && defined( CONFIG_M68EZ328 )
738 -       printk("PalmV support by Lineo Inc. <jeff@uclinux.com>\n");
739 +       printk(KERN_INFO "PalmV support by Lineo Inc. <jeff@uclinux.com>\n");
740  #endif
741  
742  #ifdef CONFIG_M68EZ328ADS
743 -       printk("M68EZ328ADS board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n");
744 +       printk(KERN_INFO "M68EZ328ADS board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n");
745  #endif
746  
747  #ifdef CONFIG_ALMA_ANS
748 -       printk("Alma Electronics board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n");
749 +       printk(KERN_INFO "Alma Electronics board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n");
750  #endif
751  #if defined (CONFIG_M68360)
752 -       printk("QUICC port done by SED Systems <hamilton@sedsystems.ca>,\n");
753 -       printk("based on 2.0.38 port by Lineo Inc. <mleslie@lineo.com>.\n");
754 +       printk(KERN_INFO "QUICC port done by SED Systems <hamilton@sedsystems.ca>,\n");
755 +       printk(KERN_INFO "based on 2.0.38 port by Lineo Inc. <mleslie@lineo.com>.\n");
756  #endif
757  #ifdef CONFIG_DRAGEN2
758 -       printk("DragonEngine II board support by Georges Menie\n");
759 +       printk(KERN_INFO "DragonEngine II board support by Georges Menie\n");
760  #endif
761  
762  #ifdef DEBUG
763 -       printk("KERNEL -> TEXT=0x%06x-0x%06x DATA=0x%06x-0x%06x "
764 +       printk(KERN_DEBUG "KERNEL -> TEXT=0x%06x-0x%06x DATA=0x%06x-0x%06x "
765                 "BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext,
766                 (int) &_sdata, (int) &_edata,
767                 (int) &_sbss, (int) &_ebss);
768 -       printk("KERNEL -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x "
769 +       printk(KERN_DEBUG "KERNEL -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x "
770                 "STACK=0x%06x-0x%06x\n",
771  #ifdef CAT_ROMARRAY
772                 (int) romarray, ((int) romarray) + romarray[2],
773 @@ -231,7 +228,7 @@
774  
775  #ifdef DEBUG
776         if (strlen(*cmdline_p)) 
777 -               printk("Command line: '%s'\n", *cmdline_p);
778 +               printk(KERN_DEBUG "Command line: '%s'\n", *cmdline_p);
779  #endif
780  
781  #ifdef CONFIG_CONSOLE
782 diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/signal.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/signal.c
783 --- linux-2.6.0-test8/arch/m68knommu/kernel/signal.c    2003-10-20 09:10:57.800647176 +1000
784 +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/signal.c        2003-10-20 09:11:54.110086840 +1000
785 @@ -605,7 +605,7 @@
786                 struct pt_regs *tregs =
787                         (struct pt_regs *)((ulong)regs + regs->stkadj);
788  #if DEBUG
789 -               printk("Performing stackadjust=%04x\n", regs->stkadj);
790 +               printk(KERN_DEBUG "Performing stackadjust=%04x\n", regs->stkadj);
791  #endif
792                 /* This must be copied with decreasing addresses to
793                     handle overlaps.  */
794 @@ -674,7 +674,7 @@
795                 struct pt_regs *tregs =
796                         (struct pt_regs *)((ulong)regs + regs->stkadj);
797  #if DEBUG
798 -               printk("Performing stackadjust=%04x\n", regs->stkadj);
799 +               printk(KERN_DEBUG "Performing stackadjust=%04x\n", regs->stkadj);
800  #endif
801                 /* This must be copied with decreasing addresses to
802                     handle overlaps.  */
803 diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/time.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/time.c
804 --- linux-2.6.0-test8/arch/m68knommu/kernel/time.c      2003-10-20 09:10:57.814645048 +1000
805 +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/time.c  2003-10-20 09:11:54.133083344 +1000
806 @@ -202,4 +202,12 @@
807         return 0;
808  }
809  
810 +/*
811 + * Scheduler clock - returns current time in nanosec units.
812 + */
813 +unsigned long long sched_clock(void)
814 +{
815 +       return (unsigned long long)jiffies * (1000000000 / HZ);
816 +}
817 +
818  EXPORT_SYMBOL(do_settimeofday);
819 diff -Naur linux-2.6.0-test8/arch/m68knommu/kernel/traps.c linux-2.6.0-test8-uc0/arch/m68knommu/kernel/traps.c
820 --- linux-2.6.0-test8/arch/m68knommu/kernel/traps.c     2003-10-20 09:10:57.722659032 +1000
821 +++ linux-2.6.0-test8-uc0/arch/m68knommu/kernel/traps.c 2003-10-20 09:11:54.134083192 +1000
822 @@ -72,15 +72,15 @@
823                 return;
824  
825         console_verbose();
826 -       printk("%s: %08x\n",str,nr);
827 -       printk("PC: [<%08lx>]\nSR: %04x  SP: %p  a2: %08lx\n",
828 +       printk(KERN_EMERG "%s: %08x\n",str,nr);
829 +       printk(KERN_EMERG "PC: [<%08lx>]\nSR: %04x  SP: %p  a2: %08lx\n",
830                fp->pc, fp->sr, fp, fp->a2);
831 -       printk("d0: %08lx    d1: %08lx    d2: %08lx    d3: %08lx\n",
832 +       printk(KERN_EMERG "d0: %08lx    d1: %08lx    d2: %08lx    d3: %08lx\n",
833                fp->d0, fp->d1, fp->d2, fp->d3);
834 -       printk("d4: %08lx    d5: %08lx    a0: %08lx    a1: %08lx\n",
835 +       printk(KERN_EMERG "d4: %08lx    d5: %08lx    a0: %08lx    a1: %08lx\n",
836                fp->d4, fp->d5, fp->a0, fp->a1);
837  
838 -       printk("Process %s (pid: %d, stackpage=%08lx)\n",
839 +       printk(KERN_EMERG "Process %s (pid: %d, stackpage=%08lx)\n",
840                 current->comm, current->pid, PAGE_SIZE+(unsigned long)current);
841         show_stack(NULL, (unsigned long *)fp);
842         do_exit(SIGSEGV);
843 @@ -93,12 +93,12 @@
844                 current->thread.esp0 = (unsigned long) fp;
845  
846  #if DEBUG
847 -       printk ("*** Bus Error *** Format is %x\n", fp->ptregs.format);
848 +       printk (KERN_DEBUG "*** Bus Error *** Format is %x\n", fp->ptregs.format);
849  #endif
850  
851         die_if_kernel("bad frame format",&fp->ptregs,0);
852  #if DEBUG
853 -       printk("Unknown SIGSEGV - 4\n");
854 +       printk(KERN_DEBUG "Unknown SIGSEGV - 4\n");
855  #endif
856         force_sig(SIGSEGV, current);
857  }
858 @@ -119,16 +119,16 @@
859         addr = (unsigned long) esp;
860         endstack = (unsigned long *) PAGE_ALIGN(addr);
861  
862 -       printk("Stack from %08lx:", (unsigned long)stack);
863 +       printk(KERN_EMERG "Stack from %08lx:", (unsigned long)stack);
864         for (i = 0; i < kstack_depth_to_print; i++) {
865                 if (stack + 1 > endstack)
866                         break;
867                 if (i % 8 == 0)
868 -                       printk("\n       ");
869 -               printk(" %08lx", *stack++);
870 +                       printk(KERN_EMERG "\n       ");
871 +               printk(KERN_EMERG " %08lx", *stack++);
872         }
873  
874 -       printk("\nCall Trace:");
875 +       printk(KERN_EMERG "\nCall Trace:");
876         i = 0;
877         while (stack + 1 <= endstack) {
878                 addr = *stack++;
879 @@ -143,26 +143,26 @@
880                 if (((addr >= (unsigned long) &_start) &&
881                      (addr <= (unsigned long) &_etext))) {
882                         if (i % 4 == 0)
883 -                               printk("\n       ");
884 -                       printk(" [<%08lx>]", addr);
885 +                               printk(KERN_EMERG "\n       ");
886 +                       printk(KERN_EMERG " [<%08lx>]", addr);
887                         i++;
888                 }
889         }
890 -       printk("\n");
891 +       printk(KERN_EMERG "\n");
892  }
893  
894  void bad_super_trap(struct frame *fp)
895  {
896         console_verbose();
897         if (fp->ptregs.vector < 4*sizeof(vec_names)/sizeof(vec_names[0]))
898 -               printk ("*** %s ***   FORMAT=%X\n",
899 +               printk (KERN_WARNING "*** %s ***   FORMAT=%X\n",
900                         vec_names[(fp->ptregs.vector) >> 2],
901                         fp->ptregs.format);
902         else
903 -               printk ("*** Exception %d ***   FORMAT=%X\n",
904 +               printk (KERN_WARNING "*** Exception %d ***   FORMAT=%X\n",
905                         (fp->ptregs.vector) >> 2, 
906                         fp->ptregs.format);
907 -       printk ("Current process id is %d\n", current->pid);
908 +       printk (KERN_WARNING "Current process id is %d\n", current->pid);
909         die_if_kernel("BAD KERNEL TRAP", &fp->ptregs, 0);
910  }
911  
912 @@ -297,7 +297,7 @@
913  
914  void show_trace_task(struct task_struct *tsk)
915  {
916 -       printk("STACK ksp=0x%lx, usp=0x%lx\n", tsk->thread.ksp, tsk->thread.usp);
917 +       printk(KERN_WARNING "STACK ksp=0x%lx, usp=0x%lx\n", tsk->thread.ksp, tsk->thread.usp);
918  }
919  
920  #ifdef CONFIG_M68KFPU_EMU
921 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/checksum.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/checksum.c
922 --- linux-2.6.0-test8/arch/m68knommu/lib/checksum.c     2003-10-20 09:10:57.817644592 +1000
923 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/checksum.c 2003-10-20 09:11:53.749141712 +1000
924 @@ -32,7 +32,6 @@
925     of the assembly has to go. */
926  
927  #include <net/checksum.h>
928 -#include <net/module.h>
929  
930  static inline unsigned short from32to16(unsigned long x)
931  {
932 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/cmpdi2.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/cmpdi2.c
933 --- linux-2.6.0-test8/arch/m68knommu/lib/cmpdi2.c       1970-01-01 10:00:00.000000000 +1000
934 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/cmpdi2.c   2003-10-20 09:11:53.758140344 +1000
935 @@ -0,0 +1,71 @@
936 +/* cmpdi2.c extracted from gcc-2.95.3/libgcc2.c which is:  */
937 +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
938 +
939 +This file is part of GNU CC.
940 +
941 +GNU CC is free software; you can redistribute it and/or modify
942 +it under the terms of the GNU General Public License as published by
943 +the Free Software Foundation; either version 2, or (at your option)
944 +any later version.
945 +
946 +GNU CC is distributed in the hope that it will be useful,
947 +but WITHOUT ANY WARRANTY; without even the implied warranty of
948 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
949 +GNU General Public License for more details.
950 +
951 +You should have received a copy of the GNU General Public License
952 +along with GNU CC; see the file COPYING.  If not, write to
953 +the Free Software Foundation, 59 Temple Place - Suite 330,
954 +Boston, MA 02111-1307, USA.  */
955 +
956 +typedef         int SItype     __attribute__ ((mode (SI)));
957 +typedef unsigned int USItype   __attribute__ ((mode (SI)));
958 +typedef                 int DItype     __attribute__ ((mode (DI)));
959 +typedef unsigned int UDItype   __attribute__ ((mode (DI)));
960 +
961 +typedef int word_type __attribute__ ((mode (__word__)));
962 +
963 +struct DIstruct {SItype high, low;};
964 +
965 +typedef union
966 +{
967 +  struct DIstruct s;
968 +  DItype ll;
969 +} DIunion;
970 +
971 +word_type
972 +__cmpdi2 (DItype a, DItype b)
973 +{
974 +  DIunion au, bu;
975 +
976 +  au.ll = a, bu.ll = b;
977 +
978 +  if (au.s.high < bu.s.high)
979 +    return 0;
980 +  else if (au.s.high > bu.s.high)
981 +    return 2;
982 +  if ((USItype) au.s.low < (USItype) bu.s.low)
983 +    return 0;
984 +  else if ((USItype) au.s.low > (USItype) bu.s.low)
985 +    return 2;
986 +  return 1;
987 +}
988 +
989 +
990 +word_type
991 +__ucmpdi2 (DItype a, DItype b)
992 +{
993 +  DIunion au, bu;
994 +
995 +  au.ll = a, bu.ll = b;
996 +
997 +  if ((USItype) au.s.high < (USItype) bu.s.high)
998 +    return 0;
999 +  else if ((USItype) au.s.high > (USItype) bu.s.high)
1000 +    return 2;
1001 +  if ((USItype) au.s.low < (USItype) bu.s.low)
1002 +    return 0;
1003 +  else if ((USItype) au.s.low > (USItype) bu.s.low)
1004 +    return 2;
1005 +  return 1;
1006 +}
1007 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/divdi3.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/divdi3.c
1008 --- linux-2.6.0-test8/arch/m68knommu/lib/divdi3.c       1970-01-01 10:00:00.000000000 +1000
1009 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/divdi3.c   2003-10-20 09:11:53.773138064 +1000
1010 @@ -0,0 +1,66 @@
1011 +/* divdi3.c extracted from gcc-2.95.3/libgcc2.c which is:  */
1012 +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
1013 +
1014 +This file is part of GNU CC.
1015 +
1016 +GNU CC is free software; you can redistribute it and/or modify
1017 +it under the terms of the GNU General Public License as published by
1018 +the Free Software Foundation; either version 2, or (at your option)
1019 +any later version.
1020 +
1021 +GNU CC is distributed in the hope that it will be useful,
1022 +but WITHOUT ANY WARRANTY; without even the implied warranty of
1023 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1024 +GNU General Public License for more details.
1025 +
1026 +You should have received a copy of the GNU General Public License
1027 +along with GNU CC; see the file COPYING.  If not, write to
1028 +the Free Software Foundation, 59 Temple Place - Suite 330,
1029 +Boston, MA 02111-1307, USA.  */
1030 +
1031 +typedef         int SItype     __attribute__ ((mode (SI)));
1032 +typedef                 int DItype     __attribute__ ((mode (DI)));
1033 +typedef unsigned int UDItype   __attribute__ ((mode (DI)));
1034 +
1035 +typedef int word_type __attribute__ ((mode (__word__)));
1036 +
1037 +struct DIstruct {SItype high, low;};
1038 +
1039 +typedef union
1040 +{
1041 +  struct DIstruct s;
1042 +  DItype ll;
1043 +} DIunion;
1044 +
1045 +UDItype __udivmoddi4 (UDItype n, UDItype d, UDItype *rp);
1046 +DItype __negdi2 (DItype u);
1047 +
1048 +DItype
1049 +__divdi3 (DItype u, DItype v)
1050 +{
1051 +  word_type c = 0;
1052 +  DIunion uu, vv;
1053 +  DItype w;
1054 +
1055 +  uu.ll = u;
1056 +  vv.ll = v;
1057 +
1058 +  if (uu.s.high < 0)
1059 +    c = ~c,
1060 +    uu.ll = __negdi2 (uu.ll);
1061 +  if (vv.s.high < 0)
1062 +    c = ~c,
1063 +    vv.ll = __negdi2 (vv.ll);
1064 +
1065 +  w = __udivmoddi4 (uu.ll, vv.ll, (UDItype *) 0);
1066 +  if (c)
1067 +    w = __negdi2 (w);
1068 +
1069 +  return w;
1070 +}
1071 +
1072 +UDItype
1073 +__udivdi3 (UDItype n, UDItype d)
1074 +{
1075 +  return __udivmoddi4 (n, d, (UDItype *) 0);
1076 +}
1077 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/divsi3.S linux-2.6.0-test8-uc0/arch/m68knommu/lib/divsi3.S
1078 --- linux-2.6.0-test8/arch/m68knommu/lib/divsi3.S       2003-10-20 09:10:57.818644440 +1000
1079 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/divsi3.S   2003-10-20 09:11:53.781136848 +1000
1080 @@ -97,7 +97,7 @@
1081         movel   sp@(12), d1     /* d1 = divisor */
1082         jpl     L1
1083         negl    d1
1084 -#ifndef __mcf5200__
1085 +#if !(defined(__mcf5200__) || defined(__mcoldfire__))
1086         negb    d2              /* change sign because divisor <0  */
1087  #else
1088         negl    d2              /* change sign because divisor <0  */
1089 @@ -105,7 +105,7 @@
1090  L1:    movel   sp@(8), d0      /* d0 = dividend */
1091         jpl     L2
1092         negl    d0
1093 -#ifndef __mcf5200__
1094 +#if !(defined(__mcf5200__) || defined(__mcoldfire__))
1095         negb    d2
1096  #else
1097         negl    d2
1098 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/gcc_bcmp.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/gcc_bcmp.c
1099 --- linux-2.6.0-test8/arch/m68knommu/lib/gcc_bcmp.c     1970-01-01 10:00:00.000000000 +1000
1100 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/gcc_bcmp.c 2003-10-20 09:11:53.781136848 +1000
1101 @@ -0,0 +1,38 @@
1102 +/* gcc_bmp.c extracted from gcc-2.95.3/libgcc2.c which is:  */
1103 +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
1104 +
1105 +This file is part of GNU CC.
1106 +
1107 +GNU CC is free software; you can redistribute it and/or modify
1108 +it under the terms of the GNU General Public License as published by
1109 +the Free Software Foundation; either version 2, or (at your option)
1110 +any later version.
1111 +
1112 +GNU CC is distributed in the hope that it will be useful,
1113 +but WITHOUT ANY WARRANTY; without even the implied warranty of
1114 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1115 +GNU General Public License for more details.
1116 +
1117 +You should have received a copy of the GNU General Public License
1118 +along with GNU CC; see the file COPYING.  If not, write to
1119 +the Free Software Foundation, 59 Temple Place - Suite 330,
1120 +Boston, MA 02111-1307, USA.  */
1121 +
1122 +#include <linux/types.h>
1123 +
1124 +/* Like bcmp except the sign is meaningful.
1125 +   Result is negative if S1 is less than S2,
1126 +   positive if S1 is greater, 0 if S1 and S2 are equal.  */
1127 +
1128 +int
1129 +__gcc_bcmp (unsigned char *s1, unsigned char *s2, size_t size)
1130 +{
1131 +  while (size > 0)
1132 +    {
1133 +      unsigned char c1 = *s1++, c2 = *s2++;
1134 +      if (c1 != c2)
1135 +       return c1 - c2;
1136 +      size--;
1137 +    }
1138 +  return 0;
1139 +}
1140 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/Makefile linux-2.6.0-test8-uc0/arch/m68knommu/lib/Makefile
1141 --- linux-2.6.0-test8/arch/m68knommu/lib/Makefile       2003-10-20 09:10:57.816644744 +1000
1142 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/Makefile   2003-10-20 09:11:53.730144600 +1000
1143 @@ -4,4 +4,5 @@
1144  
1145  lib-y  := ashldi3.o ashrdi3.o lshrdi3.o \
1146            muldi3.o mulsi3.o divsi3.o udivsi3.o modsi3.o umodsi3.o \
1147 -          checksum.o semaphore.o memcpy.o memset.o
1148 +          checksum.o semaphore.o memcpy.o memset.o \
1149 +          cmpdi2.o divdi3.o negdi2.o moddi3.o udivmoddi4.o gcc_bcmp.o
1150 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/moddi3.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/moddi3.c
1151 --- linux-2.6.0-test8/arch/m68knommu/lib/moddi3.c       1970-01-01 10:00:00.000000000 +1000
1152 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/moddi3.c   2003-10-20 09:11:53.782136696 +1000
1153 @@ -0,0 +1,69 @@
1154 +/* moddi3.c extracted from gcc-2.95.3/libgcc2.c which is:  */
1155 +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
1156 +
1157 +This file is part of GNU CC.
1158 +
1159 +GNU CC is free software; you can redistribute it and/or modify
1160 +it under the terms of the GNU General Public License as published by
1161 +the Free Software Foundation; either version 2, or (at your option)
1162 +any later version.
1163 +
1164 +GNU CC is distributed in the hope that it will be useful,
1165 +but WITHOUT ANY WARRANTY; without even the implied warranty of
1166 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1167 +GNU General Public License for more details.
1168 +
1169 +You should have received a copy of the GNU General Public License
1170 +along with GNU CC; see the file COPYING.  If not, write to
1171 +the Free Software Foundation, 59 Temple Place - Suite 330,
1172 +Boston, MA 02111-1307, USA.  */
1173 +
1174 +typedef         int SItype     __attribute__ ((mode (SI)));
1175 +typedef                 int DItype     __attribute__ ((mode (DI)));
1176 +typedef unsigned int UDItype   __attribute__ ((mode (DI)));
1177 +
1178 +typedef int word_type __attribute__ ((mode (__word__)));
1179 +
1180 +struct DIstruct {SItype high, low;};
1181 +
1182 +typedef union
1183 +{
1184 +  struct DIstruct s;
1185 +  DItype ll;
1186 +} DIunion;
1187 +
1188 +UDItype __udivmoddi4 (UDItype n, UDItype d, UDItype *rp);
1189 +DItype __negdi2 (DItype u);
1190 +
1191 +DItype
1192 +__moddi3 (DItype u, DItype v)
1193 +{
1194 +  word_type c = 0;
1195 +  DIunion uu, vv;
1196 +  DItype w;
1197 +
1198 +  uu.ll = u;
1199 +  vv.ll = v;
1200 +
1201 +  if (uu.s.high < 0)
1202 +    c = ~c,
1203 +    uu.ll = __negdi2 (uu.ll);
1204 +  if (vv.s.high < 0)
1205 +    vv.ll = __negdi2 (vv.ll);
1206 +
1207 +  (void) __udivmoddi4 (uu.ll, vv.ll, &w);
1208 +  if (c)
1209 +    w = __negdi2 (w);
1210 +
1211 +  return w;
1212 +}
1213 +
1214 +UDItype
1215 +__umoddi3 (UDItype u, UDItype v)
1216 +{
1217 +  UDItype w;
1218 +
1219 +  (void) __udivmoddi4 (u, v, &w);
1220 +
1221 +  return w;
1222 +}
1223 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/modsi3.S linux-2.6.0-test8-uc0/arch/m68knommu/lib/modsi3.S
1224 --- linux-2.6.0-test8/arch/m68knommu/lib/modsi3.S       2003-10-20 09:10:57.815644896 +1000
1225 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/modsi3.S   2003-10-20 09:11:53.782136696 +1000
1226 @@ -98,7 +98,7 @@
1227         jbsr    SYM (__divsi3)
1228         addql   IMM (8), sp
1229         movel   sp@(8), d1      /* d1 = divisor */
1230 -#ifndef __mcf5200__
1231 +#if !(defined(__mcf5200__) || defined(__mcoldfire__))
1232         movel   d1, sp@-
1233         movel   d0, sp@-
1234         jbsr    SYM (__mulsi3)  /* d0 = (a/b)*b */
1235 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/mulsi3.S linux-2.6.0-test8-uc0/arch/m68knommu/lib/mulsi3.S
1236 --- linux-2.6.0-test8/arch/m68knommu/lib/mulsi3.S       2003-10-20 09:10:57.865637296 +1000
1237 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/mulsi3.S   2003-10-20 09:11:53.783136544 +1000
1238 @@ -95,7 +95,7 @@
1239         muluw   sp@(10), d0     /* x0*y1 */
1240         movew   sp@(6), d1      /* x1 -> d1 */
1241         muluw   sp@(8), d1      /* x1*y0 */
1242 -#ifndef __mcf5200__
1243 +#if !(defined(__mcf5200__) || defined(__mcoldfire__))
1244         addw    d1, d0
1245  #else
1246         addl    d1, d0
1247 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/negdi2.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/negdi2.c
1248 --- linux-2.6.0-test8/arch/m68knommu/lib/negdi2.c       1970-01-01 10:00:00.000000000 +1000
1249 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/negdi2.c   2003-10-20 09:11:53.783136544 +1000
1250 @@ -0,0 +1,47 @@
1251 +/* negdi2.c extracted from gcc-2.95.3/libgcc2.c which is:  */
1252 +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
1253 +
1254 +This file is part of GNU CC.
1255 +
1256 +GNU CC is free software; you can redistribute it and/or modify
1257 +it under the terms of the GNU General Public License as published by
1258 +the Free Software Foundation; either version 2, or (at your option)
1259 +any later version.
1260 +
1261 +GNU CC is distributed in the hope that it will be useful,
1262 +but WITHOUT ANY WARRANTY; without even the implied warranty of
1263 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1264 +GNU General Public License for more details.
1265 +
1266 +You should have received a copy of the GNU General Public License
1267 +along with GNU CC; see the file COPYING.  If not, write to
1268 +the Free Software Foundation, 59 Temple Place - Suite 330,
1269 +Boston, MA 02111-1307, USA.  */
1270 +
1271 +typedef         int SItype     __attribute__ ((mode (SI)));
1272 +typedef unsigned int USItype   __attribute__ ((mode (SI)));
1273 +typedef                 int DItype     __attribute__ ((mode (DI)));
1274 +
1275 +typedef int word_type __attribute__ ((mode (__word__)));
1276 +
1277 +struct DIstruct {SItype high, low;};
1278 +
1279 +typedef union
1280 +{
1281 +  struct DIstruct s;
1282 +  DItype ll;
1283 +} DIunion;
1284 +
1285 +DItype
1286 +__negdi2 (DItype u)
1287 +{
1288 +  DIunion w;
1289 +  DIunion uu;
1290 +
1291 +  uu.ll = u;
1292 +
1293 +  w.s.low = -uu.s.low;
1294 +  w.s.high = -uu.s.high - ((USItype) w.s.low > 0);
1295 +
1296 +  return w.ll;
1297 +}
1298 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/udivmoddi4.c linux-2.6.0-test8-uc0/arch/m68knommu/lib/udivmoddi4.c
1299 --- linux-2.6.0-test8/arch/m68knommu/lib/udivmoddi4.c   1970-01-01 10:00:00.000000000 +1000
1300 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/udivmoddi4.c       2003-10-20 09:11:53.784136392 +1000
1301 @@ -0,0 +1,413 @@
1302 +/* udivmoddi4.c extracted from gcc-2.95.3/libgcc2.c 
1303 + * and gcc-2.95.3/longlong.h which are:  */
1304 +/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
1305 +
1306 +This file is part of GNU CC.
1307 +
1308 +GNU CC is free software; you can redistribute it and/or modify
1309 +it under the terms of the GNU General Public License as published by
1310 +the Free Software Foundation; either version 2, or (at your option)
1311 +any later version.
1312 +
1313 +GNU CC is distributed in the hope that it will be useful,
1314 +but WITHOUT ANY WARRANTY; without even the implied warranty of
1315 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1316 +GNU General Public License for more details.
1317 +
1318 +You should have received a copy of the GNU General Public License
1319 +along with GNU CC; see the file COPYING.  If not, write to
1320 +the Free Software Foundation, 59 Temple Place - Suite 330,
1321 +Boston, MA 02111-1307, USA.  */
1322 +
1323 +#define BITS_PER_UNIT 8
1324 +
1325 +typedef unsigned int UQItype   __attribute__ ((mode (QI)));
1326 +typedef         int SItype     __attribute__ ((mode (SI)));
1327 +typedef unsigned int USItype   __attribute__ ((mode (SI)));
1328 +typedef                 int DItype     __attribute__ ((mode (DI)));
1329 +typedef unsigned int UDItype   __attribute__ ((mode (DI)));
1330 +
1331 +#define SI_TYPE_SIZE (sizeof (SItype) * BITS_PER_UNIT)
1332 +
1333 +struct DIstruct {SItype high, low;};
1334 +
1335 +typedef union
1336 +{
1337 +  struct DIstruct s;
1338 +  DItype ll;
1339 +} DIunion;
1340 +
1341 +#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
1342 +  __asm__ ("sub%.l %5,%1
1343 +    subx%.l %3,%0"                          \
1344 +       : "=d" ((USItype) (sh)),                 \
1345 +         "=&d" ((USItype) (sl))                 \
1346 +       : "0" ((USItype) (ah)),                  \
1347 +         "d" ((USItype) (bh)),                  \
1348 +         "1" ((USItype) (al)),                  \
1349 +         "g" ((USItype) (bl)))
1350 +
1351 +#if !defined(__mcf5200__)
1352 +/* %/ inserts REGISTER_PREFIX, %# inserts IMMEDIATE_PREFIX.  */
1353 +#define umul_ppmm(xh, xl, a, b) \
1354 +  __asm__ ("| Inlined umul_ppmm
1355 +    move%.l %2,%/d0
1356 +    move%.l %3,%/d1
1357 +    move%.l %/d0,%/d2
1358 +    swap    %/d0
1359 +    move%.l %/d1,%/d3
1360 +    swap    %/d1
1361 +    move%.w %/d2,%/d4
1362 +    mulu    %/d3,%/d4
1363 +    mulu    %/d1,%/d2
1364 +    mulu    %/d0,%/d3
1365 +    mulu    %/d0,%/d1
1366 +    move%.l %/d4,%/d0
1367 +    eor%.w  %/d0,%/d0
1368 +    swap    %/d0
1369 +    add%.l  %/d0,%/d2
1370 +    add%.l  %/d3,%/d2
1371 +    jcc 1f
1372 +    add%.l  %#65536,%/d1
1373 +1:  swap    %/d2
1374 +    moveq   %#0,%/d0
1375 +    move%.w %/d2,%/d0
1376 +    move%.w %/d4,%/d2
1377 +    move%.l %/d2,%1
1378 +    add%.l  %/d1,%/d0
1379 +    move%.l %/d0,%0"                        \
1380 +       : "=g" ((USItype) (xh)),                 \
1381 +         "=g" ((USItype) (xl))                  \
1382 +       : "g" ((USItype) (a)),                   \
1383 +         "g" ((USItype) (b))                    \
1384 +       : "d0", "d1", "d2", "d3", "d4")
1385 +#define UMUL_TIME 100
1386 +#define UDIV_TIME 400
1387 +#endif /* not mcf5200 */
1388 +
1389 +#if !defined (udiv_qrnnd)
1390 +#define UDIV_NEEDS_NORMALIZATION 1
1391 +#define udiv_qrnnd __udiv_qrnnd_c
1392 +#endif
1393 +
1394 +#define __BITS4 (SI_TYPE_SIZE / 4)
1395 +#define __ll_B (1L << (SI_TYPE_SIZE / 2))
1396 +#define __ll_lowpart(t) ((USItype) (t) % __ll_B)
1397 +#define __ll_highpart(t) ((USItype) (t) / __ll_B)
1398 +
1399 +#if !defined (count_leading_zeros)
1400 +extern const UQItype __clz_tab[];
1401 +#define count_leading_zeros(count, x) \
1402 +  do {                                  \
1403 +    USItype __xr = (x);                         \
1404 +    USItype __a;                            \
1405 +                                    \
1406 +    if (SI_TYPE_SIZE <= 32)                     \
1407 +      {                                 \
1408 +    __a = __xr < ((USItype)1<<2*__BITS4)                \
1409 +      ? (__xr < ((USItype)1<<__BITS4) ? 0 : __BITS4)        \
1410 +      : (__xr < ((USItype)1<<3*__BITS4) ?  2*__BITS4 : 3*__BITS4);  \
1411 +      }                                 \
1412 +    else                                \
1413 +      {                                 \
1414 +    for (__a = SI_TYPE_SIZE - 8; __a > 0; __a -= 8)         \
1415 +      if (((__xr >> __a) & 0xff) != 0)              \
1416 +        break;                          \
1417 +      }                                 \
1418 +                                    \
1419 +    (count) = SI_TYPE_SIZE - (__clz_tab[__xr >> __a] + __a);        \
1420 +  } while (0)
1421 +#endif
1422 +
1423 +#define __udiv_qrnnd_c(q, r, n1, n0, d) \
1424 +  do {                                  \
1425 +    USItype __d1, __d0, __q1, __q0;                 \
1426 +    USItype __r1, __r0, __m;                        \
1427 +    __d1 = __ll_highpart (d);                       \
1428 +    __d0 = __ll_lowpart (d);                        \
1429 +                                    \
1430 +    __r1 = (n1) % __d1;                         \
1431 +    __q1 = (n1) / __d1;                         \
1432 +    __m = (USItype) __q1 * __d0;                    \
1433 +    __r1 = __r1 * __ll_B | __ll_highpart (n0);              \
1434 +    if (__r1 < __m)                         \
1435 +      {                                 \
1436 +    __q1--, __r1 += (d);                        \
1437 +    if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\
1438 +      if (__r1 < __m)                       \
1439 +        __q1--, __r1 += (d);                    \
1440 +      }                                 \
1441 +    __r1 -= __m;                            \
1442 +                                    \
1443 +    __r0 = __r1 % __d1;                         \
1444 +    __q0 = __r1 / __d1;                         \
1445 +    __m = (USItype) __q0 * __d0;                    \
1446 +    __r0 = __r0 * __ll_B | __ll_lowpart (n0);               \
1447 +    if (__r0 < __m)                         \
1448 +      {                                 \
1449 +    __q0--, __r0 += (d);                        \
1450 +    if (__r0 >= (d))                        \
1451 +      if (__r0 < __m)                       \
1452 +        __q0--, __r0 += (d);                    \
1453 +      }                                 \
1454 +    __r0 -= __m;                            \
1455 +                                    \
1456 +    (q) = (USItype) __q1 * __ll_B | __q0;               \
1457 +    (r) = __r0;                             \
1458 +  } while (0)
1459 +
1460 +#if !defined (umul_ppmm)
1461 +#define umul_ppmm(w1, w0, u, v)                     \
1462 +  do {                                  \
1463 +    USItype __x0, __x1, __x2, __x3;                 \
1464 +    USItype __ul, __vl, __uh, __vh;                 \
1465 +                                    \
1466 +    __ul = __ll_lowpart (u);                        \
1467 +    __uh = __ll_highpart (u);                       \
1468 +    __vl = __ll_lowpart (v);                        \
1469 +    __vh = __ll_highpart (v);                       \
1470 +                                    \
1471 +    __x0 = (USItype) __ul * __vl;                   \
1472 +    __x1 = (USItype) __ul * __vh;                   \
1473 +    __x2 = (USItype) __uh * __vl;                   \
1474 +    __x3 = (USItype) __uh * __vh;                   \
1475 +                                    \
1476 +    __x1 += __ll_highpart (__x0);/* this can't give carry */        \
1477 +    __x1 += __x2;       /* but this indeed can */       \
1478 +    if (__x1 < __x2)        /* did we get it? */            \
1479 +      __x3 += __ll_B;       /* yes, add it in the proper pos. */    \
1480 +                                    \
1481 +    (w1) = __x3 + __ll_highpart (__x1);                 \
1482 +    (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0);      \
1483 +  } while (0)
1484 +#endif
1485 +
1486 +
1487 +static const UQItype __clz_tab[] =
1488 +{
1489 +  0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
1490 +  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
1491 +  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
1492 +  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
1493 +  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
1494 +  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
1495 +  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
1496 +  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
1497 +};
1498 +
1499 +UDItype
1500 +__udivmoddi4 (UDItype n, UDItype d, UDItype *rp)
1501 +{
1502 +  DIunion ww;
1503 +  DIunion nn, dd;
1504 +  DIunion rr;
1505 +  USItype d0, d1, n0, n1, n2;
1506 +  USItype q0, q1;
1507 +  USItype b, bm;
1508 +
1509 +  nn.ll = n;
1510 +  dd.ll = d;
1511 +
1512 +  d0 = dd.s.low;
1513 +  d1 = dd.s.high;
1514 +  n0 = nn.s.low;
1515 +  n1 = nn.s.high;
1516 +
1517 +#if !UDIV_NEEDS_NORMALIZATION
1518 +  if (d1 == 0)
1519 +    {
1520 +      if (d0 > n1)
1521 +       {
1522 +         /* 0q = nn / 0D */
1523 +
1524 +         udiv_qrnnd (q0, n0, n1, n0, d0);
1525 +         q1 = 0;
1526 +
1527 +         /* Remainder in n0.  */
1528 +       }
1529 +      else
1530 +       {
1531 +         /* qq = NN / 0d */
1532 +
1533 +         if (d0 == 0)
1534 +           d0 = 1 / d0;        /* Divide intentionally by zero.  */
1535 +
1536 +         udiv_qrnnd (q1, n1, 0, n1, d0);
1537 +         udiv_qrnnd (q0, n0, n1, n0, d0);
1538 +
1539 +         /* Remainder in n0.  */
1540 +       }
1541 +
1542 +      if (rp != 0)
1543 +       {
1544 +         rr.s.low = n0;
1545 +         rr.s.high = 0;
1546 +         *rp = rr.ll;
1547 +       }
1548 +    }
1549 +
1550 +#else /* UDIV_NEEDS_NORMALIZATION */
1551 +
1552 +  if (d1 == 0)
1553 +    {
1554 +      if (d0 > n1)
1555 +       {
1556 +         /* 0q = nn / 0D */
1557 +
1558 +         count_leading_zeros (bm, d0);
1559 +
1560 +         if (bm != 0)
1561 +           {
1562 +             /* Normalize, i.e. make the most significant bit of the
1563 +                denominator set.  */
1564 +
1565 +             d0 = d0 << bm;
1566 +             n1 = (n1 << bm) | (n0 >> (SI_TYPE_SIZE - bm));
1567 +             n0 = n0 << bm;
1568 +           }
1569 +
1570 +         udiv_qrnnd (q0, n0, n1, n0, d0);
1571 +         q1 = 0;
1572 +
1573 +         /* Remainder in n0 >> bm.  */
1574 +       }
1575 +      else
1576 +       {
1577 +         /* qq = NN / 0d */
1578 +
1579 +         if (d0 == 0)
1580 +           d0 = 1 / d0;        /* Divide intentionally by zero.  */
1581 +
1582 +         count_leading_zeros (bm, d0);
1583 +
1584 +         if (bm == 0)
1585 +           {
1586 +             /* From (n1 >= d0) /\ (the most significant bit of d0 is set),
1587 +                conclude (the most significant bit of n1 is set) /\ (the
1588 +                leading quotient digit q1 = 1).
1589 +
1590 +                This special case is necessary, not an optimization.
1591 +                (Shifts counts of SI_TYPE_SIZE are undefined.)  */
1592 +
1593 +             n1 -= d0;
1594 +             q1 = 1;
1595 +           }
1596 +         else
1597 +           {
1598 +             /* Normalize.  */
1599 +
1600 +             b = SI_TYPE_SIZE - bm;
1601 +
1602 +             d0 = d0 << bm;
1603 +             n2 = n1 >> b;
1604 +             n1 = (n1 << bm) | (n0 >> b);
1605 +             n0 = n0 << bm;
1606 +
1607 +             udiv_qrnnd (q1, n1, n2, n1, d0);
1608 +           }
1609 +
1610 +         /* n1 != d0...  */
1611 +
1612 +         udiv_qrnnd (q0, n0, n1, n0, d0);
1613 +
1614 +         /* Remainder in n0 >> bm.  */
1615 +       }
1616 +
1617 +      if (rp != 0)
1618 +       {
1619 +         rr.s.low = n0 >> bm;
1620 +         rr.s.high = 0;
1621 +         *rp = rr.ll;
1622 +       }
1623 +    }
1624 +#endif /* UDIV_NEEDS_NORMALIZATION */
1625 +
1626 +  else
1627 +    {
1628 +      if (d1 > n1)
1629 +       {
1630 +         /* 00 = nn / DD */
1631 +
1632 +         q0 = 0;
1633 +         q1 = 0;
1634 +
1635 +         /* Remainder in n1n0.  */
1636 +         if (rp != 0)
1637 +           {
1638 +             rr.s.low = n0;
1639 +             rr.s.high = n1;
1640 +             *rp = rr.ll;
1641 +           }
1642 +       }
1643 +      else
1644 +       {
1645 +         /* 0q = NN / dd */
1646 +
1647 +         count_leading_zeros (bm, d1);
1648 +         if (bm == 0)
1649 +           {
1650 +             /* From (n1 >= d1) /\ (the most significant bit of d1 is set),
1651 +                conclude (the most significant bit of n1 is set) /\ (the
1652 +                quotient digit q0 = 0 or 1).
1653 +
1654 +                This special case is necessary, not an optimization.  */
1655 +
1656 +             /* The condition on the next line takes advantage of that
1657 +                n1 >= d1 (true due to program flow).  */
1658 +             if (n1 > d1 || n0 >= d0)
1659 +               {
1660 +                 q0 = 1;
1661 +                 sub_ddmmss (n1, n0, n1, n0, d1, d0);
1662 +               }
1663 +             else
1664 +               q0 = 0;
1665 +
1666 +             q1 = 0;
1667 +
1668 +             if (rp != 0)
1669 +               {
1670 +                 rr.s.low = n0;
1671 +                 rr.s.high = n1;
1672 +                 *rp = rr.ll;
1673 +               }
1674 +           }
1675 +         else
1676 +           {
1677 +             USItype m1, m0;
1678 +             /* Normalize.  */
1679 +
1680 +             b = SI_TYPE_SIZE - bm;
1681 +
1682 +             d1 = (d1 << bm) | (d0 >> b);
1683 +             d0 = d0 << bm;
1684 +             n2 = n1 >> b;
1685 +             n1 = (n1 << bm) | (n0 >> b);
1686 +             n0 = n0 << bm;
1687 +
1688 +             udiv_qrnnd (q0, n1, n2, n1, d1);
1689 +             umul_ppmm (m1, m0, q0, d0);
1690 +
1691 +             if (m1 > n1 || (m1 == n1 && m0 > n0))
1692 +               {
1693 +                 q0--;
1694 +                 sub_ddmmss (m1, m0, m1, m0, d1, d0);
1695 +               }
1696 +
1697 +             q1 = 0;
1698 +
1699 +             /* Remainder in (n1n0 - m1m0) >> bm.  */
1700 +             if (rp != 0)
1701 +               {
1702 +                 sub_ddmmss (n1, n0, n1, n0, m1, m0);
1703 +                 rr.s.low = (n1 << b) | (n0 >> bm);
1704 +                 rr.s.high = n1 >> bm;
1705 +                 *rp = rr.ll;
1706 +               }
1707 +           }
1708 +       }
1709 +    }
1710 +
1711 +  ww.s.low = q0;
1712 +  ww.s.high = q1;
1713 +  return ww.ll;
1714 +}
1715 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/udivsi3.S linux-2.6.0-test8-uc0/arch/m68knommu/lib/udivsi3.S
1716 --- linux-2.6.0-test8/arch/m68knommu/lib/udivsi3.S      2003-10-20 09:10:57.864637448 +1000
1717 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/udivsi3.S  2003-10-20 09:11:53.784136392 +1000
1718 @@ -91,7 +91,7 @@
1719         .proc
1720         .globl  SYM (__udivsi3)
1721  SYM (__udivsi3):
1722 -#ifndef __mcf5200__
1723 +#if !(defined(__mcf5200__) || defined(__mcoldfire__))
1724         movel   d2, sp@-
1725         movel   sp@(12), d1     /* d1 = divisor */
1726         movel   sp@(8), d0      /* d0 = dividend */
1727 @@ -136,7 +136,7 @@
1728  L6:    movel   sp@+, d2
1729         rts
1730  
1731 -#else /* __mcf5200__ */
1732 +#else /* __mcf5200__ || __mcoldfire__ */
1733  
1734  /* Coldfire implementation of non-restoring division algorithm from
1735     Hennessy & Patterson, Appendix A. */
1736 @@ -158,5 +158,5 @@
1737         moveml  sp@,d2-d4       | restore data registers
1738         unlk    a6              | and return
1739         rts
1740 -#endif /* __mcf5200__ */
1741 +#endif /* __mcf5200__ || __mcoldfire__ */
1742  
1743 diff -Naur linux-2.6.0-test8/arch/m68knommu/lib/umodsi3.S linux-2.6.0-test8-uc0/arch/m68knommu/lib/umodsi3.S
1744 --- linux-2.6.0-test8/arch/m68knommu/lib/umodsi3.S      2003-10-20 09:10:57.831642464 +1000
1745 +++ linux-2.6.0-test8-uc0/arch/m68knommu/lib/umodsi3.S  2003-10-20 09:11:53.784136392 +1000
1746 @@ -98,7 +98,7 @@
1747         jbsr    SYM (__udivsi3)
1748         addql   IMM (8), sp
1749         movel   sp@(8), d1      /* d1 = divisor */
1750 -#ifndef __mcf5200__
1751 +#if !(defined(__mcf5200__) || defined(__mcoldfire__))
1752         movel   d1, sp@-
1753         movel   d0, sp@-
1754         jbsr    SYM (__mulsi3)  /* d0 = (a/b)*b */
1755 diff -Naur linux-2.6.0-test8/arch/m68knommu/Makefile linux-2.6.0-test8-uc0/arch/m68knommu/Makefile
1756 --- linux-2.6.0-test8/arch/m68knommu/Makefile   2003-10-20 09:10:57.875635776 +1000
1757 +++ linux-2.6.0-test8-uc0/arch/m68knommu/Makefile       2003-10-20 09:11:53.690150680 +1000
1758 @@ -81,7 +81,7 @@
1759  
1760  CFLAGS += $(cflags-y)
1761  CFLAGS += -fno-builtin
1762 -CFLAGS += -O2 -g
1763 +CFLAGS += -Os -g
1764  CFLAGS += -D__linux__
1765  CFLAGS += -DUTS_SYSNAME=\"uClinux\"
1766  
1767 diff -Naur linux-2.6.0-test8/arch/m68knommu/mm/fault.c linux-2.6.0-test8-uc0/arch/m68knommu/mm/fault.c
1768 --- linux-2.6.0-test8/arch/m68knommu/mm/fault.c 2003-10-20 09:10:57.866637144 +1000
1769 +++ linux-2.6.0-test8-uc0/arch/m68knommu/mm/fault.c     2003-10-20 09:11:55.292907024 +1000
1770 @@ -36,7 +36,7 @@
1771                               unsigned long error_code)
1772  {
1773  #ifdef DEBUG
1774 -       printk ("regs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld\n",
1775 +       printk (KERN_DEBUG "regs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld\n",
1776                 regs->sr, regs->pc, address, error_code);
1777  #endif
1778  
1779 @@ -48,7 +48,7 @@
1780                 printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference");
1781         } else
1782                 printk(KERN_ALERT "Unable to handle kernel access");
1783 -       printk(" at virtual address %08lx\n",address);
1784 +       printk(KERN_ALERT " at virtual address %08lx\n",address);
1785         die_if_kernel("Oops", regs, error_code);
1786         do_exit(SIGKILL);
1787  
1788 diff -Naur linux-2.6.0-test8/arch/m68knommu/mm/init.c linux-2.6.0-test8-uc0/arch/m68knommu/mm/init.c
1789 --- linux-2.6.0-test8/arch/m68knommu/mm/init.c  2003-10-20 09:10:57.874635928 +1000
1790 +++ linux-2.6.0-test8-uc0/arch/m68knommu/mm/init.c      2003-10-20 09:11:55.292907024 +1000
1791 @@ -72,7 +72,7 @@
1792      int free = 0, total = 0, reserved = 0, shared = 0;
1793      int cached = 0;
1794  
1795 -    printk("\nMem-info:\n");
1796 +    printk(KERN_INFO "\nMem-info:\n");
1797      show_free_areas();
1798      i = max_mapnr;
1799      while (i-- > 0) {
1800 @@ -86,11 +86,11 @@
1801         else
1802             shared += page_count(mem_map+i) - 1;
1803      }
1804 -    printk("%d pages of RAM\n",total);
1805 -    printk("%d free pages\n",free);
1806 -    printk("%d reserved pages\n",reserved);
1807 -    printk("%d pages shared\n",shared);
1808 -    printk("%d pages swap cached\n",cached);
1809 +    printk(KERN_INFO "%d pages of RAM\n",total);
1810 +    printk(KERN_INFO "%d free pages\n",free);
1811 +    printk(KERN_INFO "%d reserved pages\n",reserved);
1812 +    printk(KERN_INFO "%d pages shared\n",shared);
1813 +    printk(KERN_INFO "%d pages swap cached\n",cached);
1814  }
1815  
1816  extern unsigned long memory_start;
1817 @@ -114,7 +114,7 @@
1818         unsigned long end_mem   = memory_end & PAGE_MASK;
1819  
1820  #ifdef DEBUG
1821 -       printk ("start_mem is %#lx\nvirtual_end is %#lx\n",
1822 +       printk (KERN_DEBUG "start_mem is %#lx\nvirtual_end is %#lx\n",
1823                 start_mem, end_mem);
1824  #endif
1825  
1826 @@ -133,9 +133,9 @@
1827         set_fs (USER_DS);
1828  
1829  #ifdef DEBUG
1830 -       printk ("before free_area_init\n");
1831 +       printk (KERN_DEBUG "before free_area_init\n");
1832  
1833 -       printk ("free_area_init -> start_mem is %#lx\nvirtual_end is %#lx\n",
1834 +       printk (KERN_DEBUG "free_area_init -> start_mem is %#lx\nvirtual_end is %#lx\n",
1835                 start_mem, end_mem);
1836  #endif
1837  
1838 @@ -162,7 +162,7 @@
1839         unsigned long end_mem   = memory_end; /* DAVIDM - this must not include kernel stack at top */
1840  
1841  #ifdef DEBUG
1842 -       printk("Mem_init: start=%lx, end=%lx\n", start_mem, end_mem);
1843 +       printk(KERN_DEBUG "Mem_init: start=%lx, end=%lx\n", start_mem, end_mem);
1844  #endif
1845  
1846         end_mem &= PAGE_MASK;
1847 @@ -179,7 +179,7 @@
1848         initk = (&__init_begin - &__init_end) >> 10;
1849  
1850         tmp = nr_free_pages() << PAGE_SHIFT;
1851 -       printk("Memory available: %luk/%luk RAM, %luk/%luk ROM (%dk kernel code, %dk data)\n",
1852 +       printk(KERN_INFO "Memory available: %luk/%luk RAM, %luk/%luk ROM (%dk kernel code, %dk data)\n",
1853                tmp >> 10,
1854                len >> 10,
1855                (rom_length > 0) ? ((rom_length >> 10) - codek) : 0,
1856 @@ -201,7 +201,7 @@
1857                 totalram_pages++;
1858                 pages++;
1859         }
1860 -       printk ("Freeing initrd memory: %dk freed\n", pages);
1861 +       printk (KERN_NOTICE "Freeing initrd memory: %dk freed\n", pages);
1862  }
1863  #endif
1864  
1865 @@ -223,7 +223,7 @@
1866                 free_page(addr);
1867                 totalram_pages++;
1868         }
1869 -       printk("Freeing unused kernel memory: %ldk freed (0x%x - 0x%x)\n",
1870 +       printk(KERN_NOTICE "Freeing unused kernel memory: %ldk freed (0x%x - 0x%x)\n",
1871                         (addr - PAGE_ALIGN((long) &__init_begin)) >> 10,
1872                         (int)(PAGE_ALIGN((unsigned long)(&__init_begin))),
1873                         (int)(addr - PAGE_SIZE));
1874 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5206/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5206/config.c
1875 --- linux-2.6.0-test8/arch/m68knommu/platform/5206/config.c     2003-10-20 09:10:57.718659640 +1000
1876 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5206/config.c 2003-10-20 09:11:55.607859144 +1000
1877 @@ -42,6 +42,8 @@
1878          MCF_MBAR + MCFDMA_BASE1,
1879  };
1880  
1881 +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS];
1882 +
1883  /***************************************************************************/
1884  
1885  void mcf_autovector(unsigned int vec)
1886 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5206e/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5206e/config.c
1887 --- linux-2.6.0-test8/arch/m68knommu/platform/5206e/config.c    2003-10-20 09:10:57.716659944 +1000
1888 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5206e/config.c        2003-10-20 09:11:55.632855344 +1000
1889 @@ -42,6 +42,8 @@
1890          MCF_MBAR + MCFDMA_BASE1,
1891  };
1892  
1893 +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS];
1894 +
1895  /***************************************************************************/
1896  
1897  void mcf_autovector(unsigned int vec)
1898 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5249/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5249/config.c
1899 --- linux-2.6.0-test8/arch/m68knommu/platform/5249/config.c     2003-10-20 09:10:57.717659792 +1000
1900 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5249/config.c 2003-10-20 09:11:55.616857776 +1000
1901 @@ -43,6 +43,8 @@
1902          MCF_MBAR + MCFDMA_BASE3,
1903  };
1904  
1905 +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS];
1906 +
1907  /***************************************************************************/
1908  
1909  void mcf_autovector(unsigned int vec)
1910 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5272/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5272/config.c
1911 --- linux-2.6.0-test8/arch/m68knommu/platform/5272/config.c     2003-10-20 09:10:57.715660096 +1000
1912 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5272/config.c 2003-10-20 09:11:55.691846376 +1000
1913 @@ -46,6 +46,8 @@
1914          MCF_MBAR + MCFDMA_BASE0,
1915  };
1916  
1917 +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS];
1918 +
1919  /***************************************************************************/
1920  
1921  void mcf_disableall(void)
1922 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5282/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5282/config.c
1923 --- linux-2.6.0-test8/arch/m68knommu/platform/5282/config.c     2003-10-20 09:10:57.664667848 +1000
1924 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5282/config.c 2003-10-20 09:11:55.787831784 +1000
1925 @@ -17,6 +17,7 @@
1926  #include <linux/sched.h>
1927  #include <linux/param.h>
1928  #include <linux/init.h>
1929 +#include <linux/interrupt.h>
1930  #include <asm/dma.h>
1931  #include <asm/traps.h>
1932  #include <asm/machdep.h>
1933 @@ -27,7 +28,7 @@
1934  /***************************************************************************/
1935  
1936  void coldfire_pit_tick(void);
1937 -void coldfire_pit_init(void (*handler)(int, void *, struct pt_regs *));
1938 +void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *));
1939  unsigned long coldfire_pit_offset(void);
1940  void coldfire_trap_init(void);
1941  void coldfire_reset(void);
1942 @@ -41,6 +42,8 @@
1943          MCF_MBAR + MCFDMA_BASE0,
1944  };
1945  
1946 +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS];
1947 +
1948  /***************************************************************************/
1949  
1950  void mcf_disableall(void)
1951 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5307/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/config.c
1952 --- linux-2.6.0-test8/arch/m68knommu/platform/5307/config.c     2003-10-20 09:10:57.694663288 +1000
1953 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/config.c 2003-10-20 09:11:55.814827680 +1000
1954 @@ -14,6 +14,7 @@
1955  #include <linux/sched.h>
1956  #include <linux/param.h>
1957  #include <linux/init.h>
1958 +#include <linux/interrupt.h>
1959  #include <asm/irq.h>
1960  #include <asm/dma.h>
1961  #include <asm/traps.h>
1962 @@ -28,7 +29,7 @@
1963  /***************************************************************************/
1964  
1965  void coldfire_tick(void);
1966 -void coldfire_timer_init(void (*handler)(int, void *, struct pt_regs *));
1967 +void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *));
1968  unsigned long coldfire_timer_offset(void);
1969  void coldfire_trap_init(void);
1970  void coldfire_reset(void);
1971 @@ -49,6 +50,8 @@
1972          MCF_MBAR + MCFDMA_BASE3,
1973  };
1974  
1975 +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS];
1976 +
1977  /***************************************************************************/
1978  
1979  void mcf_autovector(unsigned int vec)
1980 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5307/entry.S linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/entry.S
1981 --- linux-2.6.0-test8/arch/m68knommu/platform/5307/entry.S      2003-10-20 09:10:57.714660248 +1000
1982 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/entry.S  2003-10-20 09:11:55.814827680 +1000
1983 @@ -182,7 +182,7 @@
1984         movew   %sp@(LFORMATVEC),%d0    /* put exception # in d0 */
1985         andl    #0x03fc,%d0             /* mask out vector only */
1986  
1987 -       leal    kstat__per_cpu+STAT_IRQ,%a0
1988 +       leal    per_cpu__kstat+STAT_IRQ,%a0
1989         addql   #1,%a0@(%d0)
1990  
1991         lsrl    #2,%d0                  /* calculate real vector # */
1992 @@ -213,7 +213,7 @@
1993         movew   %sp@(LFORMATVEC),%d0
1994         andl    #0x03fc,%d0             /* mask out vector only */
1995  
1996 -       leal    kstat__per_cpu+STAT_IRQ,%a0
1997 +       leal    per_cpu__kstat+STAT_IRQ,%a0
1998         addql   #1,%a0@(%d0)
1999  
2000         movel   %sp,%sp@-               /* push regs arg onto stack */
2001 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5307/ints.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/ints.c
2002 --- linux-2.6.0-test8/arch/m68knommu/platform/5307/ints.c       2003-10-20 09:10:57.694663288 +1000
2003 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/ints.c   2003-10-20 09:11:55.819826920 +1000
2004 @@ -47,7 +47,7 @@
2005  static irqreturn_t default_irq_handler(int irq, void *ptr, struct pt_regs *regs)
2006  {
2007  #if 1
2008 -       printk("%s(%d): default irq handler vec=%d [0x%x]\n",
2009 +       printk(KERN_INFO "%s(%d): default irq handler vec=%d [0x%x]\n",
2010                 __FILE__, __LINE__, irq, irq);
2011  #endif
2012         return(IRQ_HANDLED);
2013 @@ -94,7 +94,7 @@
2014                 if (!node->handler)
2015                         return node;
2016  
2017 -       printk("new_irq_node: out of nodes\n");
2018 +       printk(KERN_INFO "new_irq_node: out of nodes\n");
2019         return NULL;
2020  }
2021  
2022 @@ -106,19 +106,19 @@
2023         void *dev_id)
2024  {
2025         if (irq < 0 || irq >= NR_IRQS) {
2026 -               printk("%s: Incorrect IRQ %d from %s\n", __FUNCTION__,
2027 +               printk(KERN_WARNING "%s: Incorrect IRQ %d from %s\n", __FUNCTION__,
2028                         irq, devname);
2029                 return -ENXIO;
2030         }
2031  
2032         if (!(irq_list[irq].flags & IRQ_FLG_STD)) {
2033                 if (irq_list[irq].flags & IRQ_FLG_LOCK) {
2034 -                       printk("%s: IRQ %d from %s is not replaceable\n",
2035 +                       printk(KERN_WARNING "%s: IRQ %d from %s is not replaceable\n",
2036                                __FUNCTION__, irq, irq_list[irq].devname);
2037                         return -EBUSY;
2038                 }
2039                 if (flags & IRQ_FLG_REPLACE) {
2040 -                       printk("%s: %s can't replace IRQ %d from %s\n",
2041 +                       printk(KERN_WARNING "%s: %s can't replace IRQ %d from %s\n",
2042                                __FUNCTION__, devname, irq, irq_list[irq].devname);
2043                         return -EBUSY;
2044                 }
2045 @@ -142,12 +142,12 @@
2046  void free_irq(unsigned int irq, void *dev_id)
2047  {
2048         if (irq >= NR_IRQS) {
2049 -               printk("%s: Incorrect IRQ %d\n", __FUNCTION__, irq);
2050 +               printk(KERN_WARNING "%s: Incorrect IRQ %d\n", __FUNCTION__, irq);
2051                 return;
2052         }
2053  
2054         if (irq_list[irq].dev_id != dev_id)
2055 -               printk("%s: Removing probably wrong IRQ %d from %s\n",
2056 +               printk(KERN_WARNING "%s: Removing probably wrong IRQ %d from %s\n",
2057                        __FUNCTION__, irq, irq_list[irq].devname);
2058  
2059         if (irq_list[irq].flags & IRQ_FLG_FAST) {
2060 @@ -173,7 +173,7 @@
2061                      unsigned long flags, const char *devname, void *dev_id)
2062  {
2063         if (irq > IRQ7) {
2064 -               printk("%s: Incorrect IRQ %d from %s\n",
2065 +               printk(KERN_WARNING "%s: Incorrect IRQ %d from %s\n",
2066                        __FUNCTION__, irq, devname);
2067                 return -ENXIO;
2068         }
2069 @@ -181,12 +181,12 @@
2070  #if 0
2071         if (!(irq_list[irq].flags & IRQ_FLG_STD)) {
2072                 if (irq_list[irq].flags & IRQ_FLG_LOCK) {
2073 -                       printk("%s: IRQ %d from %s is not replaceable\n",
2074 +                       printk(KERN_WARNING "%s: IRQ %d from %s is not replaceable\n",
2075                                __FUNCTION__, irq, irq_list[irq].devname);
2076                         return -EBUSY;
2077                 }
2078                 if (!(flags & IRQ_FLG_REPLACE)) {
2079 -                       printk("%s: %s can't replace IRQ %d from %s\n",
2080 +                       printk(KERN_WARNING "%s: %s can't replace IRQ %d from %s\n",
2081                                __FUNCTION__, devname, irq, irq_list[irq].devname);
2082                         return -EBUSY;
2083                 }
2084 @@ -203,12 +203,12 @@
2085  void sys_free_irq(unsigned int irq, void *dev_id)
2086  {
2087         if (irq > IRQ7) {
2088 -               printk("%s: Incorrect IRQ %d\n", __FUNCTION__, irq);
2089 +               printk(KERN_WARNING "%s: Incorrect IRQ %d\n", __FUNCTION__, irq);
2090                 return;
2091         }
2092  
2093         if (irq_list[irq].dev_id != dev_id)
2094 -               printk("%s: Removing probably wrong IRQ %d from %s\n",
2095 +               printk(KERN_WARNING "%s: Removing probably wrong IRQ %d from %s\n",
2096                        __FUNCTION__, irq, irq_list[irq].devname);
2097  
2098         irq_list[irq].handler = (*mach_default_handler)[irq];
2099 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5307/timers.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/timers.c
2100 --- linux-2.6.0-test8/arch/m68knommu/platform/5307/timers.c     2003-10-20 09:10:57.714660248 +1000
2101 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/timers.c 2003-10-20 09:11:55.839823880 +1000
2102 @@ -127,7 +127,7 @@
2103  
2104  void coldfire_profile_init(void)
2105  {
2106 -       printk("PROFILE: lodging TIMER2 @ %dHz as profile timer\n", PROFILEHZ);
2107 +       printk(KERN_INFO "PROFILE: lodging TIMER2 @ %dHz as profile timer\n", PROFILEHZ);
2108  
2109         /* Set up TIMER 2 as high speed profile clock */
2110         mcf_proftp = (volatile struct mcftimer *) (MCF_MBAR + MCFTIMER_BASE2);
2111 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5307/vectors.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/vectors.c
2112 --- linux-2.6.0-test8/arch/m68knommu/platform/5307/vectors.c    2003-10-20 09:10:57.713660400 +1000
2113 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5307/vectors.c        2003-10-20 09:11:55.840823728 +1000
2114 @@ -32,7 +32,7 @@
2115  asmlinkage void dbginterrupt_c(struct frame *fp)
2116  {
2117         extern void dump(struct pt_regs *fp);
2118 -       printk("%s(%d): BUS ERROR TRAP\n", __FILE__, __LINE__);
2119 +       printk(KERN_DEBUG "%s(%d): BUS ERROR TRAP\n", __FILE__, __LINE__);
2120         dump((struct pt_regs *) fp);
2121         asm("halt");
2122  }
2123 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5407/CLEOPATRA/crt0_ram.S linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/CLEOPATRA/crt0_ram.S
2124 --- linux-2.6.0-test8/arch/m68knommu/platform/5407/CLEOPATRA/crt0_ram.S 2003-10-20 09:10:57.661668304 +1000
2125 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/CLEOPATRA/crt0_ram.S     2003-10-20 09:11:56.081787096 +1000
2126 @@ -124,6 +124,7 @@
2127         nop
2128  
2129  
2130 +#ifdef CONFIG_ROMFS_FS
2131         /*
2132          *      Move ROM filesystem above bss :-)
2133          */
2134 @@ -145,6 +146,12 @@
2135         cmp.l   %a0, %a2                        /* Check if at end */
2136         bne     _copy_romfs
2137  
2138 +#else /* CONFIG_ROMFS_FS */
2139 +       lea.l   _ebss, %a1
2140 +       move.l  %a1, _ramstart
2141 +#endif /* CONFIG_ROMFS_FS */
2142 +
2143 +
2144         /*
2145          *      Zero out the bss region.
2146          */
2147 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5407/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/config.c
2148 --- linux-2.6.0-test8/arch/m68knommu/platform/5407/config.c     2003-10-20 09:10:57.623674080 +1000
2149 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/config.c 2003-10-20 09:11:56.107783144 +1000
2150 @@ -14,6 +14,7 @@
2151  #include <linux/sched.h>
2152  #include <linux/param.h>
2153  #include <linux/init.h>
2154 +#include <linux/interrupt.h>
2155  #include <asm/irq.h>
2156  #include <asm/dma.h>
2157  #include <asm/traps.h>
2158 @@ -27,7 +28,7 @@
2159  /***************************************************************************/
2160  
2161  void coldfire_tick(void);
2162 -void coldfire_timer_init(void (*handler)(int, void *, struct pt_regs *));
2163 +void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *));
2164  unsigned long coldfire_timer_offset(void);
2165  void coldfire_trap_init(void);
2166  void coldfire_reset(void);
2167 @@ -48,6 +49,8 @@
2168          MCF_MBAR + MCFDMA_BASE3,
2169  };
2170  
2171 +unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS];
2172 +
2173  /***************************************************************************/
2174  
2175  void mcf_autovector(unsigned int vec)
2176 @@ -100,7 +103,13 @@
2177  void config_BSP(char *commandp, int size)
2178  {
2179         mcf_setimr(MCFSIM_IMR_MASKALL);
2180 +
2181 +#if defined(CONFIG_BOOTPARAM)
2182 +       strncpy(commandp, CONFIG_BOOTPARAM_STRING, size);
2183 +       commandp[size-1] = 0;
2184 +#else
2185         memset(commandp, 0, size);
2186 +#endif
2187  
2188  #if defined(CONFIG_CLEOPATRA)
2189         /* Different timer setup - to prevent device clash */
2190 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/5407/MOTOROLA/crt0_ram.S linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/MOTOROLA/crt0_ram.S
2191 --- linux-2.6.0-test8/arch/m68knommu/platform/5407/MOTOROLA/crt0_ram.S  2003-10-20 09:10:57.652669672 +1000
2192 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/5407/MOTOROLA/crt0_ram.S      2003-10-20 09:11:56.107783144 +1000
2193 @@ -99,10 +99,12 @@
2194         movec   %d0, %ACR3
2195  
2196         /* Enable cache */
2197 -       move.l  #0xa4098400, %d0                /* Write buffer, dflt precise */
2198 +       move.l  #0xb6088400, %d0                /* Enable caches */
2199         movec   %d0,%CACR
2200         nop
2201  
2202 +
2203 +#ifdef CONFIG_ROMFS_FS
2204         /*
2205          *      Move ROM filesystem above bss :-)
2206          */
2207 @@ -124,6 +126,12 @@
2208         cmp.l   %a0, %a2                        /* Check if at end */
2209         bne     _copy_romfs
2210  
2211 +#else /* CONFIG_ROMFS_FS */
2212 +       lea.l   _ebss, %a1
2213 +       move.l  %a1, _ramstart
2214 +#endif /* CONFIG_ROMFS_FS */
2215 +
2216 +
2217         /*
2218          *      Zero out the bss region.
2219          */
2220 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68328/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68328/config.c
2221 --- linux-2.6.0-test8/arch/m68knommu/platform/68328/config.c    2003-10-20 09:10:57.693663440 +1000
2222 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68328/config.c        2003-10-20 09:11:56.164774480 +1000
2223 @@ -19,6 +19,7 @@
2224  #include <linux/mm.h>
2225  #include <linux/tty.h>
2226  #include <linux/console.h>
2227 +#include <linux/interrupt.h>
2228  #include <asm/current.h>
2229  
2230  #include <asm/setup.h>
2231 @@ -29,7 +30,7 @@
2232  #include <asm/MC68328.h>
2233  
2234  
2235 -void BSP_sched_init(void (*timer_routine)(int, void *, struct pt_regs *))
2236 +void BSP_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *))
2237  {
2238  
2239  #ifdef CONFIG_XCOPILOT_BUGS
2240 @@ -111,9 +112,9 @@
2241  
2242  void config_BSP(char *command, int len)
2243  {
2244 -  printk("\n68328 support D. Jeff Dionne <jeff@uclinux.org>\n");
2245 -  printk("68328 support Kenneth Albanowski <kjahds@kjshds.com>\n");
2246 -  printk("68328/Pilot support Bernhard Kuhn <kuhn@lpr.e-technik.tu-muenchen.de>\n");
2247 +  printk(KERN_INFO "\n68328 support D. Jeff Dionne <jeff@uclinux.org>\n");
2248 +  printk(KERN_INFO "68328 support Kenneth Albanowski <kjahds@kjshds.com>\n");
2249 +  printk(KERN_INFO "68328/Pilot support Bernhard Kuhn <kuhn@lpr.e-technik.tu-muenchen.de>\n");
2250  
2251    mach_sched_init      = BSP_sched_init;
2252    mach_tick            = BSP_tick;
2253 @@ -122,4 +123,5 @@
2254    mach_hwclk           = NULL;
2255    mach_set_clock_mmss  = NULL;
2256    mach_reset           = BSP_reset;
2257 +  *command = '\0';
2258  }
2259 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68328/ints.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68328/ints.c
2260 --- linux-2.6.0-test8/arch/m68knommu/platform/68328/ints.c      2003-10-20 09:10:57.690663896 +1000
2261 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68328/ints.c  2003-10-20 09:11:56.184771440 +1000
2262 @@ -63,15 +63,15 @@
2263  asmlinkage void trap45(void);
2264  asmlinkage void trap46(void);
2265  asmlinkage void trap47(void);
2266 -asmlinkage void bad_interrupt(int, void *, struct pt_regs *);
2267 -asmlinkage void inthandler(void);
2268 -asmlinkage void inthandler1(void);
2269 -asmlinkage void inthandler2(void);
2270 -asmlinkage void inthandler3(void);
2271 -asmlinkage void inthandler4(void);
2272 -asmlinkage void inthandler5(void);
2273 -asmlinkage void inthandler6(void);
2274 -asmlinkage void inthandler7(void);
2275 +asmlinkage irqreturn_t bad_interrupt(int, void *, struct pt_regs *);
2276 +asmlinkage irqreturn_t inthandler(void);
2277 +asmlinkage irqreturn_t inthandler1(void);
2278 +asmlinkage irqreturn_t inthandler2(void);
2279 +asmlinkage irqreturn_t inthandler3(void);
2280 +asmlinkage irqreturn_t inthandler4(void);
2281 +asmlinkage irqreturn_t inthandler5(void);
2282 +asmlinkage irqreturn_t inthandler6(void);
2283 +asmlinkage irqreturn_t inthandler7(void);
2284  
2285  extern e_vector *_ramvec;
2286  
2287 @@ -116,17 +116,17 @@
2288  
2289         /* set up the vectors */
2290         for (i = 72; i < 256; ++i)
2291 -               _ramvec[i] = (e_vector)bad_interrupt;
2292 +               _ramvec[i] = (e_vector) bad_interrupt;
2293  
2294         _ramvec[32] = system_call;
2295  
2296 -       _ramvec[65] = inthandler1;
2297 -       _ramvec[66] = inthandler2;
2298 -       _ramvec[67] = inthandler3;
2299 -       _ramvec[68] = inthandler4;
2300 -       _ramvec[69] = inthandler5;
2301 -       _ramvec[70] = inthandler6;
2302 -       _ramvec[71] = inthandler7;
2303 +       _ramvec[65] = (e_vector) inthandler1;
2304 +       _ramvec[66] = (e_vector) inthandler2;
2305 +       _ramvec[67] = (e_vector) inthandler3;
2306 +       _ramvec[68] = (e_vector) inthandler4;
2307 +       _ramvec[69] = (e_vector) inthandler5;
2308 +       _ramvec[70] = (e_vector) inthandler6;
2309 +       _ramvec[71] = (e_vector) inthandler7;
2310   
2311         IVR = 0x40; /* Set DragonBall IVR (interrupt base) to 64 */
2312  
2313 @@ -142,22 +142,26 @@
2314         IMR = ~0;
2315  }
2316  
2317 -int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *),
2318 -                         unsigned long flags, const char *devname, void *dev_id)
2319 +int request_irq(
2320 +       unsigned int irq,
2321 +       irqreturn_t (*handler)(int, void *, struct pt_regs *),
2322 +       unsigned long flags,
2323 +       const char *devname,
2324 +       void *dev_id)
2325  {
2326         if (irq >= NR_IRQS) {
2327 -               printk ("%s: Unknown IRQ %d from %s\n", __FUNCTION__, irq, devname);
2328 +               printk (KERN_ERR "%s: Unknown IRQ %d from %s\n", __FUNCTION__, irq, devname);
2329                 return -ENXIO;
2330         }
2331  
2332         if (!(int_irq_list[irq].flags & IRQ_FLG_STD)) {
2333                 if (int_irq_list[irq].flags & IRQ_FLG_LOCK) {
2334 -                       printk("%s: IRQ %d from %s is not replaceable\n",
2335 +                       printk(KERN_ERR "%s: IRQ %d from %s is not replaceable\n",
2336                                __FUNCTION__, irq, int_irq_list[irq].devname);
2337                         return -EBUSY;
2338                 }
2339                 if (flags & IRQ_FLG_REPLACE) {
2340 -                       printk("%s: %s can't replace IRQ %d from %s\n",
2341 +                       printk(KERN_ERR "%s: %s can't replace IRQ %d from %s\n",
2342                                __FUNCTION__, devname, irq, int_irq_list[irq].devname);
2343                         return -EBUSY;
2344                 }
2345 @@ -178,12 +182,12 @@
2346  void free_irq(unsigned int irq, void *dev_id)
2347  {
2348         if (irq >= NR_IRQS) {
2349 -               printk ("%s: Unknown IRQ %d\n", __FUNCTION__, irq);
2350 +               printk (KERN_ERR "%s: Unknown IRQ %d\n", __FUNCTION__, irq);
2351                 return;
2352         }
2353  
2354         if (int_irq_list[irq].dev_id != dev_id)
2355 -               printk("%s: removing probably wrong IRQ %d from %s\n",
2356 +               printk(KERN_INFO "%s: removing probably wrong IRQ %d from %s\n",
2357                        __FUNCTION__, irq, int_irq_list[irq].devname);
2358  
2359         int_irq_list[irq].handler = bad_interrupt;
2360 @@ -278,7 +282,7 @@
2361                 if (int_irq_list[irq].handler) {
2362                         int_irq_list[irq].handler(irq, int_irq_list[irq].dev_id, fp);
2363                 } else {
2364 -                       printk("unregistered interrupt %d!\nTurning it off in the IMR...\n", irq);
2365 +                       printk(KERN_ERR "unregistered interrupt %d!\nTurning it off in the IMR...\n", irq);
2366                         IMR |= mask;
2367                 }
2368                 pend &= ~mask;
2369 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68360/commproc.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/commproc.c
2370 --- linux-2.6.0-test8/arch/m68knommu/platform/68360/commproc.c  2003-10-20 09:10:57.562683352 +1000
2371 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/commproc.c      2003-10-20 09:11:56.192770224 +1000
2372 @@ -213,7 +213,7 @@
2373         request_irq(vec, handler, IRQ_FLG_LOCK, "timer", dev_id);
2374  
2375  /*     if (cpm_vecs[vec].handler != 0) */
2376 -/*             printk("CPM interrupt %x replacing %x\n", */
2377 +/*             printk(KERN_INFO "CPM interrupt %x replacing %x\n", */
2378  /*                     (uint)handler, (uint)cpm_vecs[vec].handler); */
2379  /*     cpm_vecs[vec].handler = handler; */
2380  /*     cpm_vecs[vec].dev_id = dev_id; */
2381 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68360/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/config.c
2382 --- linux-2.6.0-test8/arch/m68knommu/platform/68360/config.c    2003-10-20 09:10:57.562683352 +1000
2383 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/config.c        2003-10-20 09:11:56.199769160 +1000
2384 @@ -181,12 +181,12 @@
2385       }
2386    }
2387  
2388 -  printk("\n68360 QUICC support (C) 2000 Lineo Inc.\n");
2389 +  printk(KERN_INFO "\n68360 QUICC support (C) 2000 Lineo Inc.\n");
2390  
2391  #if defined(CONFIG_UCQUICC) && 0
2392 -  printk("uCquicc serial string [%s]\n",getserialnum());
2393 +  printk(KERN_INFO "uCquicc serial string [%s]\n",getserialnum());
2394    p = scc1_hwaddr = gethwaddr(0);
2395 -  printk("uCquicc hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
2396 +  printk(KERN_INFO "uCquicc hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
2397           p[0], p[1], p[2], p[3], p[4], p[5]);
2398  
2399    p = getbenv("APPEND");
2400 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68360/ints.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/ints.c
2401 --- linux-2.6.0-test8/arch/m68knommu/platform/68360/ints.c      2003-10-20 09:10:57.561683504 +1000
2402 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68360/ints.c  2003-10-20 09:11:56.200769008 +1000
2403 @@ -36,8 +36,8 @@
2404  asmlinkage void system_call(void);
2405  asmlinkage void buserr(void);
2406  asmlinkage void trap(void);
2407 -asmlinkage void bad_interrupt(void);
2408 -asmlinkage void inthandler(void);
2409 +asmlinkage irqreturn_t bad_interrupt(void);
2410 +asmlinkage irqreturn_t inthandler(void);
2411  
2412  extern void *_ramvec[];
2413  
2414 @@ -141,7 +141,7 @@
2415         irq_node_t *cur;
2416  
2417         if (!node->dev_id)
2418 -               printk("%s: Warning: dev_id of %s is zero\n",
2419 +               printk(KERN_INFO "%s: Warning: dev_id of %s is zero\n",
2420                        __FUNCTION__, node->devname);
2421  
2422         local_irq_save(flags);
2423 @@ -176,30 +176,34 @@
2424                 }
2425         }
2426         local_irq_restore(flags);
2427 -       printk ("%s: tried to remove invalid irq\n", __FUNCTION__);
2428 +       printk (KERN_INFO "%s: tried to remove invalid irq\n", __FUNCTION__);
2429  }
2430  #endif
2431  
2432 -int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *),
2433 -                unsigned long flags, const char *devname, void *dev_id)
2434 +int request_irq(
2435 +       unsigned int irq,
2436 +       irqreturn_t (*handler)(int, void *, struct pt_regs *),
2437 +       unsigned long flags,
2438 +       const char *devname,
2439 +       void *dev_id)
2440  {
2441         int mask = (1<<irq);
2442  
2443         irq += (CPM_VECTOR_BASE<<4);
2444  
2445         if (irq >= INTERNAL_IRQS) {
2446 -               printk ("%s: Unknown IRQ %d from %s\n", __FUNCTION__, irq, devname);
2447 +               printk (KERN_ERR "%s: Unknown IRQ %d from %s\n", __FUNCTION__, irq, devname);
2448                 return -ENXIO;
2449         }
2450  
2451         if (!(int_irq_list[irq].flags & IRQ_FLG_STD)) {
2452                 if (int_irq_list[irq].flags & IRQ_FLG_LOCK) {
2453 -                       printk("%s: IRQ %d from %s is not replaceable\n",
2454 +                       printk(KERN_ERR "%s: IRQ %d from %s is not replaceable\n",
2455                                __FUNCTION__, irq, int_irq_list[irq].devname);
2456                         return -EBUSY;
2457                 }
2458                 if (flags & IRQ_FLG_REPLACE) {
2459 -                       printk("%s: %s can't replace IRQ %d from %s\n",
2460 +                       printk(KERN_ERR "%s: %s can't replace IRQ %d from %s\n",
2461                                __FUNCTION__, devname, irq, int_irq_list[irq].devname);
2462                         return -EBUSY;
2463                 }
2464 @@ -222,12 +226,12 @@
2465  void free_irq(unsigned int irq, void *dev_id)
2466  {
2467         if (irq >= INTERNAL_IRQS) {
2468 -               printk ("%s: Unknown IRQ %d\n", __FUNCTION__, irq);
2469 +               printk (KERN_ERR "%s: Unknown IRQ %d\n", __FUNCTION__, irq);
2470                 return;
2471         }
2472  
2473         if (int_irq_list[irq].dev_id != dev_id)
2474 -               printk("%s: removing probably wrong IRQ %d from %s\n",
2475 +               printk(KERN_INFO "%s: removing probably wrong IRQ %d from %s\n",
2476                        __FUNCTION__, irq, int_irq_list[irq].devname);
2477         int_irq_list[irq].handler = NULL;
2478         int_irq_list[irq].flags   = IRQ_FLG_STD;
2479 @@ -250,7 +254,7 @@
2480  void M68360_enable_irq(unsigned int irq)
2481  {
2482         if (irq >= INTERNAL_IRQS) {
2483 -               printk("%s: Unknown IRQ %d\n", __FUNCTION__, irq);
2484 +               printk(KERN_ERR "%s: Unknown IRQ %d\n", __FUNCTION__, irq);
2485                 return;
2486         }
2487  
2488 @@ -264,7 +268,7 @@
2489  void M68360_disable_irq(unsigned int irq)
2490  {
2491         if (irq >= INTERNAL_IRQS) {
2492 -               printk("%s: Unknown IRQ %d\n", __FUNCTION__, irq);
2493 +               printk(KERN_ERR "%s: Unknown IRQ %d\n", __FUNCTION__, irq);
2494                 return;
2495         }
2496  
2497 @@ -322,9 +326,10 @@
2498                 kstat_cpu(0).irqs[irq]++;
2499                 pquicc->intr_cisr = (1 << vec); /* indicate that irq has been serviced */
2500         } else {
2501 -               printk("unregistered interrupt %d!\nTurning it off in the CIMR...\n", irq);
2502 +               printk(KERN_ERR "unregistered interrupt %d!\nTurning it off in the CIMR...\n", irq);
2503                 /* *(volatile unsigned long *)0xfffff304 |= mask; */
2504                 pquicc->intr_cimr &= ~(1 << vec);
2505                 num_spurious += 1;
2506         }
2507 +       return(IRQ_HANDLED);
2508  }
2509 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68EZ328/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68EZ328/config.c
2510 --- linux-2.6.0-test8/arch/m68knommu/platform/68EZ328/config.c  2003-10-20 09:10:57.676666024 +1000
2511 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68EZ328/config.c      2003-10-20 09:11:56.234763840 +1000
2512 @@ -106,12 +106,12 @@
2513  {
2514    unsigned char *p;
2515  
2516 -  printk("\n68EZ328 DragonBallEZ support (C) 1999 Rt-Control, Inc\n");
2517 +  printk(KERN_INFO "\n68EZ328 DragonBallEZ support (C) 1999 Rt-Control, Inc\n");
2518  
2519  #ifdef CONFIG_UCSIMM
2520 -  printk("uCsimm serial string [%s]\n",getserialnum());
2521 +  printk(KERN_INFO "uCsimm serial string [%s]\n",getserialnum());
2522    p = cs8900a_hwaddr = gethwaddr(0);
2523 -  printk("uCsimm hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
2524 +  printk(KERN_INFO "uCsimm hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
2525           p[0], p[1], p[2], p[3], p[4], p[5]);
2526  
2527    p = getbenv("APPEND");
2528 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/config.c
2529 --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/config.c      2003-10-20 09:10:57.663668000 +1000
2530 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/config.c  2003-10-20 09:11:56.248761712 +1000
2531 @@ -185,7 +185,7 @@
2532  
2533  void config_BSP(char *command, int size)
2534  {
2535 -       printk("68VZ328 DragonBallVZ support (c) 2001 Lineo, Inc.\n");
2536 +       printk(KERN_INFO "68VZ328 DragonBallVZ support (c) 2001 Lineo, Inc.\n");
2537  
2538  #if defined(CONFIG_BOOTPARAM)
2539         strncpy(command, CONFIG_BOOTPARAM_STRING, size);
2540 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/crt0_ram.S linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/crt0_ram.S
2541 --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/crt0_ram.S    2003-10-20 09:10:57.663668000 +1000
2542 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/crt0_ram.S        2003-10-20 09:11:56.248761712 +1000
2543 @@ -8,17 +8,21 @@
2544  #define        MEM_END 0x00800000      /* Memory size 8Mb */
2545  #endif
2546  
2547 +#undef CRT_DEBUG
2548 +
2549 +.macro PUTC CHAR
2550 +#ifdef CRT_DEBUG
2551 +       moveq   #\CHAR, %d7
2552 +       jsr     putc
2553 +#endif
2554 +.endm
2555 +
2556         .global _start
2557         .global _rambase
2558         .global _ramvec
2559         .global _ramstart
2560         .global _ramend
2561         
2562 -.macro PUTC CHAR
2563 -       moveq   #\CHAR, %d7
2564 -       jsr     putc
2565 -.endm
2566 -
2567         .data
2568  
2569  /*
2570 @@ -120,6 +124,7 @@
2571   * Local functions
2572   */
2573   
2574 +#ifdef CRT_DEBUG
2575  putc:
2576         moveb   %d7, 0xfffff907
2577  1:
2578 @@ -127,3 +132,4 @@
2579         andw    #0x2000, %d7
2580         beq     1b
2581         rts
2582 +#endif
2583 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/Makefile linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/Makefile
2584 --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/Makefile      2003-10-20 09:10:57.664667848 +1000
2585 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/Makefile  2003-10-20 09:11:56.248761712 +1000
2586 @@ -2,11 +2,13 @@
2587  # Makefile for arch/m68knommu/platform/68VZ328/de2.
2588  #
2589  
2590 -obj-y := config.o
2591 +obj-$(CONFIG_DRAGEN2) := config.o
2592  
2593 -EXTRA_TARGETS := bootlogo.rh crt0_$(MODEL).o
2594 +extra-$(CONFIG_DRAGEN2) := crt0_ram.o
2595  
2596 -$(obj)/bootlogo.rh: $(src)/../../68EZ328/bootlogo.h
2597 -       perl $(src)/../../68328/bootlogo.pl < $(src)/../../68EZ328/bootlogo.h \
2598 -               > $(obj)/bootlogo.rh
2599 +$(obj)/config.o: $(obj)/screen.h
2600  
2601 +$(obj)/screen.h: $(src)/screen.xbm $(src)/xbm2lcd.pl
2602 +       perl $(src)/xbm2lcd.pl < $(src)/screen.xbm > $(obj)/screen.h
2603 +
2604 +clean-files := screen.h
2605 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/screen.xbm linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/screen.xbm
2606 --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/screen.xbm    1970-01-01 10:00:00.000000000 +1000
2607 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/screen.xbm        2003-10-20 09:11:56.250761408 +1000
2608 @@ -0,0 +1,804 @@
2609 +/* Created with The GIMP */
2610 +#define screen_width 320
2611 +#define screen_height 240
2612 +static unsigned char screen_bits[] = {
2613 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2614 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2615 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2616 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2617 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2618 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2619 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2620 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2621 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2622 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2623 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2624 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2625 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2626 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2627 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2628 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2629 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2630 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2631 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2632 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2633 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2634 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2635 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2636 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2637 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2638 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2639 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2640 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2641 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2642 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2643 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2644 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2645 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2646 +   0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2647 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2648 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2649 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff,
2650 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2651 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2652 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f,
2653 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2654 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2655 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2656 +   0xff, 0xff, 0xff, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2657 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2658 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2659 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x34, 0xff, 0xff, 0xff, 0xff,
2660 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2661 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2662 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x95,
2663 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2664 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2665 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2666 +   0xff, 0xff, 0x4f, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2667 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2668 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2669 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6b, 0xa5, 0xff, 0xff, 0xff, 0xff,
2670 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2671 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2672 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x29, 0x55,
2673 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
2674 +   0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
2675 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2676 +   0xff, 0x3f, 0x56, 0xa9, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xf1, 0xf8, 0xff,
2677 +   0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3,
2678 +   0x7f, 0xe0, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2679 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x25, 0x55, 0xff, 0xff, 0xff, 0x0f,
2680 +   0xc0, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff,
2681 +   0xff, 0xff, 0xff, 0xe3, 0x3f, 0xc0, 0xff, 0x01, 0xfe, 0xff, 0xff, 0xff,
2682 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0x52, 0x95,
2683 +   0xff, 0xff, 0xff, 0x87, 0xcf, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2684 +   0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x3f, 0x8f, 0xff, 0x79,
2685 +   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2686 +   0xff, 0x14, 0x55, 0x55, 0xff, 0x3f, 0x8e, 0xc7, 0xff, 0xf1, 0x78, 0x86,
2687 +   0x8f, 0xe3, 0x78, 0xfe, 0xf1, 0xfc, 0xf0, 0x31, 0x33, 0xfc, 0xe1, 0xe3,
2688 +   0xff, 0x8f, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2689 +   0xff, 0xff, 0xff, 0xff, 0xbf, 0x6a, 0xaa, 0x4a, 0xff, 0x3f, 0x8e, 0xe3,
2690 +   0xff, 0xf1, 0x78, 0x00, 0x8f, 0xe3, 0x38, 0xfe, 0x71, 0x3c, 0xe0, 0x11,
2691 +   0x03, 0x78, 0xc0, 0xe3, 0xff, 0x8f, 0xff, 0x08, 0xff, 0xff, 0xff, 0xff,
2692 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x2b, 0x55, 0xa9,
2693 +   0xff, 0x3f, 0x8e, 0xe3, 0xff, 0xf1, 0x78, 0x18, 0x8f, 0xe3, 0x31, 0xff,
2694 +   0x31, 0x3e, 0xc6, 0x01, 0xc3, 0x78, 0x8c, 0xe3, 0xff, 0xc7, 0xff, 0x00,
2695 +   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2696 +   0x57, 0x95, 0x2a, 0x55, 0xff, 0x3f, 0x8e, 0xe3, 0xff, 0xf1, 0x78, 0x1c,
2697 +   0x8f, 0xe3, 0x91, 0xff, 0x11, 0x1f, 0xc7, 0xe1, 0xe3, 0x38, 0x8e, 0xe3,
2698 +   0xff, 0xe1, 0xff, 0x30, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2699 +   0xff, 0xff, 0xff, 0xff, 0x69, 0x55, 0xa5, 0x12, 0xff, 0x3f, 0x8e, 0xe3,
2700 +   0xff, 0xf1, 0x78, 0x1c, 0x8f, 0xe3, 0xc3, 0xff, 0x81, 0x1f, 0xc0, 0xf1,
2701 +   0xe3, 0x38, 0x80, 0xe3, 0xff, 0xf0, 0xff, 0x78, 0xfc, 0xff, 0xff, 0xff,
2702 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x5a, 0xa6, 0x2a, 0x49,
2703 +   0xff, 0x3f, 0x8e, 0xc3, 0xff, 0xf1, 0x78, 0x1c, 0x8f, 0xe3, 0x83, 0xff,
2704 +   0x01, 0x1f, 0xc0, 0xf1, 0xe3, 0x38, 0x80, 0xe3, 0x7f, 0xfc, 0xff, 0x78,
2705 +   0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f,
2706 +   0x4d, 0x51, 0x92, 0x54, 0xff, 0x3f, 0x8e, 0xc7, 0xff, 0xf1, 0x78, 0x1c,
2707 +   0x8f, 0xe3, 0x11, 0xff, 0x11, 0x1e, 0xff, 0xf1, 0xe3, 0x38, 0xfe, 0xe3,
2708 +   0x3f, 0xfe, 0xff, 0x78, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2709 +   0xff, 0xff, 0xff, 0xd7, 0xaa, 0xac, 0x54, 0x25, 0xff, 0x3f, 0x86, 0x07,
2710 +   0xcf, 0xf1, 0x78, 0x1c, 0x8f, 0xe1, 0x19, 0xff, 0x31, 0x1c, 0xce, 0xf1,
2711 +   0xe3, 0x38, 0x9c, 0xe3, 0x3f, 0x80, 0xe3, 0x71, 0xfc, 0xff, 0xff, 0xff,
2712 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0x52, 0x22, 0x25, 0xa9,
2713 +   0xff, 0x3f, 0x80, 0x0f, 0xc0, 0xf1, 0x78, 0x1c, 0x0f, 0xe0, 0x38, 0xfe,
2714 +   0x71, 0x38, 0xc0, 0xf1, 0xe3, 0x78, 0x80, 0xe3, 0x3f, 0x80, 0xe3, 0x01,
2715 +   0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a,
2716 +   0x29, 0x95, 0x94, 0x4a, 0xff, 0x7f, 0x98, 0x3f, 0xf0, 0xf1, 0x78, 0x1c,
2717 +   0x1f, 0xe6, 0x3c, 0xfe, 0xf1, 0xf8, 0xe0, 0xf1, 0xe3, 0xf8, 0xc1, 0xe3,
2718 +   0x3f, 0x80, 0xe3, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2719 +   0xff, 0xff, 0x3f, 0x55, 0x55, 0xa9, 0xa2, 0x28, 0xff, 0xff, 0xff, 0xff,
2720 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2721 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2722 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0x95, 0x54, 0x54, 0x54, 0xca,
2723 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2724 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2725 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xa5,
2726 +   0x12, 0x43, 0x15, 0x25, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2727 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2728 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2729 +   0xff, 0xff, 0x51, 0x49, 0xaa, 0x34, 0xca, 0xaa, 0xff, 0xff, 0xff, 0xff,
2730 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2731 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2732 +   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x2e, 0xa9, 0x92, 0x84, 0x29, 0x92,
2733 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2734 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2735 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xa2, 0x4a,
2736 +   0x28, 0xb3, 0xa4, 0x4a, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff,
2737 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf,
2738 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2739 +   0xff, 0x87, 0xaa, 0x52, 0x4a, 0x89, 0x96, 0xaa, 0xff, 0xff, 0xff, 0xff,
2740 +   0x7f, 0x9e, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2741 +   0xc0, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0x3c, 0xff, 0xff, 0xff, 0xff,
2742 +   0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0x29, 0x09, 0xa5, 0x52, 0x51, 0x69,
2743 +   0xff, 0xff, 0xff, 0xff, 0x7f, 0x9e, 0xff, 0xff, 0x9f, 0xe7, 0xff, 0xff,
2744 +   0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3c,
2745 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x50, 0xa4, 0x64,
2746 +   0x35, 0x28, 0x29, 0x2d, 0xff, 0xff, 0xf0, 0x84, 0x3f, 0x98, 0xf0, 0xe1,
2747 +   0x9f, 0xcf, 0xc9, 0xc1, 0x07, 0x1e, 0x9e, 0xf0, 0xfc, 0x84, 0x0f, 0xcc,
2748 +   0x84, 0x0f, 0xff, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2749 +   0x3f, 0x94, 0x2a, 0x15, 0x89, 0xae, 0x94, 0xa2, 0xff, 0x7f, 0xe6, 0x18,
2750 +   0x7f, 0x1e, 0xe3, 0xcc, 0x9f, 0xcf, 0xc9, 0x9f, 0x73, 0xce, 0x1c, 0xe3,
2751 +   0xfc, 0x18, 0xe7, 0xcc, 0x18, 0x67, 0xfe, 0x3c, 0xff, 0xff, 0xff, 0xff,
2752 +   0xff, 0xff, 0xff, 0xff, 0x8f, 0x4b, 0x85, 0xa4, 0x55, 0x22, 0x65, 0xbd,
2753 +   0xff, 0x3f, 0xcf, 0x3c, 0x7f, 0x9e, 0x67, 0xce, 0x9f, 0xcf, 0xf1, 0x9f,
2754 +   0x79, 0xe6, 0x99, 0xe7, 0xe0, 0x3c, 0xf3, 0xcc, 0x3c, 0x73, 0xfe, 0x3c,
2755 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0x10, 0x29, 0xa9,
2756 +   0x2a, 0x95, 0x94, 0x02, 0xff, 0x3f, 0xcf, 0x3c, 0x7f, 0x9e, 0x67, 0xc0,
2757 +   0x9f, 0xcf, 0xf9, 0x81, 0x79, 0xe6, 0x99, 0xe7, 0xfc, 0x3c, 0xf3, 0xcc,
2758 +   0x3c, 0x03, 0xfe, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2759 +   0x51, 0xd6, 0x24, 0x51, 0x89, 0xa4, 0xaa, 0xba, 0xff, 0x3f, 0xcf, 0x3c,
2760 +   0x7f, 0x9e, 0x67, 0xfe, 0x9f, 0xcf, 0xf9, 0x9c, 0x79, 0xe6, 0x99, 0xe7,
2761 +   0xfc, 0x3c, 0xf3, 0xcc, 0x3c, 0xf3, 0xff, 0x3c, 0xff, 0xff, 0xff, 0xff,
2762 +   0xff, 0xff, 0xff, 0x7f, 0x24, 0x29, 0x4a, 0x26, 0x1b, 0x55, 0x55, 0x55,
2763 +   0xff, 0x3f, 0xcf, 0x3c, 0x7f, 0x9e, 0x67, 0xfe, 0x9f, 0xcf, 0xf9, 0x9c,
2764 +   0x33, 0xe6, 0x99, 0xe7, 0xfc, 0x3c, 0x67, 0xcc, 0x3c, 0xf3, 0xff, 0x3c,
2765 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x93, 0x84, 0x52, 0x59,
2766 +   0x51, 0xa5, 0x54, 0x95, 0xff, 0x7f, 0xe6, 0x3c, 0x7f, 0x9e, 0xe7, 0xdc,
2767 +   0x9f, 0xe7, 0xf9, 0x8c, 0x47, 0xce, 0x9c, 0xe7, 0xfc, 0x3c, 0x8f, 0xcc,
2768 +   0x3c, 0xe7, 0xfe, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf,
2769 +   0x48, 0x52, 0x49, 0x95, 0x55, 0x55, 0x55, 0x8a, 0xff, 0xff, 0xf0, 0x3c,
2770 +   0xff, 0x98, 0xe7, 0xe1, 0x1f, 0xf0, 0xf9, 0x11, 0x7f, 0x1e, 0x9e, 0xe7,
2771 +   0xc0, 0x3c, 0xff, 0xcc, 0x3c, 0x0f, 0xff, 0x3c, 0xff, 0xff, 0xff, 0xff,
2772 +   0xff, 0xff, 0xff, 0xa1, 0x2a, 0x49, 0xa4, 0xaa, 0xac, 0x54, 0x49, 0xe5,
2773 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2774 +   0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0xfe, 0xff, 0xff, 0xff, 0xff,
2775 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95, 0xa4, 0xaa, 0xa8, 0x8a,
2776 +   0x26, 0xa5, 0x6a, 0x2d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2777 +   0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff,
2778 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x54,
2779 +   0x22, 0x40, 0x4a, 0x4a, 0x69, 0xa8, 0x2c, 0x55, 0xff, 0xff, 0xff, 0xff,
2780 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2781 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2782 +   0xff, 0xff, 0x5f, 0x0a, 0x92, 0xae, 0xa9, 0x62, 0xa5, 0x4b, 0xa2, 0x92,
2783 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2784 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2785 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x47, 0xa1, 0x51, 0x89, 0x4c, 0xb5,
2786 +   0x26, 0x24, 0x55, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2787 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2788 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x25, 0x4a,
2789 +   0x0a, 0x56, 0x55, 0x48, 0x55, 0x55, 0x29, 0x55, 0xff, 0xff, 0xff, 0xff,
2790 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2791 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2792 +   0xff, 0xff, 0xa8, 0x52, 0xc8, 0x40, 0x65, 0xa5, 0x52, 0x95, 0xaa, 0x92,
2793 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2794 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2795 +   0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x12, 0x29, 0x93, 0xad, 0x28, 0x2a,
2796 +   0x4b, 0xa9, 0x26, 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2797 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2798 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x4a, 0x09,
2799 +   0x29, 0x28, 0x44, 0x21, 0xa9, 0x55, 0x52, 0x95, 0xff, 0xff, 0xff, 0xff,
2800 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2801 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2802 +   0xff, 0x17, 0x91, 0xa4, 0x94, 0x45, 0xb9, 0x9c, 0x54, 0x93, 0xaa, 0x52,
2803 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2804 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2805 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x24, 0x95, 0xc2, 0xb0, 0x5a, 0x45,
2806 +   0x96, 0xaa, 0x92, 0x94, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2807 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2808 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x88, 0x40,
2809 +   0x54, 0xcb, 0x49, 0xa6, 0x51, 0x25, 0xa9, 0x52, 0xff, 0xff, 0xff, 0xff,
2810 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2811 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2812 +   0x3f, 0x88, 0x4a, 0x55, 0x57, 0x08, 0xd5, 0x90, 0x5c, 0xa9, 0x6a, 0x9a,
2813 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2814 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2815 +   0xff, 0xff, 0xff, 0xff, 0x5f, 0x25, 0x94, 0x4a, 0x82, 0xf2, 0x9a, 0x53,
2816 +   0x25, 0x54, 0xad, 0x26, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2817 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2818 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x27, 0x28, 0x45, 0x50,
2819 +   0xaa, 0x14, 0xd0, 0x51, 0xa2, 0x55, 0x0a, 0x89, 0xff, 0xff, 0xff, 0xff,
2820 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2821 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2822 +   0x13, 0x85, 0x10, 0x55, 0x79, 0xc2, 0xef, 0x25, 0x55, 0xa5, 0x6a, 0x52,
2823 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2824 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2825 +   0xff, 0xff, 0xff, 0x7f, 0x90, 0xa2, 0xaa, 0xaa, 0x06, 0x69, 0xc8, 0x54,
2826 +   0x2d, 0x6a, 0xaa, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2827 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2828 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x4b, 0x54, 0x48, 0xa5,
2829 +   0xb0, 0x94, 0x8a, 0x24, 0x86, 0x1b, 0x05, 0x52, 0xff, 0xff, 0xff, 0xff,
2830 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2831 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
2832 +   0x49, 0x25, 0xaa, 0xa4, 0x8a, 0x56, 0xe5, 0x54, 0xd3, 0x49, 0xe9, 0x4a,
2833 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2834 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2835 +   0xff, 0xff, 0xff, 0x57, 0x24, 0x14, 0x95, 0x52, 0x54, 0x49, 0x6b, 0x25,
2836 +   0x2d, 0x24, 0x15, 0x92, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2837 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2838 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0xa4, 0xca, 0x54, 0x2d,
2839 +   0x15, 0xa9, 0x26, 0x91, 0xc5, 0x56, 0xd5, 0xab, 0xff, 0xff, 0xff, 0xff,
2840 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2841 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0,
2842 +   0x12, 0x20, 0x2a, 0x92, 0xa8, 0x4a, 0xb9, 0x56, 0x7a, 0x50, 0x6a, 0x4a,
2843 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2844 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2845 +   0xff, 0xff, 0x3f, 0x15, 0x0a, 0x29, 0xb1, 0xd5, 0x66, 0x54, 0x8f, 0x30,
2846 +   0x05, 0x57, 0xab, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2847 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2848 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xa8, 0xd4, 0x4a, 0x45, 0x53,
2849 +   0x52, 0xd3, 0xb2, 0xaa, 0xd5, 0xa2, 0x4a, 0x55, 0xff, 0xff, 0xff, 0xff,
2850 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2851 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x85,
2852 +   0x0a, 0x48, 0x2a, 0xa8, 0x32, 0xaa, 0xa9, 0x4a, 0x54, 0x54, 0xaa, 0x2a,
2853 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2854 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2855 +   0xff, 0xff, 0xab, 0x62, 0x50, 0x22, 0x52, 0x55, 0xd9, 0x15, 0x55, 0x29,
2856 +   0x45, 0xf4, 0xb5, 0xca, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2857 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2858 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x2a, 0x25, 0x92, 0x49, 0x13,
2859 +   0x09, 0xaa, 0x25, 0xba, 0x52, 0x07, 0x48, 0x31, 0xff, 0xff, 0xff, 0xff,
2860 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2861 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x59, 0xaa,
2862 +   0x89, 0x20, 0x34, 0xa5, 0xd4, 0xd5, 0xaa, 0x85, 0x3c, 0x52, 0x57, 0x95,
2863 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2864 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2865 +   0xff, 0x1f, 0x0a, 0x01, 0xa8, 0x92, 0xaa, 0x94, 0x4a, 0x70, 0xb4, 0x54,
2866 +   0x95, 0x55, 0xa9, 0x54, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2867 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2868 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x42, 0xa4, 0x0a, 0x51, 0x09, 0xa5,
2869 +   0x5d, 0x9b, 0x12, 0x25, 0xfb, 0x44, 0x55, 0xab, 0xff, 0xff, 0xff, 0xff,
2870 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2871 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa3, 0x28, 0x01,
2872 +   0x50, 0x4d, 0x56, 0x91, 0x64, 0x95, 0x52, 0xb5, 0x49, 0xb7, 0x4a, 0xaa,
2873 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2874 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2875 +   0xff, 0x15, 0x03, 0xda, 0x0e, 0x62, 0x89, 0xba, 0x09, 0x47, 0xa9, 0x08,
2876 +   0x52, 0x49, 0xaa, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2877 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2878 +   0xff, 0xff, 0xff, 0xff, 0x3f, 0x40, 0x51, 0x0b, 0xc1, 0x15, 0xee, 0x90,
2879 +   0xfe, 0x52, 0x15, 0xc5, 0x14, 0x55, 0xd5, 0x8a, 0xff, 0xff, 0xff, 0xff,
2880 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2881 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x63, 0x00, 0x90,
2882 +   0x2a, 0xa1, 0x15, 0xd6, 0x08, 0x4f, 0xd8, 0xa8, 0xea, 0xaa, 0x2a, 0x00,
2883 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2884 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2885 +   0xcf, 0x10, 0x00, 0x49, 0x12, 0x2d, 0x63, 0x17, 0xab, 0xa0, 0x12, 0x95,
2886 +   0x12, 0xaa, 0x48, 0x64, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2887 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2888 +   0xff, 0xff, 0xff, 0xff, 0xe7, 0x82, 0x40, 0xa4, 0x86, 0xc8, 0x98, 0x54,
2889 +   0xb5, 0xab, 0xe5, 0x6a, 0xd5, 0xa5, 0x16, 0x18, 0xff, 0xff, 0xff, 0xff,
2890 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2891 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb1, 0x68, 0x90, 0x82,
2892 +   0xd4, 0x25, 0x4a, 0x39, 0x79, 0x10, 0x12, 0x0a, 0x55, 0xb5, 0x06, 0x88,
2893 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2894 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
2895 +   0x6c, 0x42, 0x20, 0x29, 0x28, 0x50, 0x29, 0x4b, 0x15, 0xb5, 0xd6, 0xaa,
2896 +   0x72, 0x2a, 0xad, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2897 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2898 +   0xff, 0xff, 0xff, 0xbf, 0x24, 0x2c, 0x00, 0x50, 0x23, 0x55, 0xfa, 0xff,
2899 +   0x5d, 0x89, 0x52, 0x52, 0x59, 0xb5, 0xff, 0xcd, 0xff, 0xff, 0xff, 0xff,
2900 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2901 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0x8b, 0x41, 0x24, 0x5a,
2902 +   0xac, 0x82, 0xfe, 0xff, 0xaf, 0xd5, 0xaa, 0x5a, 0x5d, 0xef, 0x6f, 0x57,
2903 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2904 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3,
2905 +   0xe4, 0x34, 0x27, 0x8a, 0x12, 0xa8, 0xff, 0xff, 0xff, 0x56, 0xaa, 0x95,
2906 +   0xc4, 0x78, 0x7b, 0x53, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2907 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2908 +   0xff, 0xff, 0xff, 0x35, 0x7d, 0x00, 0x11, 0x42, 0xaa, 0xe5, 0xff, 0xff,
2909 +   0xff, 0x24, 0x51, 0xd4, 0xb2, 0xda, 0x1f, 0xa8, 0xff, 0xff, 0xff, 0xff,
2910 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2911 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x08, 0x1f, 0x42, 0x59, 0x28,
2912 +   0xba, 0xf4, 0xff, 0xff, 0xff, 0x5b, 0x2d, 0x53, 0x95, 0xfe, 0x11, 0xa9,
2913 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2914 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xeb,
2915 +   0x7f, 0xeb, 0xa6, 0x92, 0x14, 0xf9, 0xff, 0xff, 0xff, 0xcf, 0xaa, 0xaa,
2916 +   0xaa, 0xbf, 0x1f, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2917 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2918 +   0xff, 0xff, 0x17, 0xf8, 0x17, 0x72, 0x02, 0x88, 0xd2, 0xfc, 0xff, 0xff,
2919 +   0xff, 0xef, 0xaa, 0x4a, 0xe9, 0xd5, 0xdf, 0xa5, 0xff, 0xff, 0xff, 0xff,
2920 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2921 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xd1, 0x1e, 0x11, 0xb1, 0xa5,
2922 +   0x2a, 0xfe, 0xff, 0xff, 0xff, 0xbf, 0xd4, 0x52, 0xb5, 0xef, 0x25, 0xd4,
2923 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2924 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x51, 0xff,
2925 +   0x07, 0x94, 0x08, 0xa4, 0x54, 0xff, 0xff, 0xff, 0xcf, 0x7f, 0xb5, 0x54,
2926 +   0xfd, 0x70, 0x55, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2927 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2928 +   0xff, 0xff, 0x26, 0xff, 0x17, 0x2d, 0xb6, 0x12, 0x0a, 0xff, 0xff, 0xff,
2929 +   0x8f, 0x7f, 0x8d, 0xaa, 0x8a, 0x56, 0x55, 0x49, 0xff, 0xff, 0xff, 0xff,
2930 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2931 +   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xe2, 0x77, 0x2b, 0x37, 0x91, 0x08,
2932 +   0xd5, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xd5, 0xaa, 0xaa, 0x52, 0x4a, 0x55,
2933 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2934 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xfd, 0xff,
2935 +   0x81, 0xc1, 0x59, 0xd0, 0xe1, 0xff, 0xff, 0xff, 0x07, 0xff, 0x2a, 0x95,
2936 +   0x54, 0x55, 0x65, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2937 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2938 +   0xff, 0xaf, 0xfd, 0xbd, 0x49, 0x8c, 0x58, 0x8a, 0xd5, 0xff, 0xff, 0xff,
2939 +   0xe7, 0xff, 0x49, 0x51, 0x45, 0x55, 0x4d, 0xb5, 0xff, 0xff, 0xff, 0xff,
2940 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2941 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xbe, 0x3f, 0xc4, 0xd5, 0x02, 0x79,
2942 +   0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb7, 0x4a, 0xba, 0x52, 0xf9, 0x4a,
2943 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2944 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xff, 0x97,
2945 +   0x64, 0x52, 0xda, 0x1c, 0xc9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xa8,
2946 +   0x8a, 0x54, 0x15, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2947 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2948 +   0xff, 0xd5, 0xdf, 0x4f, 0x91, 0x22, 0x2d, 0xc2, 0xe5, 0xff, 0xff, 0xff,
2949 +   0xff, 0xff, 0x93, 0x56, 0x6a, 0x55, 0xd5, 0xaa, 0xff, 0xff, 0xff, 0xff,
2950 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2951 +   0xff, 0xff, 0xff, 0xff, 0x7f, 0xf5, 0xef, 0x25, 0x5c, 0x43, 0x16, 0xaf,
2952 +   0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x92, 0x2a, 0x2b, 0x55, 0x2a,
2953 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2954 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xdb, 0xfb, 0x43,
2955 +   0x65, 0x21, 0x91, 0x13, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x47, 0x49,
2956 +   0x51, 0x52, 0x55, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2957 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2958 +   0xb7, 0xf0, 0x7f, 0x00, 0x7b, 0xea, 0x3c, 0xd1, 0xea, 0xff, 0xff, 0xff,
2959 +   0xff, 0xff, 0x27, 0x6a, 0x2d, 0x55, 0x55, 0xab, 0xff, 0xff, 0xff, 0xff,
2960 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2961 +   0xff, 0xff, 0xff, 0xff, 0x5b, 0xfc, 0x7d, 0xac, 0xc6, 0x11, 0xe5, 0x46,
2962 +   0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0x95, 0xd2, 0x4a, 0xb2, 0x55,
2963 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2964 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2d, 0xfe, 0x0f, 0x82,
2965 +   0xfc, 0x90, 0x54, 0x32, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0xd5,
2966 +   0x5a, 0xaa, 0x55, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2967 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2968 +   0x17, 0xdf, 0x1e, 0xc2, 0xa9, 0x23, 0xca, 0x46, 0xe5, 0xff, 0xff, 0x3f,
2969 +   0xf8, 0xff, 0x97, 0x2a, 0x55, 0xad, 0x94, 0x5a, 0xff, 0xff, 0xff, 0xff,
2970 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2971 +   0xff, 0xff, 0xff, 0x7f, 0xc5, 0xff, 0x07, 0xd5, 0x6c, 0xab, 0x12, 0x9a,
2972 +   0xe4, 0x0f, 0xff, 0x1f, 0xe0, 0xff, 0x57, 0xa9, 0x55, 0xa5, 0xda, 0xaa,
2973 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2974 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa1, 0xef, 0xd1, 0xac,
2975 +   0xc6, 0xa5, 0xea, 0x5c, 0xf3, 0x07, 0xfe, 0x0f, 0xc0, 0xff, 0x4f, 0x55,
2976 +   0xaa, 0x5a, 0x55, 0x6d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2977 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf,
2978 +   0xf0, 0xfb, 0xa8, 0xa5, 0xf2, 0x18, 0x56, 0x41, 0xf7, 0x03, 0xfc, 0x07,
2979 +   0x80, 0xff, 0xaf, 0xaa, 0xaa, 0x4a, 0xad, 0x56, 0xff, 0xff, 0xff, 0xff,
2980 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2981 +   0xff, 0xff, 0xff, 0x3f, 0xd0, 0xbf, 0x41, 0x52, 0x0e, 0xc6, 0xaa, 0x68,
2982 +   0xfa, 0x03, 0xfc, 0x07, 0x80, 0xff, 0x9f, 0x52, 0xd5, 0x6a, 0xab, 0xd5,
2983 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2984 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0xfd, 0x1d, 0x28, 0x2a,
2985 +   0x51, 0x75, 0x55, 0x4d, 0xe4, 0x03, 0xf8, 0x03, 0x03, 0xff, 0xaf, 0xaa,
2986 +   0x6a, 0xad, 0xaa, 0x4a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2987 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3b,
2988 +   0xfc, 0x9f, 0x00, 0x58, 0x92, 0x22, 0x6a, 0xd3, 0xed, 0xf3, 0xf8, 0xc3,
2989 +   0x0f, 0xff, 0xaf, 0xaa, 0xae, 0xaa, 0xaa, 0xda, 0xff, 0xff, 0xff, 0xff,
2990 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2991 +   0xff, 0xff, 0xff, 0x0a, 0xfe, 0x06, 0x7a, 0x4e, 0x52, 0x94, 0x36, 0x4c,
2992 +   0xf6, 0xb9, 0xf9, 0xc3, 0x1b, 0xff, 0x9f, 0xaa, 0x52, 0xaa, 0xaa, 0x6a,
2993 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2994 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0xb6, 0x03, 0x52, 0x93,
2995 +   0x95, 0x52, 0x46, 0x55, 0xf6, 0xb9, 0xf9, 0xe3, 0x17, 0xfe, 0x4f, 0xd5,
2996 +   0xaa, 0xd5, 0xaa, 0xa6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2997 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xa1,
2998 +   0xff, 0xa2, 0x2a, 0x31, 0x18, 0xba, 0x92, 0x55, 0xcb, 0x79, 0xf9, 0xe3,
2999 +   0x17, 0xfe, 0x6f, 0x29, 0xad, 0x54, 0xad, 0xb6, 0xff, 0xff, 0xff, 0xff,
3000 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3001 +   0xff, 0xff, 0x4f, 0x80, 0x3f, 0x49, 0xa8, 0xef, 0x75, 0x47, 0x2b, 0x53,
3002 +   0xef, 0x79, 0xf9, 0xe3, 0x1f, 0xfe, 0x9f, 0xa4, 0xaa, 0x6a, 0x55, 0x55,
3003 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3004 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1b, 0xe0, 0x8d, 0x20, 0x6e, 0x84,
3005 +   0x53, 0xa8, 0x29, 0xb1, 0xeb, 0xf9, 0xf1, 0xe3, 0x1f, 0xfe, 0x5f, 0xb5,
3006 +   0xaa, 0xaa, 0x56, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3007 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0,
3008 +   0x4f, 0x39, 0x42, 0x38, 0x15, 0x55, 0x92, 0x6d, 0xcc, 0xfb, 0x01, 0xe0,
3009 +   0x1f, 0xfe, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0x4a, 0xff, 0xff, 0xff, 0xff,
3010 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3011 +   0xff, 0xff, 0x45, 0x78, 0xd3, 0x9c, 0x2a, 0x1a, 0x76, 0x11, 0x13, 0xcc,
3012 +   0xed, 0xf3, 0x06, 0xc3, 0x1f, 0xfe, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0x69,
3013 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3014 +   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x23, 0xfc, 0xd3, 0x24, 0x8d, 0x60,
3015 +   0x8a, 0x54, 0xd5, 0x78, 0xd2, 0x67, 0x03, 0x80, 0x0f, 0xff, 0x5f, 0x55,
3016 +   0x55, 0x55, 0xb5, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3017 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x01, 0x6e,
3018 +   0x70, 0x10, 0x58, 0x15, 0xa8, 0x4e, 0xcd, 0xa4, 0xca, 0x37, 0x00, 0x00,
3019 +   0xfe, 0xff, 0xaf, 0x54, 0xaa, 0xda, 0x56, 0xd5, 0xff, 0xff, 0xff, 0xff,
3020 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3021 +   0xff, 0xff, 0x10, 0xbf, 0x35, 0xc9, 0xb1, 0xf7, 0x3a, 0xa9, 0xd1, 0xa8,
3022 +   0xd3, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0x5f, 0x8d, 0xd5, 0x56, 0x55, 0x55,
3023 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3024 +   0xff, 0xff, 0xff, 0xff, 0xff, 0x37, 0xc0, 0x16, 0x94, 0x55, 0x92, 0x2a,
3025 +   0x12, 0x5d, 0x9d, 0x4a, 0xd0, 0x07, 0x00, 0x00, 0x80, 0xff, 0x5f, 0xab,
3026 +   0x54, 0xd5, 0x56, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3027 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x0c, 0x8f,
3028 +   0x20, 0x4b, 0xb7, 0xd4, 0xe2, 0x92, 0x28, 0xa9, 0xf7, 0x03, 0x00, 0x00,
3029 +   0x00, 0xff, 0xbf, 0xa4, 0xae, 0x2a, 0xa9, 0xaa, 0xff, 0xff, 0xff, 0xff,
3030 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3031 +   0xff, 0x15, 0xc2, 0xa3, 0x9c, 0x4f, 0x91, 0x72, 0x11, 0x57, 0xab, 0x95,
3032 +   0xd3, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xbf, 0x5a, 0x51, 0xab, 0xb5, 0xaa,
3033 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3034 +   0xff, 0xff, 0xff, 0xff, 0xbf, 0x0f, 0xc0, 0x04, 0x51, 0x46, 0xa5, 0x19,
3035 +   0x57, 0x65, 0x32, 0xc9, 0xcd, 0x01, 0x00, 0x00, 0x00, 0xfe, 0x5f, 0x55,
3036 +   0xae, 0xaa, 0xaa, 0xda, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3037 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x60, 0x24,
3038 +   0x48, 0x93, 0xa5, 0x28, 0x4a, 0x29, 0x15, 0x45, 0xda, 0x01, 0x00, 0x00,
3039 +   0x30, 0xfe, 0x5f, 0xd5, 0xb2, 0xaa, 0xaa, 0x6a, 0xff, 0xff, 0xff, 0xff,
3040 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3041 +   0xff, 0x01, 0xd0, 0xa5, 0xaa, 0x24, 0xfd, 0xfb, 0xa8, 0xaa, 0xea, 0x67,
3042 +   0xe8, 0x07, 0x00, 0x00, 0x18, 0xff, 0xbf, 0x55, 0x2d, 0x54, 0x55, 0xad,
3043 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3044 +   0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0xb0, 0x52, 0x41, 0x95, 0xaa, 0x91,
3045 +   0x5a, 0x8c, 0xd2, 0x74, 0xcb, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xbf, 0x5a,
3046 +   0xa5, 0xab, 0x55, 0x65, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3047 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x7c, 0x73,
3048 +   0xa6, 0x4e, 0x79, 0x8b, 0xb2, 0x52, 0x15, 0x65, 0xee, 0x1f, 0x00, 0xe0,
3049 +   0x81, 0x9f, 0xff, 0xaa, 0x59, 0xb4, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
3050 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3051 +   0x07, 0x81, 0xbf, 0x55, 0x19, 0x52, 0x25, 0x5f, 0xa0, 0x2a, 0xaf, 0x4e,
3052 +   0xd8, 0x3f, 0x00, 0x3c, 0x80, 0x1f, 0x7f, 0xaa, 0xaa, 0x9b, 0xaa, 0x6a,
3053 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3054 +   0xff, 0xff, 0xff, 0xff, 0x97, 0x41, 0xf7, 0x15, 0x46, 0xad, 0xae, 0x14,
3055 +   0x56, 0xa5, 0x54, 0x4d, 0xe5, 0xff, 0xc0, 0x07, 0x98, 0x3f, 0x7c, 0x55,
3056 +   0xb5, 0x54, 0x55, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3057 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9b, 0x78, 0xbd, 0xda,
3058 +   0x41, 0x14, 0xa2, 0xf2, 0xdb, 0x54, 0x16, 0x5c, 0xb4, 0xff, 0xff, 0x01,
3059 +   0x1e, 0x3f, 0xf8, 0xbd, 0xaa, 0x56, 0x55, 0x2d, 0xff, 0xff, 0xff, 0xff,
3060 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3061 +   0x4f, 0xbd, 0x17, 0x20, 0xce, 0xca, 0x9d, 0x8a, 0x44, 0x32, 0xe9, 0xb6,
3062 +   0xc9, 0x3f, 0x3f, 0x80, 0x0f, 0x7f, 0xf8, 0xa5, 0x55, 0xb9, 0xaa, 0xd5,
3063 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3064 +   0xff, 0xff, 0xff, 0x7f, 0x43, 0xaf, 0xb3, 0x54, 0x21, 0x6c, 0x84, 0x4a,
3065 +   0x76, 0xad, 0xaa, 0x9c, 0xe9, 0x7b, 0x00, 0xe0, 0x01, 0xff, 0xf9, 0xab,
3066 +   0x6a, 0x8b, 0x6a, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3067 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xd9, 0x32, 0xe7,
3068 +   0x8e, 0x8a, 0xd2, 0x9d, 0xa6, 0x22, 0xd5, 0x54, 0xd2, 0xf3, 0x00, 0xf8,
3069 +   0x00, 0xfe, 0xff, 0xb5, 0x5a, 0x75, 0x55, 0xad, 0xff, 0xff, 0xff, 0xff,
3070 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f,
3071 +   0xbe, 0x7c, 0xb5, 0x32, 0x2c, 0x5c, 0xd4, 0xa4, 0x34, 0xad, 0xe9, 0x1e,
3072 +   0xe9, 0xf3, 0x03, 0x3f, 0x00, 0xfe, 0xff, 0xab, 0xaa, 0x55, 0x5d, 0x55,
3073 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3074 +   0xff, 0xff, 0xff, 0x7f, 0x25, 0x9c, 0x6a, 0x67, 0xd1, 0x43, 0x6a, 0xb6,
3075 +   0x2a, 0x25, 0x56, 0xf2, 0xeb, 0xe1, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x57,
3076 +   0xab, 0x56, 0xab, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3077 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf7, 0x0f, 0x29, 0xba,
3078 +   0x12, 0xbb, 0x79, 0x2b, 0xb5, 0xaa, 0x33, 0x47, 0xfa, 0xc1, 0xff, 0x0f,
3079 +   0x00, 0xf8, 0xff, 0xd7, 0xda, 0xaa, 0x6a, 0xb5, 0xff, 0xff, 0xff, 0xff,
3080 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f,
3081 +   0xff, 0x3b, 0x1b, 0xd9, 0x4e, 0x20, 0xd9, 0x1a, 0xa5, 0xaa, 0x34, 0xa5,
3082 +   0xfa, 0xc1, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x5f, 0x6b, 0xb5, 0x5d, 0x55,
3083 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3084 +   0xff, 0xff, 0xff, 0xbf, 0xad, 0x05, 0x99, 0xa9, 0x2a, 0xbb, 0x0a, 0xc8,
3085 +   0x6a, 0x55, 0x17, 0x17, 0xfa, 0x80, 0xff, 0x01, 0x00, 0xf0, 0xff, 0xbf,
3086 +   0xaa, 0xad, 0xaa, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3087 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x4e, 0x3e, 0x6d, 0x4a,
3088 +   0xa6, 0x15, 0xf5, 0x29, 0x29, 0xa5, 0x74, 0xa7, 0xfe, 0x00, 0xff, 0x00,
3089 +   0x00, 0xf0, 0xff, 0x5f, 0xb5, 0x56, 0x6b, 0x55, 0xff, 0xff, 0xff, 0xff,
3090 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce,
3091 +   0x27, 0x2d, 0x2c, 0x5d, 0x21, 0x8d, 0x2d, 0x45, 0xab, 0x54, 0x97, 0x6b,
3092 +   0x7d, 0x00, 0x1e, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0xab, 0x5a, 0xad, 0xb5,
3093 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3094 +   0xff, 0xff, 0xff, 0xfb, 0xb5, 0xe6, 0x46, 0x8f, 0x56, 0x59, 0xe3, 0x56,
3095 +   0x55, 0xa9, 0x2a, 0x53, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x7f,
3096 +   0x6a, 0xd7, 0x6a, 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3097 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfe, 0x38, 0x2b, 0xd1, 0x4d,
3098 +   0x52, 0x55, 0x54, 0x56, 0x69, 0xad, 0xca, 0x89, 0x3f, 0x00, 0x00, 0x00,
3099 +   0x00, 0xc0, 0xff, 0x7f, 0x5b, 0x59, 0xab, 0x56, 0xff, 0xff, 0xff, 0xff,
3100 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
3101 +   0xa6, 0x12, 0x2f, 0xf2, 0x09, 0xc0, 0x40, 0xa9, 0x2e, 0x54, 0x8d, 0xea,
3102 +   0x3f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x6d, 0xd7, 0x5a, 0xa9,
3103 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3104 +   0xff, 0xff, 0xef, 0xbf, 0xd6, 0x2a, 0x43, 0x6c, 0x29, 0x52, 0x3d, 0x88,
3105 +   0x92, 0x56, 0xd5, 0xa6, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
3106 +   0xaa, 0xd5, 0xaa, 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3107 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd, 0x37, 0x06, 0xe9, 0x25,
3108 +   0x00, 0xa0, 0x14, 0xa0, 0x5a, 0xa9, 0xca, 0xd4, 0x1f, 0x00, 0x00, 0x00,
3109 +   0x00, 0x80, 0xff, 0xff, 0x55, 0x35, 0xab, 0xaa, 0xff, 0xff, 0xff, 0xff,
3110 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xdf,
3111 +   0x59, 0xc3, 0x2e, 0x36, 0x1e, 0x91, 0x51, 0x50, 0x15, 0x55, 0xc5, 0xea,
3112 +   0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x2f, 0xd5, 0x56, 0xd5,
3113 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3114 +   0xff, 0xff, 0xff, 0xab, 0x21, 0x40, 0x51, 0xa2, 0x8a, 0x80, 0xdd, 0xa5,
3115 +   0xae, 0xac, 0xc6, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff,
3116 +   0xd7, 0xad, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3117 +   0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xe4, 0xba, 0x42, 0x65, 0xb5,
3118 +   0x8e, 0xc8, 0xed, 0x70, 0x4b, 0xb5, 0xc6, 0xfa, 0x0f, 0x00, 0x00, 0x00,
3119 +   0x00, 0x80, 0xbf, 0xff, 0xbf, 0x56, 0xd5, 0xb6, 0xff, 0xff, 0xff, 0xff,
3120 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x53,
3121 +   0x05, 0x48, 0xa9, 0xb0, 0x56, 0x67, 0x6f, 0xaa, 0xa9, 0x45, 0xed, 0xfc,
3122 +   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xbf, 0xaa, 0xb5, 0xaa,
3123 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3124 +   0xff, 0xdf, 0xbb, 0x9a, 0x3c, 0x04, 0xf4, 0x99, 0x6b, 0xf0, 0x7f, 0xa9,
3125 +   0xac, 0x54, 0x65, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe,
3126 +   0x5f, 0xab, 0xaa, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3127 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0xda, 0x3f, 0xb0, 0x79, 0x48,
3128 +   0x17, 0xb8, 0xbf, 0xaa, 0x66, 0xab, 0xe6, 0xfe, 0x1f, 0x00, 0x00, 0x00,
3129 +   0x00, 0x00, 0xfe, 0xfd, 0xbf, 0x55, 0x55, 0xab, 0xff, 0xff, 0xff, 0xff,
3130 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x6f, 0x5f,
3131 +   0xee, 0x1a, 0x1d, 0xc4, 0xfc, 0xff, 0xab, 0x29, 0xad, 0xa9, 0xf2, 0xff,
3132 +   0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfb, 0x7f, 0x55, 0x55, 0x55,
3133 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3134 +   0xff, 0xfe, 0x8b, 0x6e, 0x77, 0x20, 0x1e, 0xc6, 0xf6, 0xd9, 0xaa, 0xa6,
3135 +   0xad, 0x6a, 0xa7, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf3,
3136 +   0xff, 0xea, 0xbd, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3137 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x2b, 0x97, 0x2b, 0x5e, 0x6f, 0xe0,
3138 +   0x3e, 0x5d, 0x45, 0x4a, 0x56, 0x6d, 0xc5, 0xef, 0x07, 0x00, 0x00, 0x00,
3139 +   0x00, 0x00, 0xf8, 0xf7, 0xff, 0x8a, 0xa8, 0xad, 0xff, 0xff, 0xff, 0xff,
3140 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x6d, 0xeb,
3141 +   0x23, 0x50, 0x42, 0xf3, 0xd7, 0x96, 0x56, 0xa9, 0xb4, 0x52, 0xaa, 0xf7,
3142 +   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe7, 0xff, 0x6a, 0x57, 0x55,
3143 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3144 +   0xbf, 0x67, 0x9b, 0xe5, 0x91, 0xad, 0x87, 0x78, 0xa1, 0xa2, 0x72, 0x25,
3145 +   0xad, 0x2a, 0xcb, 0xf7, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xef,
3146 +   0xff, 0x2b, 0xa9, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3147 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x77, 0x7b, 0x4d, 0xe1, 0x49, 0xfb,
3148 +   0xaf, 0xde, 0xa4, 0x0a, 0x55, 0x95, 0xb5, 0xfb, 0x03, 0x00, 0x00, 0x00,
3149 +   0x00, 0x00, 0xf0, 0xcf, 0xff, 0xd5, 0xaa, 0x5a, 0xff, 0xff, 0xff, 0xff,
3150 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xe8, 0xb9,
3151 +   0x4c, 0x6d, 0xe4, 0xbd, 0xd2, 0xe2, 0x96, 0xa3, 0x5a, 0xd5, 0xd4, 0xff,
3152 +   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xdf, 0xff, 0xd7, 0xaa, 0xad,
3153 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3154 +   0x5f, 0x4b, 0xe7, 0x8d, 0x8f, 0x79, 0xf2, 0xaf, 0x2a, 0x29, 0xaa, 0x13,
3155 +   0x4f, 0xa5, 0xea, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x9f,
3156 +   0xff, 0x2b, 0xad, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3157 +   0xff, 0xff, 0xff, 0xff, 0xf7, 0xfd, 0x72, 0xe4, 0x05, 0x7c, 0xf6, 0x55,
3158 +   0x55, 0xad, 0xb3, 0x48, 0x61, 0x6d, 0xf5, 0xff, 0x00, 0x00, 0x00, 0x00,
3159 +   0x00, 0x00, 0xe0, 0x9f, 0xff, 0xb7, 0xaa, 0x6a, 0xff, 0xff, 0xff, 0xff,
3160 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x97, 0xff, 0x74,
3161 +   0xca, 0x6e, 0x76, 0xad, 0xaa, 0xaa, 0x6a, 0xb2, 0x5c, 0x59, 0xe9, 0xff,
3162 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0xff, 0x57, 0xab, 0xad,
3163 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
3164 +   0xd9, 0xd5, 0x7e, 0x0c, 0x6e, 0xff, 0x07, 0xb0, 0xaa, 0x54, 0x29, 0x53,
3165 +   0xa5, 0x4a, 0xea, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f,
3166 +   0xff, 0x5f, 0xa9, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3167 +   0xff, 0xff, 0xff, 0xff, 0xff, 0x6e, 0x3b, 0x90, 0xb5, 0xeb, 0x67, 0x54,
3168 +   0x5d, 0x55, 0x6d, 0xd5, 0x5a, 0xa9, 0xfa, 0x7f, 0x00, 0x00, 0x00, 0x00,
3169 +   0x00, 0x00, 0xc0, 0x3f, 0xff, 0x57, 0xdb, 0xaa, 0xff, 0xff, 0xff, 0xff,
3170 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x6f, 0xe7, 0xdf, 0xc9,
3171 +   0xd9, 0x79, 0x7b, 0x56, 0x4a, 0x95, 0xaa, 0x14, 0x2a, 0x55, 0xf5, 0x3f,
3172 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0xfe, 0xdf, 0xaa, 0xd6,
3173 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
3174 +   0xb7, 0x9d, 0xfb, 0xc4, 0xdc, 0x7f, 0x7f, 0xaa, 0xaa, 0x6a, 0x25, 0x6d,
3175 +   0xab, 0x4a, 0xfa, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f,
3176 +   0xfe, 0xbf, 0xda, 0x5a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3177 +   0xff, 0xff, 0xff, 0xf7, 0xdd, 0xef, 0xff, 0x74, 0xde, 0xfb, 0x5f, 0xaa,
3178 +   0xaa, 0x56, 0x99, 0xaa, 0xaa, 0xaa, 0xfa, 0x3f, 0x00, 0x00, 0x00, 0x00,
3179 +   0x00, 0x00, 0x80, 0x7f, 0xfe, 0x5f, 0x55, 0x6b, 0xff, 0xff, 0xff, 0xff,
3180 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xcf, 0xea, 0x6e, 0x66,
3181 +   0xff, 0xbb, 0x3f, 0x54, 0xad, 0xaa, 0x1a, 0x4d, 0xa5, 0x54, 0xfd, 0x1f,
3182 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0xfe, 0xbf, 0x6d, 0xad,
3183 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed,
3184 +   0xe7, 0xbf, 0x3f, 0xdb, 0xf7, 0xea, 0x0b, 0xa9, 0xaa, 0xaa, 0x5d, 0x75,
3185 +   0xad, 0x52, 0xfd, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
3186 +   0xfe, 0xdf, 0x56, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3187 +   0xff, 0xff, 0xbf, 0x7f, 0x5f, 0xed, 0x1f, 0x8a, 0x3e, 0xbf, 0xce, 0xab,
3188 +   0x56, 0xb5, 0x4c, 0x95, 0x4a, 0x95, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00,
3189 +   0x00, 0x00, 0x80, 0xff, 0xfc, 0x7f, 0xb5, 0xb5, 0xff, 0xff, 0xff, 0xff,
3190 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xe5, 0xe6, 0x0b, 0xf3,
3191 +   0xbf, 0xbe, 0x7f, 0xa9, 0xaa, 0xaa, 0x4e, 0x6b, 0x53, 0x52, 0xdf, 0x1f,
3192 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xfc, 0xbf, 0xd6, 0x56,
3193 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef,
3194 +   0x5d, 0xf3, 0x07, 0xfa, 0x5b, 0x47, 0x57, 0xad, 0x5a, 0x75, 0x4a, 0x55,
3195 +   0x49, 0xa9, 0xde, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
3196 +   0xfc, 0x7f, 0x6b, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3197 +   0xff, 0xff, 0xef, 0x7a, 0x4b, 0x7b, 0x01, 0xfd, 0x4d, 0xf2, 0x53, 0x55,
3198 +   0x57, 0x57, 0x61, 0x5b, 0xad, 0xac, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00,
3199 +   0x00, 0x00, 0x00, 0xff, 0xfc, 0xbf, 0xb5, 0x96, 0xff, 0xff, 0xff, 0xff,
3200 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfd, 0x01, 0xdb,
3201 +   0xae, 0xe5, 0x4a, 0x55, 0x55, 0xb5, 0xaf, 0xa5, 0xaa, 0x22, 0xdf, 0x0f,
3202 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0xff, 0x5a, 0xfb,
3203 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7d, 0x6f,
3204 +   0xf5, 0xbd, 0x40, 0xfc, 0x65, 0x35, 0x35, 0xcd, 0xaa, 0xd5, 0xa5, 0xba,
3205 +   0x4a, 0xaa, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
3206 +   0xfc, 0x7f, 0x4d, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3207 +   0xff, 0xff, 0xef, 0xbf, 0x57, 0xf6, 0x41, 0x57, 0x91, 0xca, 0x4a, 0xb5,
3208 +   0x56, 0x55, 0xaa, 0xcd, 0x5a, 0xd5, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00,
3209 +   0x00, 0x00, 0x00, 0xff, 0xfc, 0xff, 0x5a, 0xb7, 0xff, 0xff, 0xff, 0xff,
3210 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xcf, 0x3e, 0x7f, 0x00, 0x60,
3211 +   0x57, 0x6b, 0x75, 0x55, 0xb5, 0xcb, 0xba, 0xd5, 0x2a, 0xc9, 0xdf, 0x0f,
3212 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x7f, 0xeb, 0xd5,
3213 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6,
3214 +   0x9f, 0x7f, 0x00, 0x68, 0x55, 0x54, 0x95, 0x5a, 0x55, 0xaa, 0x4a, 0x75,
3215 +   0x53, 0xd5, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
3216 +   0xfe, 0xff, 0xad, 0x6a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3217 +   0xff, 0x7f, 0xef, 0x73, 0xc7, 0xb7, 0xd0, 0x5c, 0xdd, 0xa5, 0xaa, 0x6d,
3218 +   0xaa, 0x6a, 0xea, 0x56, 0x55, 0xf5, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00,
3219 +   0x00, 0x00, 0x00, 0x7f, 0xfe, 0x7f, 0xb5, 0xbe, 0xff, 0xff, 0xff, 0xff,
3220 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfd, 0xed, 0xc7, 0x7d, 0x83, 0x8b,
3221 +   0x2e, 0xd5, 0xaa, 0x2a, 0xb5, 0x5a, 0x5d, 0xdb, 0x56, 0xf5, 0x9f, 0x0f,
3222 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x7f, 0xdb, 0xa5,
3223 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7c, 0xff,
3224 +   0xe3, 0x7f, 0x47, 0xd9, 0xa6, 0x6a, 0xab, 0xd6, 0xaa, 0x2a, 0x55, 0x55,
3225 +   0xaa, 0xe4, 0xbf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
3226 +   0xff, 0x7f, 0xad, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3227 +   0xff, 0x37, 0xec, 0xff, 0xf2, 0xbf, 0x83, 0x96, 0x53, 0xa9, 0xaa, 0x55,
3228 +   0xad, 0x56, 0xad, 0xd5, 0x55, 0xeb, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00,
3229 +   0x00, 0x00, 0x00, 0x0e, 0xfc, 0x7f, 0x6b, 0xad, 0xff, 0xff, 0xff, 0xff,
3230 +   0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x3e, 0x6d, 0xfb, 0xce, 0xe1, 0x52,
3231 +   0x59, 0xad, 0xaa, 0x9a, 0xaa, 0x5a, 0x6b, 0x5d, 0xaa, 0xea, 0x3f, 0x0f,
3232 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x7f, 0x5d, 0xeb,
3233 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x3f, 0xfb,
3234 +   0xff, 0xf3, 0x51, 0xcd, 0x56, 0x55, 0xd5, 0x6a, 0xb5, 0x56, 0xb5, 0x56,
3235 +   0xab, 0xea, 0x7f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
3236 +   0xe7, 0xff, 0xd6, 0x5a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3237 +   0xff, 0x4f, 0xcf, 0xcf, 0xdd, 0xe7, 0x58, 0x62, 0x52, 0xd5, 0xb6, 0x96,
3238 +   0xaa, 0x55, 0xad, 0x69, 0x55, 0xfb, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
3239 +   0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x6b, 0x6b, 0xff, 0xff, 0xff, 0xff,
3240 +   0xff, 0xff, 0xff, 0xff, 0x7f, 0x8b, 0xef, 0xc7, 0x7f, 0x21, 0xc4, 0x96,
3241 +   0xad, 0xaa, 0xaa, 0x6a, 0xad, 0xaa, 0x56, 0xaf, 0x31, 0xf5, 0xff, 0x00,
3242 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0xb5, 0xb5,
3243 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xfb, 0xf3,
3244 +   0xdd, 0x61, 0xee, 0xd4, 0x56, 0x6d, 0xd5, 0x2a, 0xb5, 0xd6, 0xda, 0xaa,
3245 +   0x9c, 0x75, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
3246 +   0xff, 0xff, 0xae, 0xae, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3247 +   0xff, 0xe3, 0xab, 0x7b, 0x7f, 0x20, 0xfa, 0x41, 0xd5, 0x52, 0x55, 0xd5,
3248 +   0x56, 0x55, 0x6b, 0x55, 0x6b, 0x15, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00,
3249 +   0x00, 0x00, 0x80, 0xff, 0xff, 0xbf, 0xf5, 0xb5, 0xff, 0xff, 0xff, 0xff,
3250 +   0xff, 0xff, 0xff, 0xff, 0xbf, 0xe1, 0xf6, 0xff, 0x4f, 0x20, 0xac, 0xb4,
3251 +   0xaa, 0xb6, 0x6d, 0x55, 0x55, 0xab, 0xad, 0xad, 0x34, 0x15, 0xc0, 0x07,
3252 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xbf, 0x56, 0xd5,
3253 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0xfb, 0xda,
3254 +   0x37, 0x40, 0x2a, 0xab, 0xb5, 0x5a, 0xb5, 0x55, 0xb5, 0x6a, 0x55, 0x55,
3255 +   0xab, 0x15, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xff,
3256 +   0xff, 0x4f, 0xdb, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3257 +   0xef, 0xf3, 0xfc, 0xff, 0x11, 0x52, 0x55, 0x69, 0xad, 0xaa, 0x96, 0xaa,
3258 +   0xd6, 0xaa, 0x76, 0x5d, 0x55, 0x0d, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
3259 +   0x00, 0x00, 0x0c, 0xff, 0xff, 0x87, 0x55, 0xab, 0xff, 0xff, 0xff, 0xff,
3260 +   0xff, 0xff, 0xff, 0xff, 0x7f, 0xf3, 0x7e, 0xff, 0x19, 0xd2, 0xd1, 0xb5,
3261 +   0x55, 0x55, 0xab, 0xaa, 0xaa, 0xb5, 0x55, 0x53, 0xb5, 0x0a, 0x00, 0x7e,
3262 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0xff, 0x87, 0xfa, 0xed,
3263 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x38, 0xff, 0xef,
3264 +   0x9e, 0xad, 0xd4, 0x54, 0xd5, 0x76, 0x6d, 0x55, 0x75, 0xd5, 0x56, 0x6d,
3265 +   0x95, 0x0d, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfe,
3266 +   0xff, 0x83, 0x2f, 0x35, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3267 +   0x5f, 0xdc, 0xbf, 0xff, 0x01, 0x42, 0xae, 0x5b, 0x6d, 0x55, 0xab, 0x52,
3268 +   0x55, 0xb5, 0xda, 0x96, 0xca, 0x0e, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00,
3269 +   0x00, 0x00, 0x06, 0xfe, 0xff, 0x81, 0xd5, 0xda, 0xff, 0xff, 0xff, 0xff,
3270 +   0xff, 0xff, 0xff, 0xff, 0x3d, 0xfe, 0xfb, 0x7b, 0x4d, 0x03, 0xb5, 0xd2,
3271 +   0x55, 0xab, 0x55, 0x55, 0xad, 0xda, 0x56, 0xb3, 0x5a, 0x0d, 0x00, 0xf8,
3272 +   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xfc, 0xff, 0x80, 0x6d, 0xd7,
3273 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe8, 0xdf, 0xef,
3274 +   0xa7, 0x9d, 0xd4, 0x6d, 0xaa, 0xda, 0xaa, 0xaa, 0xd5, 0x56, 0xab, 0xdc,
3275 +   0xd6, 0x0e, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf8,
3276 +   0x7f, 0x80, 0xb6, 0x6d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3277 +   0x8e, 0xfd, 0xfe, 0xff, 0xd1, 0xdd, 0x75, 0x55, 0xd9, 0x6a, 0x6d, 0x55,
3278 +   0x6d, 0x75, 0xb5, 0xa5, 0xab, 0x07, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00,
3279 +   0x00, 0x00, 0x06, 0xf0, 0x1f, 0x80, 0xdb, 0xb5, 0xff, 0xff, 0xff, 0xff,
3280 +   0xff, 0xff, 0xff, 0xff, 0x4f, 0xf6, 0xff, 0x7d, 0x28, 0xb7, 0x2a, 0xb5,
3281 +   0x6a, 0xad, 0xaa, 0x5a, 0xb5, 0x56, 0xab, 0xba, 0xea, 0x07, 0x00, 0xe0,
3282 +   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x07, 0x80, 0xb5, 0xae,
3283 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x23, 0x7e, 0xef, 0x5f,
3284 +   0x38, 0x57, 0x5a, 0x93, 0x56, 0xad, 0xad, 0xaa, 0x5d, 0xab, 0xba, 0xca,
3285 +   0xff, 0x03, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
3286 +   0x00, 0x80, 0xdf, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3287 +   0xb2, 0xff, 0xff, 0xfe, 0xe8, 0xb5, 0xca, 0xea, 0xda, 0xb6, 0x6a, 0xad,
3288 +   0x56, 0x75, 0x4b, 0xf5, 0x78, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00,
3289 +   0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x6b, 0x5f, 0xff, 0xff, 0xff, 0xff,
3290 +   0xff, 0xff, 0xff, 0xdf, 0xff, 0x53, 0xf7, 0x6f, 0x6a, 0xad, 0xaa, 0xaa,
3291 +   0x6a, 0xd5, 0x56, 0xab, 0xda, 0xae, 0x6a, 0x3d, 0x00, 0x00, 0x00, 0x80,
3292 +   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0xb7, 0x6a,
3293 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8b, 0x7f, 0x3f,
3294 +   0xd3, 0x5a, 0x67, 0x5b, 0x55, 0x55, 0x55, 0x55, 0x57, 0x55, 0x5d, 0x35,
3295 +   0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
3296 +   0x00, 0x80, 0xdf, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
3297 +   0x6d, 0xc3, 0xff, 0xd3, 0x51, 0xad, 0xba, 0xaa, 0xb6, 0xb6, 0xb6, 0xd5,
3298 +   0xb5, 0xd5, 0x66, 0x35, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00,
3299 +   0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd7, 0xd6, 0xff, 0xff, 0xff, 0xff,
3300 +   0xff, 0xff, 0xff, 0xbf, 0xff, 0xe1, 0xb7, 0xc0, 0xaa, 0xb6, 0x4b, 0xd5,
3301 +   0xda, 0x5a, 0xab, 0xb6, 0xd6, 0xb6, 0xba, 0x3a, 0x00, 0x00, 0x00, 0x00,
3302 +   0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7f, 0x75,
3303 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x97, 0xf0, 0xfe, 0x71,
3304 +   0x5c, 0xab, 0x59, 0x5b, 0x55, 0xad, 0xb5, 0xaa, 0x75, 0xb5, 0x56, 0x7b,
3305 +   0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,
3306 +   0x00, 0x00, 0x7e, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf,
3307 +   0x8e, 0xfa, 0xff, 0x32, 0xd6, 0xda, 0x6a, 0x55, 0x5d, 0xd5, 0x5a, 0x5b,
3308 +   0x5b, 0xab, 0x59, 0x7d, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00,
3309 +   0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xfe, 0xad, 0xff, 0xff, 0xff, 0xff,
3310 +   0xff, 0xff, 0xff, 0xfa, 0x0f, 0xbd, 0x37, 0x9d, 0xd6, 0xd6, 0x5a, 0xad,
3311 +   0xd5, 0xb6, 0xee, 0xea, 0x6d, 0x55, 0xad, 0x75, 0x00, 0x00, 0x00, 0x00,
3312 +   0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xf8, 0xb5,
3313 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd, 0x4b, 0xff, 0x1e, 0x95,
3314 +   0x2d, 0xab, 0x66, 0x55, 0xad, 0xaa, 0x55, 0xad, 0xb6, 0xba, 0xd5, 0xea,
3315 +   0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x40, 0x0e, 0x00,
3316 +   0x00, 0x00, 0x80, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xee,
3317 +   0xe7, 0xdf, 0x07, 0x77, 0x75, 0x75, 0x2f, 0xd5, 0xd6, 0x5a, 0xb5, 0xb6,
3318 +   0x55, 0xd5, 0x56, 0xfb, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00,
3319 +   0x00, 0x60, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xff, 0xff, 0xff, 0xff,
3320 +   0xff, 0xff, 0x77, 0xf8, 0xe3, 0x7f, 0x83, 0x4d, 0xaf, 0x55, 0xa5, 0x55,
3321 +   0x55, 0xad, 0x5b, 0xdb, 0x7e, 0x5b, 0x6b, 0xed, 0x00, 0x00, 0x00, 0x00,
3322 +   0xe0, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xbc,
3323 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfe, 0xf0, 0xf6, 0x81, 0xd4,
3324 +   0xe9, 0xb6, 0xaa, 0xd5, 0xb6, 0xb6, 0x6a, 0x55, 0x8b, 0xaa, 0xba, 0xe5,
3325 +   0x01, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x0e, 0x00,
3326 +   0x00, 0x00, 0x00, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xdf,
3327 +   0xfd, 0xff, 0x6d, 0xb8, 0xae, 0x6a, 0xd5, 0x56, 0xab, 0xd5, 0xad, 0xed,
3328 +   0x76, 0x75, 0xab, 0xec, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
3329 +   0x00, 0xfc, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xb8, 0xff, 0xff, 0xff, 0xff,
3330 +   0xff, 0xff, 0x8b, 0xff, 0xff, 0x3f, 0x61, 0xad, 0x6a, 0x5d, 0x6d, 0xd5,
3331 +   0xda, 0x6e, 0x6d, 0xb5, 0xae, 0x5e, 0xad, 0xe6, 0x01, 0x00, 0x00, 0x00,
3332 +   0x80, 0x01, 0x00, 0x00, 0x00, 0xfe, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xdc,
3333 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xed, 0xdd, 0x76, 0x59, 0x55,
3334 +   0xad, 0xd5, 0x96, 0x5e, 0x55, 0xb5, 0xaa, 0xae, 0xa7, 0xaa, 0x65, 0xf3,
3335 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x7f, 0x0f, 0x00,
3336 +   0x00, 0x00, 0x00, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfb, 0xff,
3337 +   0xff, 0xbf, 0x3c, 0xf5, 0x6b, 0x6d, 0x4b, 0x53, 0xdb, 0xd5, 0x6e, 0xb3,
3338 +   0xb5, 0x76, 0x6d, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00,
3339 +   0xc0, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xff, 0xff, 0xff,
3340 +   0xff, 0xff, 0xfb, 0xef, 0xfe, 0xff, 0x1e, 0x2d, 0xbd, 0x56, 0xab, 0xad,
3341 +   0xad, 0x6e, 0xb5, 0xdd, 0x5d, 0x5b, 0x55, 0xf7, 0x00, 0x00, 0x00, 0x00,
3342 +   0x00, 0xe6, 0x01, 0x00, 0xf0, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x6f,
3343 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfd, 0xfd, 0x77, 0x57, 0xa9, 0xb6,
3344 +   0x4d, 0x6b, 0xad, 0xaa, 0xda, 0xaa, 0x55, 0xd5, 0xa6, 0xd1, 0xdd, 0x72,
3345 +   0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x07, 0x00, 0xff, 0x7f, 0x0f, 0x00,
3346 +   0x00, 0x00, 0xf0, 0x6b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff,
3347 +   0xfe, 0x7f, 0xed, 0xd5, 0xd6, 0x9a, 0x6a, 0xb5, 0x5d, 0xdb, 0xde, 0xb6,
3348 +   0xda, 0x5e, 0xab, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xff, 0xff,
3349 +   0xff, 0x7f, 0x07, 0x00, 0x00, 0x00, 0xfc, 0xb6, 0xff, 0xff, 0xff, 0xff,
3350 +   0xff, 0x77, 0xff, 0x6f, 0xbf, 0x3f, 0x35, 0x57, 0xab, 0x6d, 0xad, 0x5a,
3351 +   0x6d, 0x6b, 0x6b, 0xdb, 0xab, 0x54, 0xd5, 0x3a, 0x00, 0x00, 0x00, 0x00,
3352 +   0x00, 0x9c, 0xff, 0xff, 0xff, 0x3f, 0x07, 0x00, 0x00, 0x80, 0x7f, 0xdb,
3353 +   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xbf, 0xfb, 0x9b, 0xd4, 0xba,
3354 +   0x6d, 0x52, 0x57, 0xad, 0xb5, 0x6a, 0xad, 0xb6, 0x5a, 0xb7, 0xb5, 0x3a,
3355 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xff, 0xff, 0xff, 0x3f, 0x07, 0x00,
3356 +   0x00, 0xf0, 0xd7, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xff, 0xdd,
3357 +   0xff, 0xcf, 0xdc, 0xda, 0xea, 0x5b, 0xab, 0xaa, 0xde, 0x5d, 0xeb, 0xda,
3358 +   0xea, 0x5a, 0xad, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xff, 0xff,
3359 +   0xff, 0x9f, 0x07, 0x00, 0x00, 0xfc, 0x5b, 0xdb, 0xff, 0xff, 0xff, 0xff,
3360 +   0xff, 0xf7, 0xfe, 0xb7, 0x7f, 0x77, 0xb7, 0xae, 0x56, 0x6d, 0x55, 0x6d,
3361 +   0xab, 0xaa, 0x5d, 0xaf, 0xad, 0xd6, 0xaa, 0xf6, 0x00, 0x00, 0x00, 0x00,
3362 +   0x00, 0xbc, 0xff, 0xff, 0xff, 0x9f, 0x07, 0x00, 0x00, 0xbf, 0xed, 0xb6,
3363 +   0xff, 0xff, 0xff, 0xff, 0xbf, 0x7f, 0xef, 0xff, 0xbb, 0x7f, 0xdb, 0x56,
3364 +   0x7b, 0x55, 0x55, 0xab, 0xd5, 0xb6, 0xd6, 0xea, 0x6a, 0xab, 0xb6, 0xea,
3365 +   0x07, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xff, 0xff, 0xff, 0x9f, 0x0f, 0x00,
3366 +   0x80, 0xbf, 0x6d, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x7f, 0xfd,
3367 +   0xff, 0xdc, 0x6e, 0x77, 0xd5, 0x56, 0x6b, 0x6d, 0x6d, 0xdb, 0x6b, 0xb7,
3368 +   0xb6, 0x5a, 0x55, 0xeb, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xff, 0xff,
3369 +   0xff, 0xbf, 0x0f, 0x00, 0xc0, 0xd7, 0xb6, 0x6d, 0xff, 0xff, 0xff, 0xff,
3370 +   0xef, 0xbd, 0x9f, 0xdd, 0x5d, 0xef, 0xb6, 0xdb, 0x56, 0xaa, 0x5a, 0xb5,
3371 +   0xb6, 0x55, 0xbd, 0xb5, 0xaa, 0xad, 0x6d, 0xad, 0xfe, 0x0f, 0x00, 0x00,
3372 +   0x00, 0xde, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xf0, 0xdf, 0xb6, 0x6d,
3373 +   0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xab, 0xfe, 0x7f, 0x56, 0xab, 0xae,
3374 +   0xfa, 0x56, 0xab, 0x56, 0xd5, 0xda, 0xd5, 0xde, 0xdd, 0x56, 0x55, 0x6b,
3375 +   0xd5, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
3376 +   0xf8, 0x6b, 0xdb, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xdf, 0x3f, 0x3f,
3377 +   0xbd, 0xb7, 0xb5, 0xab, 0x57, 0x55, 0xd5, 0xea, 0xb6, 0x6a, 0x6d, 0x6b,
3378 +   0xd5, 0xaa, 0xb6, 0xb5, 0x5a, 0xfd, 0x1f, 0x00, 0x00, 0xff, 0x57, 0xf5,
3379 +   0xb6, 0xdd, 0x1f, 0x00, 0xfc, 0xb5, 0xd5, 0xaa, 0xff, 0xff, 0xff, 0xff,
3380 +   0xde, 0xbf, 0x9e, 0x3f, 0xef, 0x7d, 0xed, 0xd6, 0x5a, 0xb5, 0xaa, 0xae,
3381 +   0x6d, 0xb5, 0xb6, 0x5d, 0x6d, 0x55, 0xab, 0xaa, 0xd6, 0x96, 0xff, 0x01,
3382 +   0x80, 0x7f, 0x55, 0x2b, 0x5b, 0xf5, 0x3f, 0x00, 0xff, 0xda, 0x76, 0xef,
3383 +   0xff, 0xff, 0xff, 0xff, 0xee, 0xcb, 0xe7, 0xd7, 0xaf, 0xaa, 0xb6, 0x55,
3384 +   0x6d, 0x55, 0xad, 0x6a, 0xb5, 0xdd, 0xb6, 0xd6, 0xb6, 0xb6, 0xac, 0xad,
3385 +   0x55, 0x1b, 0xfa, 0x0f, 0xe0, 0x5f, 0x53, 0x6d, 0xe9, 0x76, 0xff, 0xe0,
3386 +   0xdf, 0x56, 0x5b, 0x6b, 0xff, 0xff, 0xff, 0x7f, 0xef, 0xdf, 0xe7, 0xff,
3387 +   0xef, 0xdf, 0x6d, 0xef, 0x55, 0xad, 0x6a, 0xb7, 0x56, 0x55, 0x6d, 0xbb,
3388 +   0x59, 0xab, 0xa5, 0xb6, 0x6a, 0x6d, 0xd5, 0xff, 0xf8, 0xdb, 0xb2, 0x55,
3389 +   0x57, 0xcd, 0xff, 0xff, 0xbf, 0xed, 0xb5, 0xb5, 0xff, 0xff, 0xff, 0xbf,
3390 +   0x7b, 0x6f, 0xf5, 0x7e, 0x75, 0x69, 0xed, 0xb5, 0xb6, 0xd6, 0xaa, 0xd5,
3391 +   0x5b, 0xd5, 0xb6, 0xad, 0x6e, 0xd5, 0xbe, 0xaa, 0xad, 0x35, 0x55, 0xff,
3392 +   0xff, 0x6d, 0x59, 0xb5, 0x75, 0xb7, 0xfe, 0xff, 0xd7, 0xb6, 0xb6, 0xbd,
3393 +   0xff, 0xff, 0xff, 0x7f, 0xff, 0xfb, 0xf5, 0xdb, 0xab, 0x56, 0x5b, 0x6b,
3394 +   0xad, 0x52, 0xed, 0x5a, 0xb5, 0x6d, 0xdb, 0xd6, 0xaa, 0x2a, 0x57, 0xdb,
3395 +   0xb6, 0x5a, 0xd5, 0xfd, 0xff, 0xaa, 0x52, 0x5b, 0xad, 0xda, 0xfe, 0xff,
3396 +   0x7b, 0xdb, 0xea, 0xd6, 0xff, 0xff, 0xff, 0xaf, 0xdd, 0xbf, 0x72, 0x7f,
3397 +   0xdb, 0xfe, 0xed, 0xba, 0x55, 0x55, 0xb5, 0xae, 0xd6, 0xaa, 0x6d, 0xbb,
3398 +   0xae, 0x6d, 0x6d, 0x55, 0xad, 0x75, 0x5b, 0xed, 0xbf, 0xea, 0xa9, 0x69,
3399 +   0xb7, 0x6b, 0xf5, 0xff, 0x55, 0xdb, 0x7e, 0xdb, 0xff, 0xff, 0xff, 0x3b,
3400 +   0xfe, 0xf6, 0xf1, 0xd7, 0xbe, 0x55, 0xbb, 0xae, 0x6a, 0xd7, 0xaa, 0x6a,
3401 +   0x5b, 0x75, 0xab, 0x55, 0x7b, 0x55, 0x55, 0xb7, 0x55, 0xb3, 0xaa, 0xd6,
3402 +   0x5a, 0x55, 0xa5, 0xb6, 0xd5, 0x5a, 0xb5, 0xdb, 0xba, 0x6d, 0xab, 0xb6,
3403 +   0xff, 0xff, 0xff, 0x8f, 0xef, 0xff, 0xb8, 0xfa, 0xdf, 0xd5, 0xde, 0xb5,
3404 +   0xad, 0xda, 0xaa, 0xab, 0x6a, 0x5b, 0x5d, 0xbd, 0x8a, 0xb6, 0xdd, 0xda,
3405 +   0x76, 0xdb, 0xaa, 0xaa, 0xaa, 0x76, 0x55, 0x55, 0x75, 0x55, 0xd5, 0x6a,
3406 +   0xd7, 0xb6, 0x6d, 0xdb, 0xff, 0xff, 0xff, 0xdb, 0x7f, 0xbe, 0xf1, 0x6f,
3407 +   0xab, 0x7d, 0xab, 0x6e, 0xd7, 0x6d, 0x6b, 0xb5, 0xad, 0xaa, 0xab, 0x57,
3408 +   0xb7, 0xaa, 0x6a, 0xab, 0xaa, 0xa2, 0xda, 0xd6, 0x56, 0x55, 0xa5, 0x6d,
3409 +   0x5b, 0xfb, 0x6d, 0xbb, 0x5a, 0xdb, 0xb6, 0xb6, 0xff, 0xff, 0x7f, 0xcf,
3410 +   0x36, 0xf7, 0xb8, 0x77, 0xff, 0xd6, 0xbb, 0xb5, 0x69, 0x35, 0xb5, 0x5d,
3411 +   0x6d, 0xbb, 0xda, 0xad, 0x55, 0x6b, 0xab, 0xda, 0xb5, 0xbd, 0xaa, 0x5a,
3412 +   0xb5, 0xea, 0xaa, 0x55, 0xad, 0x2a, 0x6a, 0xad, 0xd5, 0x6d, 0xb3, 0xdb };
3413 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/xbm2lcd.pl linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/xbm2lcd.pl
3414 --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/xbm2lcd.pl    1970-01-01 10:00:00.000000000 +1000
3415 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/xbm2lcd.pl        2003-10-20 09:11:56.250761408 +1000
3416 @@ -0,0 +1,6 @@
3417 +
3418 +$_ = join("", <>);
3419 +
3420 +s/(0x[0-9a-f]{2})/sprintf("0x%.2x",ord(pack("b8",unpack("B8",chr(~hex($1)&0377)))))/gei;
3421 +
3422 +print $_;
3423 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/crt0.S linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/crt0.S
3424 --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/crt0.S 1970-01-01 10:00:00.000000000 +1000
3425 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/crt0.S     2003-10-20 09:11:56.247761864 +1000
3426 @@ -0,0 +1,78 @@
3427 +/*
3428 + *  linux/arch/m68knommu/platform/MC68VZ328/de2/zimage/crt0.S
3429 + *
3430 + *  Copyright (C) 2002 Georges Menie
3431 + *
3432 + * This file is subject to the terms and conditions of the GNU General Public
3433 + * License.  See the file COPYING in the main directory of this archive
3434 + * for more details.
3435 + */
3436 +
3437 +       .title "de2/zimage/crt0.S"
3438 +
3439 +       .extern unzip_image
3440 +       .extern __stack
3441 +       .extern __text_end
3442 +       .extern __data_start
3443 +       .extern __data_end
3444 +       .extern __bss_start
3445 +       .extern __bss_end
3446 +       .extern start_image
3447 +
3448 +       .text
3449 +       .global start
3450 +start:
3451 +
3452 +        /* initialize the stack */
3453 +        move.l  #__stack,%sp
3454 +
3455 +       /* disable interrupts */
3456 +       move.l  #-1,0xfffff304
3457 +       move.b  #0,0xfffff300
3458 +
3459 +        /* initialize the data section */
3460 +       lea.l   __text_end,%a0
3461 +       lea.l   __data_start,%a1
3462 +       lea.l   __data_end,%a2
3463 +1:     cmpa.l  %a1,%a2
3464 +        jbeq   2f
3465 +       move.l  (%a0)+,(%a1)+
3466 +       jbra    1b
3467 +2:
3468 +        /* initialize the bss section */
3469 +        lea.l   __bss_start,%a0
3470 +        lea.l   __bss_end,%a1
3471 +1:     cmpa.l  %a0,%a1
3472 +        jbeq   2f
3473 +       move.l  #0,(%a0)+
3474 +       jbra    1b
3475 +2:
3476 +       
3477 +/*
3478 + * Unzip the kernel image
3479 + */
3480 +       jsr     unzip_image
3481 +
3482 +/*
3483 + * Start the image
3484 + */
3485 +       movea.l #start_image,%a0
3486 +       jmp     (%a0)
3487 +
3488 +/*
3489 + * Infinite loop for exit
3490 + */
3491 +        .global exit
3492 +exit:
3493 +       bra     exit
3494 +
3495 +/*
3496 + * Define putc to send a char to the UART1
3497 + */
3498 +        .global putc
3499 +putc:
3500 +1:     move.w  0xfffff906,%d0
3501 +       and.w   #0x2000,%d0
3502 +       beq     1b
3503 +       move.b  7(%sp),0xfffff907
3504 +       rts
3505 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/image.ld linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/image.ld
3506 --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/image.ld       1970-01-01 10:00:00.000000000 +1000
3507 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/image.ld   2003-10-20 09:11:56.247761864 +1000
3508 @@ -0,0 +1,98 @@
3509 +STARTUP(crt0.o)
3510 +OUTPUT_ARCH(m68k)
3511 +SEARCH_DIR(.)
3512 +GROUP(-lc -lgcc)
3513 +__DYNAMIC  =  0;
3514 +
3515 +/*
3516 +
3517 + To test the decompression use:
3518 +
3519 +   rom (rwx) : ORIGIN = 0x400000, LENGTH = 2M
3520 +
3521 + download and run the compressed zImage.bin at 0x400000.
3522 + Depending on the build model (RAM,HIMEM,ROM) and
3523 + the size of the kernel (either compressed or uncompressed)
3524 + you might need to change this address.
3525
3526 + To generate a flashable compressed image, use:
3527 +
3528 +   rom (rwx) : ORIGIN = <addr_in_flash>, LENGTH = <available space>
3529 +
3530 + store and run the compressed image at <addr_in_flash>
3531 +
3532 +*/
3533 +
3534 +MEMORY
3535 +{
3536 +  ram (rwx) : ORIGIN =   0x1000, LENGTH = 64k-4k
3537 +  rom (rwx) : ORIGIN = 0x400000, LENGTH = 2M
3538 +}
3539 +
3540 +PROVIDE (__stack = 4k - 4);
3541 +
3542 +SECTIONS
3543 +{
3544 +  .text :
3545 +  {
3546 +    __text_start = .;
3547 +    *(.text)
3548 +
3549 +    . = ALIGN(0x4);
3550 +    *(.rodata)
3551 +
3552 +    . = ALIGN(0x4);
3553 +    *(.gcc_except_table) 
3554 +
3555 +    . = ALIGN(0x4);
3556 +    *(.eh_frame)
3557 +
3558 +    . = ALIGN(0x4);
3559 +    *(.lit)
3560 +
3561 +    . = ALIGN(0x4);
3562 +    input_data = .;
3563 +    image.o
3564 +    input_data_end = .;
3565 +
3566 +    . = ALIGN(0x4);
3567 +    __text_end = .;
3568 +  } > rom
3569 +
3570 +  .data : AT(__text_end)
3571 +   {
3572 +    . = ALIGN (0x4);
3573 +    __data_start = .;
3574 +
3575 +    *(.shdata)
3576 +    *(.data)
3577 +    *(.gcc_exc)
3578 +
3579 +    . = ALIGN (0x4);
3580 +    __data_end = .;
3581 +   } > ram
3582 +
3583 +  .bss :
3584 +  {
3585 +    . = ALIGN(0x4);
3586 +    __bss_start = . ;
3587 +
3588 +    *(.shbss)
3589 +    *(.bss)
3590 +    *(COMMON)
3591 +
3592 +    . = ALIGN(0x4);
3593 +    __bss_end = .;
3594 +    _end = .;
3595 +  } > ram
3596 +
3597 +  .stab 0 (NOLOAD) :
3598 +  {
3599 +    *(.stab)
3600 +  }
3601 +
3602 +  .stabstr 0 (NOLOAD) :
3603 +  {
3604 +    *(.stabstr)
3605 +  }
3606 +}
3607 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/main.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/main.c
3608 --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/main.c 1970-01-01 10:00:00.000000000 +1000
3609 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/main.c     2003-10-20 09:11:56.247761864 +1000
3610 @@ -0,0 +1,32 @@
3611 +
3612 +/*
3613 + *  linux/arch/m68knommu/platform/MC68VZ328/de2/zimage/main.c
3614 + *
3615 + *  Copyright (C) 2002 Georges Menie
3616 + *
3617 + * This file is subject to the terms and conditions of the GNU General Public
3618 + * License.  See the file COPYING in the main directory of this archive
3619 + * for more details.
3620 + */
3621 +
3622 +extern unsigned char input_data[];
3623 +extern unsigned char input_data_end[];
3624 +extern unsigned char output_data[];
3625 +
3626 +void outstring (char *s)
3627 +{
3628 +       extern void putc (int);
3629 +
3630 +       while (*s)
3631 +               putc (*s++);
3632 +}
3633 +
3634 +void unzip_image (void)
3635 +{
3636 +       void memgunzip (unsigned char *dst, const unsigned char *src,
3637 +                                       unsigned int sz);
3638 +
3639 +       outstring ("Uncompressing Linux");
3640 +       memgunzip (output_data, input_data, input_data_end - input_data);
3641 +       outstring ("\r\nOk, booting the kernel.\r\n");
3642 +}
3643 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/Makefile linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/Makefile
3644 --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/Makefile       1970-01-01 10:00:00.000000000 +1000
3645 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/Makefile   2003-10-20 09:11:56.247761864 +1000
3646 @@ -0,0 +1,46 @@
3647 +
3648 +# Runtime parameters
3649 +UNZIP_ADDRESS := $(shell [ -f $(ROOTDIR)/$(LINUXDIR)/System.map ] && grep ' _stext$$' $(ROOTDIR)/$(LINUXDIR)/System.map | cut -d' ' -f1)
3650 +START_ADDRESS := $(shell [ -f $(ROOTDIR)/$(LINUXDIR)/System.map ] && grep ' _start$$' $(ROOTDIR)/$(LINUXDIR)/System.map | cut -d' ' -f1)
3651 +
3652 +# Compiler and associated tools filenames.
3653 +CC = $(CROSS_COMPILE)gcc
3654 +LD = $(CROSS_COMPILE)ld
3655 +OBJCOPY = $(CROSS_COMPILE)objcopy
3656 +
3657 +# Flags.
3658 +AFLAGS = -m68000 -Wall -I$(ROOTDIR)/$(LINUXDIR)/include
3659 +CFLAGS = -m68000 -Wall -O2 --omit-frame-pointer -I$(ROOTDIR)/$(LINUXDIR)/include
3660 +LFLAGS = -m68000 -nostdlib -Wl,-Map=$(basename $@).map
3661 +
3662 +#
3663 +# Targets
3664 +#
3665 +
3666 +OBJECTS = \
3667 +       main.o \
3668 +       misc.o
3669 +
3670 +all: $(IMAGEDIR)/zImage.bin
3671 +
3672 +crt0.o: crt0.S
3673 +       $(CC) $(AFLAGS) -o $@ -c $+
3674 +
3675 +image.o: $(IMAGEDIR)/image.bin
3676 +       tmpimage=_tmp_$$$$image; \
3677 +       cat $+ | gzip -f -9 > $$tmpimage; \
3678 +       $(LD) -r -o $@ -b binary $$tmpimage; \
3679 +       rm -f $$tmpimage
3680 +
3681 +$(IMAGEDIR)/zImage.bin: crt0.o image.o ${OBJECTS}
3682 +       tmpprog=_tmp_$$$$prog; \
3683 +       tmplnk=_tmp_$$$$lnk; \
3684 +       cp image.ld $$tmplnk; \
3685 +       echo "PROVIDE (output_data = 0x$(UNZIP_ADDRESS));" >> $$tmplnk; \
3686 +       echo "PROVIDE (start_image = 0x$(START_ADDRESS));" >> $$tmplnk; \
3687 +       $(CC) $(LFLAGS) -T $$tmplnk -o $$tmpprog ${OBJECTS}; \
3688 +       $(OBJCOPY) -O binary -j .text -j .data $$tmpprog $@; \
3689 +       rm -f $$tmpprog $$tmplnk
3690 +
3691 +clean:
3692 +       rm -f *.o _tmp_*
3693 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/misc.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/misc.c
3694 --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/de2/zimage/misc.c 1970-01-01 10:00:00.000000000 +1000
3695 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/de2/zimage/misc.c     2003-10-20 09:11:56.248761712 +1000
3696 @@ -0,0 +1,151 @@
3697 +
3698 +/*
3699 + *  linux/arch/m68knommu/platform/MC68VZ328/de2/zimage/misc.c
3700 + *
3701 + *  Copyright (C) 2002 Georges Menie
3702 + *
3703 + * This file is subject to the terms and conditions of the GNU General Public
3704 + * License.  See the file COPYING in the main directory of this archive
3705 + * for more details.
3706 + *
3707 + * gunzip wrapper based on :
3708 + *
3709 + * arch/sh/boot/compressed/misc.c
3710 + * 
3711 + * This is a collection of several routines from gzip-1.0.3 
3712 + * adapted for Linux.
3713 + *
3714 + * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
3715 + *
3716 + * Adapted for SH by Stuart Menefy, Aug 1999
3717 + *
3718 + * Modified to use standard LinuxSH BIOS by Greg Banks 7Jul2000
3719 + */
3720 +
3721 +/*
3722 + * gzip declarations
3723 + */
3724 +
3725 +#define NULL 0
3726 +
3727 +#define OF(args)  args
3728 +#define STATIC static
3729 +
3730 +#define memzero(s, n)     memset ((s), 0, (n))
3731 +
3732 +void outstring (const char *);
3733 +void exit (int);
3734 +
3735 +typedef unsigned char uch;
3736 +typedef unsigned short ush;
3737 +typedef unsigned long ulg;
3738 +
3739 +#define WSIZE 0x8000                   /* Window size must be at least 32k, */
3740 +                                                               /* and a power of two */
3741 +
3742 +static uch window[WSIZE];              /* Sliding window buffer */
3743 +
3744 +static ulg inptr = 0;                  /* index of next byte to be processed in inbuf */
3745 +static ulg outcnt = 0;                 /* bytes in output buffer */
3746 +static ulg bytes_out = 0;
3747 +
3748 +/* Diagnostic functions */
3749 +#define Assert(cond,msg)
3750 +#define Trace(x)
3751 +#define Tracev(x)
3752 +#define Tracevv(x)
3753 +#define Tracec(c,x)
3754 +#define Tracecv(c,x)
3755 +
3756 +static void flush_window (void);
3757 +static void *malloc (int size);
3758 +static void free (void *where);
3759 +static void error (char *m);
3760 +static void gzip_mark (void **);
3761 +static void gzip_release (void **);
3762 +
3763 +static const unsigned char *data_in;
3764 +static unsigned char *data_out;
3765 +static unsigned int data_in_len;
3766 +
3767 +#define get_byte() ((inptr < data_in_len)?data_in[inptr++]:(error("ran out of input data\n"),0))
3768 +#define put_byte(c) *data_out++ = c
3769 +
3770 +#include "../../../../../../lib/inflate.c"
3771 +
3772 +#define HEAPSIZE (24*1024)
3773 +static unsigned char heap[HEAPSIZE];
3774 +static unsigned char *free_mem_ptr = heap;
3775 +
3776 +static void *malloc (int size)
3777 +{
3778 +       void *p;
3779 +
3780 +       if (size < 0)
3781 +               error ("Malloc error\n");
3782 +       if (free_mem_ptr == 0)
3783 +               error ("Memory error\n");
3784 +
3785 +       free_mem_ptr = (unsigned char *) (((unsigned long) free_mem_ptr + 3) & ~3);     /* Align */
3786 +
3787 +       p = free_mem_ptr;
3788 +       free_mem_ptr += size;
3789 +
3790 +       if (free_mem_ptr >= &heap[HEAPSIZE])
3791 +               error ("\nOut of memory\n");
3792 +
3793 +       return p;
3794 +}
3795 +
3796 +static void free (void *where)
3797 +{                                                              /* Don't care */
3798 +}
3799 +
3800 +static void gzip_mark (void **ptr)
3801 +{
3802 +       *ptr = free_mem_ptr;
3803 +}
3804 +
3805 +static void gzip_release (void **ptr)
3806 +{
3807 +       free_mem_ptr = *ptr;
3808 +}
3809 +
3810 +/* ===========================================================================
3811 + * Write the output window window[0..outcnt-1] and update crc and bytes_out.
3812 + * (Used for the decompressed data only.)
3813 + */
3814 +static void flush_window (void)
3815 +{
3816 +       ulg c = crc;                            /* temporary variable */
3817 +       unsigned n;
3818 +       uch *in, ch;
3819 +
3820 +       in = window;
3821 +       for (n = 0; n < outcnt; n++) {
3822 +               ch = *in++;
3823 +               put_byte (ch);
3824 +               c = crc_32_tab[((int) c ^ ch) & 0xff] ^ (c >> 8);
3825 +       }
3826 +       crc = c;
3827 +       bytes_out += outcnt;
3828 +       outcnt = 0;
3829 +       outstring (".");
3830 +}
3831 +
3832 +static void error (char *x)
3833 +{
3834 +       outstring ("\r\n\r\n");
3835 +       outstring (x);
3836 +       outstring ("\r\n\r\n -- System halted\r\n");
3837 +       exit (1);
3838 +}
3839 +
3840 +void memgunzip (unsigned char *dst, const unsigned char *src, unsigned int sz)
3841 +{
3842 +       data_out = dst;
3843 +       data_in = src;
3844 +       data_in_len = sz;
3845 +       makecrc ();
3846 +       gunzip ();
3847 +}
3848 diff -Naur linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/ucdimm/config.c linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/ucdimm/config.c
3849 --- linux-2.6.0-test8/arch/m68knommu/platform/68VZ328/ucdimm/config.c   2003-10-20 09:10:57.662668152 +1000
3850 +++ linux-2.6.0-test8-uc0/arch/m68knommu/platform/68VZ328/ucdimm/config.c       2003-10-20 09:11:56.251761256 +1000
3851 @@ -99,11 +99,11 @@
3852  {
3853         unsigned char *p;
3854  
3855 -       printk("\n68VZ328 DragonBallVZ support (c) 2001 Lineo, Inc.\n");
3856 +       printk(KERN_INFO "\n68VZ328 DragonBallVZ support (c) 2001 Lineo, Inc.\n");
3857  
3858 -       printk("uCdimm serial string [%s]\n",getserialnum());
3859 +       printk(KERN_INFO "uCdimm serial string [%s]\n",getserialnum());
3860         p = cs8900a_hwaddr = gethwaddr(0);
3861 -       printk("uCdimm hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
3862 +       printk(KERN_INFO "uCdimm hwaddr %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
3863                 p[0], p[1], p[2], p[3], p[4], p[5]);
3864         p = getbenv("APPEND");
3865         if (p) strcpy(p,command);
3866 diff -Naur linux-2.6.0-test8/drivers/mtd/maps/se4000.c linux-2.6.0-test8-uc0/drivers/mtd/maps/se4000.c
3867 --- linux-2.6.0-test8/drivers/mtd/maps/se4000.c 1970-01-01 10:00:00.000000000 +1000
3868 +++ linux-2.6.0-test8-uc0/drivers/mtd/maps/se4000.c     2003-10-20 09:12:24.267502216 +1000
3869 @@ -0,0 +1,141 @@
3870 +/****************************************************************************/
3871 +
3872 +/*
3873 + *     se4000.c -- MTD map driver for SnapGear SE4000 platform
3874 + *
3875 + *     (C) Copyright 2003,  Greg Ungerer <gerg@snapgear.com>
3876 + */
3877 +
3878 +/****************************************************************************/
3879 +
3880 +#include <linux/module.h>
3881 +#include <linux/types.h>
3882 +#include <linux/kernel.h>
3883 +#include <linux/string.h>
3884 +#include <linux/notifier.h>
3885 +#include <linux/init.h>
3886 +#include <linux/reboot.h>
3887 +#include <linux/mtd/mtd.h>
3888 +#include <linux/mtd/map.h>
3889 +#include <linux/mtd/partitions.h>
3890 +#include <linux/mtd/cfi.h>
3891 +#include <linux/ioport.h>
3892 +#include <asm/io.h>
3893 +
3894 +/****************************************************************************/
3895 +
3896 +static struct map_info se4000_map = {
3897 +       .name =         "SnapGear SE4000 Flash",
3898 +       .buswidth =     2,
3899 +       .phys =         0x50000000,
3900 +       .size =         0x01000000,
3901 +};
3902 +
3903 +static struct mtd_partition *parsed_parts;
3904 +
3905 +/****************************************************************************/
3906 +
3907 +#ifdef CONFIG_MTD_CFI_INTELEXT
3908 +/*
3909 + * Set the Intel flash back to read mode as MTD may leave it in command mode.
3910 + */
3911 +
3912 +static int se4000_reboot_notifier(
3913 +       struct notifier_block *nb,
3914 +       unsigned long val,
3915 +       void *v)
3916 +{
3917 +       struct cfi_private *cfi = se4000_map.fldrv_priv;
3918 +       int i;
3919 +       
3920 +       for (i = 0; cfi && i < cfi->numchips; i++)
3921 +               cfi_send_gen_cmd(0xff, 0x55, cfi->chips[i].start, &se4000_map,
3922 +                       cfi, cfi->device_type, NULL);
3923 +
3924 +       return NOTIFY_OK;
3925 +}
3926 +
3927 +static struct notifier_block se4000_notifier_block = {
3928 +       se4000_reboot_notifier, NULL, 0
3929 +};
3930 +
3931 +#endif
3932 +
3933 +
3934 +/****************************************************************************/
3935 +
3936 +static struct mtd_info *se4000_mtd;
3937 +static const char *probes[] = { "RedBoot", NULL };
3938 +
3939 +/****************************************************************************/
3940 +
3941 +static void se4000_exit(void)
3942 +{
3943 +    if (se4000_mtd) {
3944 +       del_mtd_partitions(se4000_mtd);
3945 +       map_destroy(se4000_mtd);
3946 +    }
3947 +    if (se4000_map.virt)
3948 +       iounmap((void *)se4000_map.virt);
3949 +  
3950 +    if (parsed_parts)
3951 +       kfree(parsed_parts);
3952 +
3953 +    /* Disable flash write */
3954 +    *IXP425_EXP_CS0 &= ~IXP425_FLASH_WRITABLE;
3955 +}
3956 +
3957 +/****************************************************************************/
3958 +
3959 +static int __init se4000_init(void)
3960 +{
3961 +    int res, npart;
3962 +
3963 +    /* Enable flash write */
3964 +    *IXP425_EXP_CS0 |= IXP425_FLASH_WRITABLE;
3965 +
3966 +    se4000_map.virt = (unsigned long) ioremap(se4000_map.phys, se4000_map.size);
3967 +    if (!se4000_map.virt) {
3968 +       printk(KERN_ERR "SE4000: ioremap(%x) failed\n", (int)se4000_map.phys);
3969 +       res = -EIO;
3970 +       goto Error;
3971 +    }
3972 +
3973 +    /* Probe for the CFI complaint chip */
3974 +    se4000_mtd = do_map_probe("cfi_probe", &se4000_map);
3975 +    if (!se4000_mtd) {
3976 +       res = -ENXIO;
3977 +       goto Error;
3978 +    }
3979 +    se4000_mtd->owner = THIS_MODULE;
3980 +   
3981 +    /* Try to parse RedBoot partitions */
3982 +    npart = parse_mtd_partitions(se4000_mtd, probes, &parsed_parts, 0);
3983 +    if (npart > 0) {
3984 +       /* found "npart" RedBoot partitions */
3985 +       res = add_mtd_partitions(se4000_mtd, parsed_parts, npart);
3986 +    } else {
3987 +       res = -EIO;
3988 +    }
3989 +
3990 +    if (res)
3991 +       goto Error;
3992 +
3993 +#ifdef CONFIG_MTD_CFI_INTELEXT
3994 +       register_reboot_notifier(&se4000_notifier_block);
3995 +#endif
3996 +
3997 +    return res;
3998 +Error:
3999 +    se4000_exit();
4000 +    return res;
4001 +}
4002 +
4003 +/****************************************************************************/
4004 +
4005 +module_init(se4000_init);
4006 +module_exit(se4000_exit);
4007 +
4008 +MODULE_DESCRIPTION("MTD map driver for SnapGear SE4000");
4009 +
4010 +/****************************************************************************/
4011 diff -Naur linux-2.6.0-test8/drivers/mtd/maps/uclinux.c linux-2.6.0-test8-uc0/drivers/mtd/maps/uclinux.c
4012 --- linux-2.6.0-test8/drivers/mtd/maps/uclinux.c        2003-10-20 09:10:46.000000000 +1000
4013 +++ linux-2.6.0-test8-uc0/drivers/mtd/maps/uclinux.c    2003-10-20 09:12:24.281500088 +1000
4014 @@ -5,7 +5,7 @@
4015   *
4016   *     (C) Copyright 2002, Greg Ungerer (gerg@snapgear.com)
4017   *
4018 - *     $Id$
4019 + *     $Id$
4020   */
4021  
4022  /****************************************************************************/
4023 @@ -17,6 +17,7 @@
4024  #include <linux/kernel.h>
4025  #include <linux/fs.h>
4026  #include <linux/major.h>
4027 +#include <linux/root_dev.h>
4028  #include <linux/mtd/mtd.h>
4029  #include <linux/mtd/map.h>
4030  #include <linux/mtd/partitions.h>
4031 @@ -59,10 +60,16 @@
4032         struct mtd_info *mtd;
4033         struct map_info *mapp;
4034         extern char _ebss;
4035 +       unsigned long addr = (unsigned long) &_ebss;
4036 +
4037 +#ifdef CONFIG_PILOT
4038 +       extern char _etext, _sdata, __init_end;
4039 +       addr = (unsigned long) (&_etext + (&__init_end - &_sdata));
4040 +#endif
4041  
4042         mapp = &uclinux_ram_map;
4043 -       mapp->phys = (unsigned long) &_ebss;
4044 -       mapp->size = PAGE_ALIGN(*((unsigned long *)((&_ebss) + 8)));
4045 +       mapp->phys = addr;
4046 +       mapp->size = PAGE_ALIGN(*((unsigned long *)(addr + 8)));
4047         mapp->buswidth = 4;
4048  
4049         printk("uclinux[mtd]: RAM probe address=0x%x size=0x%x\n",
4050 @@ -95,7 +102,6 @@
4051         printk("uclinux[mtd]: set %s to be root filesystem\n",
4052                 uclinux_romfs[0].name);
4053         ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, 0);
4054 -       put_mtd_device(mtd);
4055  
4056         return(0);
4057  }
4058 diff -Naur linux-2.6.0-test8/drivers/net/fec.c linux-2.6.0-test8-uc0/drivers/net/fec.c
4059 --- linux-2.6.0-test8/drivers/net/fec.c 2003-10-20 09:10:28.000000000 +1000
4060 +++ linux-2.6.0-test8-uc0/drivers/net/fec.c     2003-10-20 09:12:25.475318600 +1000
4061 @@ -18,7 +18,7 @@
4062   * Much better multiple PHY support by Magnus Damm.
4063   * Copyright (c) 2000 Ericsson Radio Systems AB.
4064   *
4065 - * Support for FEC controller of ColdFire/5272.
4066 + * Support for FEC controller of ColdFire/5272/5282.
4067   * Copyrught (c) 2001-2002 Greg Ungerer (gerg@snapgear.com)
4068   */
4069  
4070 @@ -46,7 +46,7 @@
4071  #include <asm/io.h>
4072  #include <asm/pgtable.h>
4073  
4074 -#ifdef CONFIG_M5272
4075 +#if defined(CONFIG_M5272) || defined(CONFIG_M5282)
4076  #include <asm/coldfire.h>
4077  #include <asm/mcfsim.h>
4078  #include "fec.h"
4079 @@ -62,13 +62,16 @@
4080  /*
4081   * Define the fixed address of the FEC hardware.
4082   */
4083 -#ifdef CONFIG_M5272
4084 +#if defined(CONFIG_M5272)
4085  static volatile fec_t   *fec_hwp = (volatile fec_t *) (MCF_MBAR + 0x840);
4086  static ushort          my_enet_addr[] = { 0x00d0, 0xcf00, 0x0072 };
4087 +#elif defined(CONFIG_M5282)
4088 +static volatile fec_t   *fec_hwp = (volatile fec_t *) (MCF_MBAR + 0x1000);
4089 +static ushort          my_enet_addr[] = { 0x00d0, 0xcf00, 0x0082 };
4090  #else
4091  static volatile fec_t  *fec_hwp = &(((immap_t *)IMAP_ADDR)->im_cpm.cp_fec)
4092  static ushort          my_enet_addr[3];
4093 -#endif /* CONFIG_M5272 */
4094 +#endif
4095  
4096  /*
4097   * Some hardware gets it MAC address out of local flash memory.
4098 @@ -299,6 +302,24 @@
4099         bdp->cbd_bufaddr = __pa(skb->data);
4100         bdp->cbd_datlen = skb->len;
4101  
4102 +#ifdef CONFIG_M5282
4103 +       /*
4104 +        *      The FEC on the 5282 must have its buffers alligned on
4105 +        *      4 byte boundaries. Bugger. Copy the skbuf contents in
4106 +        *      place so they start on a 4 byte boundary.
4107 +        */
4108 +       if (bdp->cbd_bufaddr & 0x2) {
4109 +               int i;
4110 +               unsigned char *src = (unsigned char *) bdp->cbd_bufaddr;
4111 +               unsigned char *dst = (unsigned char *) bdp->cbd_bufaddr;
4112 +               src += bdp->cbd_datlen;
4113 +               dst += bdp->cbd_datlen + 2;
4114 +               for (i = bdp->cbd_datlen-1; (i >= 0); i--)
4115 +                       *--dst = *--src;
4116 +               bdp->cbd_bufaddr = (int) dst;
4117 +       }
4118 +#endif
4119 +
4120         /* Save skb pointer.
4121         */
4122         fep->tx_skbuff[fep->skb_cur] = skb;
4123 @@ -407,10 +428,13 @@
4124         */
4125         while ((int_events = fecp->fec_ievent) != 0) {
4126                 fecp->fec_ievent = int_events;
4127 +
4128 +#ifndef CONFIG_M5282
4129                 if ((int_events & (FEC_ENET_HBERR | FEC_ENET_BABR |
4130                                    FEC_ENET_BABT | FEC_ENET_EBERR)) != 0) {
4131                         printk("FEC ERROR %x\n", int_events);
4132                 }
4133 +#endif
4134  
4135                 /* Handle receive event in its own function.
4136                  */
4137 @@ -1040,14 +1064,15 @@
4138  
4139  /* ------------------------------------------------------------------------- */
4140  
4141 -static void
4142  #ifdef CONFIG_RPXCLASSIC
4143 +static void
4144  mii_link_interrupt(void *dev_id);
4145  #else
4146 +static irqreturn_t
4147  mii_link_interrupt(int irq, void * dev_id, struct pt_regs * regs);
4148  #endif
4149  
4150 -#ifdef CONFIG_M5272
4151 +#if defined(CONFIG_M5272)
4152  
4153  /*
4154   *     Code specific to Coldfire 5272 setup.
4155 @@ -1151,6 +1176,143 @@
4156  
4157  /* ------------------------------------------------------------------------- */
4158  
4159 +#elif defined(CONFIG_M5282)
4160 +
4161 +/*
4162 + *     Code specific to Coldfire 5282 setup.
4163 + */
4164 +static void __inline__ fec_request_intrs(struct net_device *dev, volatile fec_t *fecp)
4165 +{
4166 +       /* Setup interrupt handlers. */
4167 +       if (request_irq(64+23, fec_enet_interrupt, 0, "fec(TXF)", dev) != 0)
4168 +               printk("FEC: Could not allocate FEC(TXF) IRQ(64+23)!\n");
4169 +       if (request_irq(64+24, fec_enet_interrupt, 0, "fec(TXB)", dev) != 0)
4170 +               printk("FEC: Could not allocate FEC(TXB) IRQ(64+24)!\n");
4171 +       if (request_irq(64+25, fec_enet_interrupt, 0, "fec(TXFIFO)", dev) != 0)
4172 +               printk("FEC: Could not allocate FEC(TXFIFO) IRQ(64+25)!\n");
4173 +       if (request_irq(64+26, fec_enet_interrupt, 0, "fec(TXCR)", dev) != 0)
4174 +               printk("FEC: Could not allocate FEC(TXCR) IRQ(64+26)!\n");
4175 +
4176 +       if (request_irq(64+27, fec_enet_interrupt, 0, "fec(RXF)", dev) != 0)
4177 +               printk("FEC: Could not allocate FEC(RXF) IRQ(64+27)!\n");
4178 +       if (request_irq(64+28, fec_enet_interrupt, 0, "fec(RXB)", dev) != 0)
4179 +               printk("FEC: Could not allocate FEC(RXB) IRQ(64+28)!\n");
4180 +
4181 +       if (request_irq(64+29, fec_enet_interrupt, 0, "fec(MII)", dev) != 0)
4182 +               printk("FEC: Could not allocate FEC(MII) IRQ(64+29)!\n");
4183 +       if (request_irq(64+30, fec_enet_interrupt, 0, "fec(LC)", dev) != 0)
4184 +               printk("FEC: Could not allocate FEC(LC) IRQ(64+30)!\n");
4185 +       if (request_irq(64+31, fec_enet_interrupt, 0, "fec(HBERR)", dev) != 0)
4186 +               printk("FEC: Could not allocate FEC(HBERR) IRQ(64+31)!\n");
4187 +       if (request_irq(64+32, fec_enet_interrupt, 0, "fec(GRA)", dev) != 0)
4188 +               printk("FEC: Could not allocate FEC(GRA) IRQ(64+32)!\n");
4189 +       if (request_irq(64+33, fec_enet_interrupt, 0, "fec(EBERR)", dev) != 0)
4190 +               printk("FEC: Could not allocate FEC(EBERR) IRQ(64+33)!\n");
4191 +       if (request_irq(64+34, fec_enet_interrupt, 0, "fec(BABT)", dev) != 0)
4192 +               printk("FEC: Could not allocate FEC(BABT) IRQ(64+34)!\n");
4193 +       if (request_irq(64+35, fec_enet_interrupt, 0, "fec(BABR)", dev) != 0)
4194 +               printk("FEC: Could not allocate FEC(BABR) IRQ(64+35)!\n");
4195 +
4196 +       /* Unmask interrupts at ColdFire 5282 interrupt controller */
4197 +       {
4198 +               volatile unsigned char  *icrp;
4199 +               volatile unsigned long  *imrp;
4200 +               int i;
4201 +
4202 +               icrp = (volatile unsigned char *) (MCF_IPSBAR + MCFICM_INTC0 +
4203 +                       MCFINTC_ICR0);
4204 +               for (i = 23; (i < 36); i++)
4205 +                       icrp[i] = 0x23;
4206 +
4207 +               imrp = (volatile unsigned long *) (MCF_IPSBAR + MCFICM_INTC0 +
4208 +                       MCFINTC_IMRH);
4209 +               *imrp &= ~0x0000000f;
4210 +               imrp = (volatile unsigned long *) (MCF_IPSBAR + MCFICM_INTC0 +
4211 +                       MCFINTC_IMRL);
4212 +               *imrp &= ~0xff800001;
4213 +       }
4214 +
4215 +       /* Set up gpio outputs for MII lines */
4216 +       {
4217 +               volatile unsigned short *gpio_paspar;
4218 +  
4219 +               gpio_paspar = (volatile unsigned short *) (MCF_IPSBAR +
4220 +                       0x100056);
4221 +               *gpio_paspar = 0x0f00;
4222 +       }
4223 +}
4224 +
4225 +static void __inline__ fec_set_mii(struct net_device *dev, struct fec_enet_private *fep)
4226 +{
4227 +       volatile fec_t *fecp;
4228 +       fecp = fec_hwp;
4229 +
4230 +       fecp->fec_r_cntrl = 0x04;
4231 +       fecp->fec_x_cntrl = 0x00;
4232 +
4233 +       /* Set MII speed to 2.5 MHz
4234 +       */
4235 +       fecp->fec_mii_speed = fep->phy_speed = 0x0e;
4236 +
4237 +       fec_restart(dev, 0);
4238 +}
4239 +
4240 +static void __inline__ fec_get_mac(struct net_device *dev, struct fec_enet_private *fep)
4241 +{
4242 +       volatile fec_t *fecp;
4243 +       unsigned char *eap, *iap, tmpaddr[6];
4244 +       int i;
4245 +
4246 +       fecp = fec_hwp;
4247 +       eap = (unsigned char *) my_enet_addr;
4248 +
4249 +       if (fec_flashmac) {
4250 +               /*
4251 +                * Get MAC address from FLASH.
4252 +                * If it is all 1's or 0's, use the default.
4253 +                */
4254 +               iap = fec_flashmac;
4255 +               if ((iap[0] == 0) && (iap[1] == 0) && (iap[2] == 0) &&
4256 +                   (iap[3] == 0) && (iap[4] == 0) && (iap[5] == 0))
4257 +                       iap = eap;
4258 +               if ((iap[0] == 0xff) && (iap[1] == 0xff) && (iap[2] == 0xff) &&
4259 +                   (iap[3] == 0xff) && (iap[4] == 0xff) && (iap[5] == 0xff))
4260 +                       iap = eap;
4261 +       } else {
4262 +               *((unsigned long *) &tmpaddr[0]) = fecp->fec_addr_low;
4263 +               *((unsigned short *) &tmpaddr[4]) = (fecp->fec_addr_high >> 16);
4264 +               iap = &tmpaddr[0];
4265 +       }
4266 +
4267 +       for (i=0; i<6; i++)
4268 +               dev->dev_addr[i] = *eap++ = *iap++;
4269 +}
4270 +
4271 +static void __inline__ fec_enable_phy_intr(void)
4272 +{
4273 +}
4274 +
4275 +static void __inline__ fec_disable_phy_intr(void)
4276 +{
4277 +}
4278 +
4279 +static void __inline__ fec_phy_ack_intr(void)
4280 +{
4281 +}
4282 +
4283 +static void __inline__ fec_localhw_setup(void)
4284 +{
4285 +}
4286 +
4287 +/*
4288 + *     Do not need to make region uncached on 5272.
4289 + */
4290 +static void __inline__ fec_uncache(unsigned long addr)
4291 +{
4292 +}
4293 +
4294 +/* ------------------------------------------------------------------------- */
4295 +
4296  #else
4297  
4298  /*
4299 @@ -1458,14 +1620,15 @@
4300  
4301  /* This interrupt occurs when the PHY detects a link change.
4302  */
4303 -static void
4304  #ifdef CONFIG_RPXCLASSIC
4305 +static void
4306  mii_link_interrupt(void *dev_id)
4307  #else
4308 +static irqreturn_t
4309  mii_link_interrupt(int irq, void * dev_id, struct pt_regs * regs)
4310  #endif
4311  {
4312 -       struct  net_device *dev = dev_id;
4313 +       struct net_device *dev = dev_id;
4314         struct fec_enet_private *fep = dev->priv;
4315  
4316         fec_phy_ack_intr();
4317 @@ -1477,6 +1640,7 @@
4318         mii_do_cmd(dev, fep->phy->ack_int);
4319         mii_do_cmd(dev, phy_cmd_relink);  /* restart and display status */
4320  
4321 +       return IRQ_HANDLED;
4322  }
4323  
4324  static int
4325 diff -Naur linux-2.6.0-test8/drivers/net/Kconfig linux-2.6.0-test8-uc0/drivers/net/Kconfig
4326 --- linux-2.6.0-test8/drivers/net/Kconfig       2003-10-20 09:10:30.000000000 +1000
4327 +++ linux-2.6.0-test8-uc0/drivers/net/Kconfig   2003-10-20 09:12:24.802420896 +1000
4328 @@ -722,7 +722,7 @@
4329  
4330  config NET_VENDOR_SMC
4331         bool "Western Digital/SMC cards"
4332 -       depends on NET_ETHERNET && (ISA || MCA || EISA || MAC)
4333 +       depends on NET_ETHERNET && (ISA || MCA || EISA || MAC || EMBEDDED)
4334         help
4335           If you have a network (Ethernet) card belonging to this class, say Y
4336           and read the Ethernet-HOWTO, available from
4337 @@ -794,7 +794,7 @@
4338  
4339  config SMC9194
4340         tristate "SMC 9194 support"
4341 -       depends on NET_VENDOR_SMC && (ISA || MAC && BROKEN)
4342 +       depends on NET_VENDOR_SMC && (ISA || MAC && BROKEN || EMBEDDED)
4343         select CRC32
4344         ---help---
4345           This is support for the SMC9xxx based Ethernet cards. Choose this
4346 diff -Naur linux-2.6.0-test8/drivers/net/smc9194.c linux-2.6.0-test8-uc0/drivers/net/smc9194.c
4347 --- linux-2.6.0-test8/drivers/net/smc9194.c     2003-10-20 09:10:30.000000000 +1000
4348 +++ linux-2.6.0-test8-uc0/drivers/net/smc9194.c 2003-10-20 09:12:25.833264184 +1000
4349 @@ -59,9 +59,11 @@
4350  
4351  #include <linux/module.h>
4352  #include <linux/kernel.h>
4353 +#include <linux/sched.h>
4354  #include <linux/types.h>
4355  #include <linux/fcntl.h>
4356  #include <linux/interrupt.h>
4357 +#include <linux/ptrace.h>
4358  #include <linux/ioport.h>
4359  #include <linux/in.h>
4360  #include <linux/slab.h>
4361 @@ -72,12 +74,46 @@
4362  #include <linux/netdevice.h>
4363  #include <linux/etherdevice.h>
4364  #include <linux/skbuff.h>
4365 +#include <linux/delay.h>
4366  
4367  #include <asm/bitops.h>
4368  #include <asm/io.h>
4369  
4370  #include "smc9194.h"
4371  
4372 +#ifdef CONFIG_M68EZ328
4373 +#include <asm/MC68EZ328.h>
4374 +#include <asm/irq.h>
4375 +#include <asm/mcfsmc.h>
4376 +unsigned char  smc_defethaddr[] = { 0x00, 0x10, 0x8b, 0xf1, 0xda, 0x01 };
4377 +#define NO_AUTOPROBE
4378 +#endif
4379 +
4380 +#ifdef CONFIG_COLDFIRE
4381 +#include <asm/coldfire.h>
4382 +#include <asm/mcfsim.h>
4383 +#include <asm/mcfsmc.h>
4384 +
4385 +unsigned char  smc_defethaddr[] = { 0x00, 0xd0, 0xcf, 0x00, 0x00, 0x01 };
4386 +
4387 +#define NO_AUTOPROBE
4388 +#endif
4389 +
4390 +#ifdef CONFIG_SH_KEYWEST
4391 +#include <asm/keywest.h>
4392 +#define NO_AUTOPROBE
4393 +#define PHY_SETUP
4394 +#endif
4395 +
4396 +#ifdef CONFIG_LEDMAN
4397 +#include <linux/ledman.h>
4398 +#endif
4399 +
4400 +#if defined(CONFIG_CPU_H8300H) || defined(CONFIG_CPU_H8S)
4401 +#include <asm/h8300_smsc.h>
4402 +#define NO_AUTOPROBE
4403 +#endif
4404 +
4405  /*------------------------------------------------------------------------
4406   .
4407   . Configuration options, for the experienced user to change.
4408 @@ -88,22 +124,59 @@
4409   . Do you want to use 32 bit xfers?  This should work on all chips, as
4410   . the chipset is designed to accommodate them.
4411  */
4412 -#ifdef __sh__
4413 +#if (defined(__sh__) && !defined(CONFIG_SH_KEYWEST)) || \
4414 +    defined(__H8300H__) || defined(__H8300S__)
4415  #undef USE_32_BIT
4416  #else
4417  #define USE_32_BIT 1
4418  #endif
4419  
4420  /*
4421 + .A typedef so we can change what IO looks like easily
4422 +*/
4423 +typedef unsigned int smcio_t;
4424 +
4425 +/*
4426   .the SMC9194 can be at any of the following port addresses.  To change,
4427   .for a slightly different card, you can add it to the array.  Keep in
4428   .mind that the array must end in zero.
4429  */
4430 +
4431 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) || \
4432 +       defined(CONFIG_SH_KEYWEST)
4433 +
4434 +#ifdef CONFIG_NETtel
4435 +static smcio_t smc_portlist[]      = { 0x30600300, 0x30600000, 0 };
4436 +static unsigned int smc_irqlist[]  = {         29,         27, 0 };
4437 +#elif defined(CONFIG_SH_KEYWEST)
4438 +static smcio_t smc_portlist[]      = { KEYWEST_ETHR, 0 };
4439 +static unsigned int smc_irqlist[]  = { IRQ4_IRQ,     0 };
4440 +#elif defined(CONFIG_M68EZ328)
4441 +/* make sure that you program Port D selects to allow the interrupts! */
4442 +static smcio_t smc_portlist[]      = { 0x2000300,    0x2000320,    0 };
4443 +static unsigned int smc_irqlist[]  = { IRQ1_IRQ_NUM, IRQ2_IRQ_NUM, 0 };
4444 +#elif defined(CONFIG_CLEOPATRA)
4445 +static unsigned int smc_portlist[] = { 0x30600300, 0 };
4446 +static unsigned int smc_irqlist[]  = {         29, 0 };
4447 +#else
4448 +static smcio_t smc_portlist[]      = { 0x30600300, 0 };
4449 +static unsigned int smc_irqlist[]  = {         27, 0 };
4450 +#endif
4451 +
4452 +#elif defined(CONFIG_BOARD_EDOSK2674)
4453 +static smcio_t smc_portlist[]      = { SMSC_BASE, 0 };
4454 +static unsigned int smc_irqlist[]  = { SMSC_IRQ, 0 };
4455 +#else
4456 +
4457  static unsigned int smc_portlist[] __initdata = { 
4458         0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0,
4459         0x300, 0x320, 0x340, 0x360, 0x380, 0x3A0, 0x3C0, 0x3E0, 0
4460  };
4461  
4462 +#endif
4463 +
4464 +static unsigned int smc_found[]    = {          0,          0, 0 };
4465 +
4466  /*
4467   . Wait time for memory to be free.  This probably shouldn't be
4468   . tuned that much, as waiting for this means nothing else happens
4469 @@ -257,7 +330,7 @@
4470   . Test if a given location contains a chip, trying to cause as
4471   . little damage as possible if it's not a SMC chip.
4472  */
4473 -static int smc_probe(struct net_device *dev, int ioaddr);
4474 +static int smc_probe(struct net_device *dev, smcio_t ioaddr);
4475  
4476  /*
4477   . A rather simple routine to print out a packet for debugging purposes.
4478 @@ -278,20 +351,31 @@
4479  static int  smc_wait_to_send_packet( struct sk_buff * skb, struct net_device *dev );
4480  
4481  /* this does a soft reset on the device */
4482 -static void smc_reset( int ioaddr );
4483 +static void smc_reset( smcio_t ioaddr );
4484  
4485  /* Enable Interrupts, Receive, and Transmit */
4486 -static void smc_enable( int ioaddr );
4487 +static void smc_enable( smcio_t ioaddr );
4488  
4489  /* this puts the device in an inactive state */
4490 -static void smc_shutdown( int ioaddr );
4491 +static void smc_shutdown( smcio_t ioaddr );
4492  
4493 +#ifndef NO_AUTOPROBE
4494  /* This routine will find the IRQ of the driver if one is not
4495   . specified in the input to the device.  */
4496 -static int smc_findirq( int ioaddr );
4497 +static int smc_findirq( smcio_t ioaddr );
4498 +#endif
4499 +
4500 +#ifdef PHY_SETUP
4501 +static void clkmdio(smcio_t ioaddr, unsigned int MGMTData);
4502 +static unsigned PHYAccess(smcio_t ioaddr, unsigned char PHYAdd,
4503 +                               unsigned char RegAdd, unsigned char OPCode, unsigned wData);
4504 +static unsigned char DetectPHY(smcio_t ioaddr, unsigned long *OUI,
4505 +                                               unsigned char *Model, unsigned char *Revision);
4506 +static int setup_phy(smcio_t ioaddr);
4507 +#endif
4508  
4509  /*
4510 - . Function: smc_reset( int ioaddr )
4511 + . Function: smc_reset( smcio_t ioaddr )
4512   . Purpose:
4513   .     This sets the SMC91xx chip to its normal state, hopefully from whatever
4514   .     mess that any other DOS driver has put it in.
4515 @@ -307,7 +391,7 @@
4516   .     5.  clear all interrupts
4517   .
4518  */
4519 -static void smc_reset( int ioaddr )
4520 +static void smc_reset( smcio_t ioaddr )
4521  {
4522         /* This resets the registers mostly to defaults, but doesn't
4523            affect EEPROM.  That seems unnecessary */
4524 @@ -328,6 +412,10 @@
4525         SMC_SELECT_BANK( 1 );
4526         outw( inw( ioaddr + CONTROL ) | CTL_AUTO_RELEASE , ioaddr + CONTROL );
4527  
4528 +#if defined(CONFIG_LEDMAN) && defined(CONFIG_SNAPGEAR)
4529 +       outw( inw( ioaddr + CONTROL ) | CTL_LE_ENABLE , ioaddr + CONTROL );     
4530 +#endif
4531 +
4532         /* Reset the MMU */
4533         SMC_SELECT_BANK( 2 );
4534         outw( MC_RESET, ioaddr + MMU_CMD );
4535 @@ -336,7 +424,7 @@
4536            but this is a place where future chipsets _COULD_ break.  Be wary
4537            of issuing another MMU command right after this */
4538  
4539 -       outb( 0, ioaddr + INT_MASK );
4540 +       SMC_SET_INT( 0 );
4541  }
4542  
4543  /*
4544 @@ -347,7 +435,7 @@
4545   .     2.  Enable the receiver
4546   .     3.  Enable interrupts
4547  */
4548 -static void smc_enable( int ioaddr )
4549 +static void smc_enable( smcio_t ioaddr )
4550  {
4551         SMC_SELECT_BANK( 0 );
4552         /* see the header file for options in TCR/RCR NORMAL*/
4553 @@ -356,7 +444,7 @@
4554  
4555         /* now, enable interrupts */
4556         SMC_SELECT_BANK( 2 );
4557 -       outb( SMC_INTERRUPT_MASK, ioaddr + INT_MASK );
4558 +       SMC_SET_INT( SMC_INTERRUPT_MASK );
4559  }
4560  
4561  /*
4562 @@ -373,16 +461,21 @@
4563   .     the manual says that it will wake up in response to any I/O requests
4564   .     in the register space.   Empirical results do not show this working.
4565  */
4566 -static void smc_shutdown( int ioaddr )
4567 +static void smc_shutdown( smcio_t ioaddr )
4568  {
4569         /* no more interrupts for me */
4570         SMC_SELECT_BANK( 2 );
4571 -       outb( 0, ioaddr + INT_MASK );
4572 +       SMC_SET_INT( 0 );
4573  
4574         /* and tell the card to stay away from that nasty outside world */
4575         SMC_SELECT_BANK( 0 );
4576 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
4577 +       outw( RCR_CLEAR, ioaddr + RCR );
4578 +       outw( TCR_CLEAR, ioaddr + TCR );
4579 +#else
4580         outb( RCR_CLEAR, ioaddr + RCR );
4581         outb( TCR_CLEAR, ioaddr + TCR );
4582 +#endif /* CONFIG_COLDFIRE */
4583  #if 0
4584         /* finally, shut the chip down */
4585         SMC_SELECT_BANK( 1 );
4586 @@ -392,7 +485,7 @@
4587  
4588  
4589  /*
4590 - . Function: smc_setmulticast( int ioaddr, int count, dev_mc_list * adds )
4591 + . Function: smc_setmulticast( smcio_t ioaddr, int count, dev_mc_list * adds )
4592   . Purpose:
4593   .    This sets the internal hardware table to filter out unwanted multicast
4594   .    packets before they take up memory.
4595 @@ -409,7 +502,7 @@
4596  */
4597  
4598  
4599 -static void smc_setmulticast( int ioaddr, int count, struct dev_mc_list * addrs ) {
4600 +static void smc_setmulticast( smcio_t ioaddr, int count, struct dev_mc_list * addrs ) {
4601         int                     i;
4602         unsigned char           multicast_table[ 8 ];
4603         struct dev_mc_list      * cur_addr;
4604 @@ -442,11 +535,18 @@
4605         /* now, the table can be loaded into the chipset */
4606         SMC_SELECT_BANK( 3 );
4607  
4608 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
4609 +       for ( i = 0; i < 8 ; i += 2 ) {
4610 +               outw(((multicast_table[i+1]<<8)+(multicast_table[i])), ioaddr+MULTICAST1+i );
4611 +       }
4612 +#else
4613         for ( i = 0; i < 8 ; i++ ) {
4614                 outb( multicast_table[i], ioaddr + MULTICAST1 + i );
4615         }
4616 +#endif
4617  }
4618  
4619 +
4620  /*
4621   . Function: smc_wait_to_send_packet( struct sk_buff * skb, struct net_device * )
4622   . Purpose:
4623 @@ -466,7 +566,7 @@
4624  static int smc_wait_to_send_packet( struct sk_buff * skb, struct net_device * dev )
4625  {
4626         struct smc_local *lp    = (struct smc_local *)dev->priv;
4627 -       unsigned short ioaddr   = dev->base_addr;
4628 +       smcio_t ioaddr          = dev->base_addr;
4629         word                    length;
4630         unsigned short          numPages;
4631         word                    time_out;
4632 @@ -481,18 +581,18 @@
4633                 printk(CARDNAME": Bad Craziness - sent packet while busy.\n" );
4634                 return 1;
4635         }
4636 -       lp->saved_skb = skb;
4637  
4638         length = skb->len;
4639  
4640 -       if (length < ETH_ZLEN) {
4641 +       if(length < ETH_ZLEN) {
4642                 skb = skb_padto(skb, ETH_ZLEN);
4643 -               if (skb == NULL) {
4644 +               if(skb == NULL) {
4645                         netif_wake_queue(dev);
4646                         return 0;
4647                 }
4648                 length = ETH_ZLEN;
4649         }
4650 +       lp->saved_skb = skb;
4651                 
4652         /*
4653         ** The MMU wants the number of pages to be the number of 256 bytes
4654 @@ -538,7 +638,7 @@
4655                 status = inb( ioaddr + INTERRUPT );
4656                 if ( status & IM_ALLOC_INT ) {
4657                         /* acknowledge the interrupt */
4658 -                       outb( IM_ALLOC_INT, ioaddr + INTERRUPT );
4659 +                       SMC_ACK_INT( IM_ALLOC_INT );
4660                         break;
4661                 }
4662         } while ( -- time_out );
4663 @@ -580,7 +680,7 @@
4664         byte                    packet_no;
4665         struct sk_buff *        skb = lp->saved_skb;
4666         word                    length;
4667 -       unsigned short          ioaddr;
4668 +       smcio_t                 ioaddr;
4669         byte                    * buf;
4670  
4671         ioaddr = dev->base_addr;
4672 @@ -604,7 +704,11 @@
4673         }
4674  
4675         /* we have a packet address, so tell the card to use it */
4676 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
4677 +       outw( packet_no, ioaddr + PNR_ARR );
4678 +#else
4679         outb( packet_no, ioaddr + PNR_ARR );
4680 +#endif
4681  
4682         /* point to the beginning of the packet */
4683         outw( PTR_AUTOINC , ioaddr + POINTER );
4684 @@ -616,14 +720,23 @@
4685  
4686         /* send the packet length ( +6 for status, length and ctl byte )
4687            and the status word ( set to zeros ) */
4688 +
4689  #ifdef USE_32_BIT
4690 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
4691 +       outl(  (length +6 ) , ioaddr + DATA_1 );
4692 +#else
4693         outl(  (length +6 ) << 16 , ioaddr + DATA_1 );
4694 +#endif
4695  #else
4696         outw( 0, ioaddr + DATA_1 );
4697         /* send the packet length ( +6 for status words, length, and ctl*/
4698 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328) || defined(CONFIG_CPU_H8S)
4699 +       outw( (length+6) & 0xFFFF, ioaddr + DATA_1 );
4700 +#else
4701         outb( (length+6) & 0xFF,ioaddr + DATA_1 );
4702         outb( (length+6) >> 8 , ioaddr + DATA_1 );
4703  #endif
4704 +#endif
4705  
4706         /* send the actual data
4707          . I _think_ it's faster to send the longs first, and then
4708 @@ -635,7 +748,11 @@
4709  #ifdef USE_32_BIT
4710         if ( length & 0x2  ) {
4711                 outsl(ioaddr + DATA_1, buf,  length >> 2 );
4712 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
4713 +               outwd( *((word *)(buf + (length & 0xFFFFFFFC))),ioaddr +DATA_1);
4714 +#else
4715                 outw( *((word *)(buf + (length & 0xFFFFFFFC))),ioaddr +DATA_1);
4716 +#endif
4717         }
4718         else
4719                 outsl(ioaddr + DATA_1, buf,  length >> 2 );
4720 @@ -647,8 +764,12 @@
4721         if ( (length & 1) == 0 ) {
4722                 outw( 0, ioaddr + DATA_1 );
4723         } else {
4724 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
4725 +               outw( buf[length -1 ] | (0x20 << 8), ioaddr + DATA_1);
4726 +#else
4727                 outb( buf[length -1 ], ioaddr + DATA_1 );
4728                 outb( 0x20, ioaddr + DATA_1);
4729 +#endif
4730         }
4731  
4732         /* enable the interrupts */
4733 @@ -688,7 +809,12 @@
4734  int __init smc_init(struct net_device *dev)
4735  {
4736         int i;
4737 +#if defined(NO_AUTOPROBE)
4738         int base_addr = dev->base_addr;
4739 +#else
4740 +       /*  check for special auto-probe address */
4741 +       int base_addr = (dev && dev->base_addr != 0xffe0) ? dev->base_addr : 0;
4742 +#endif
4743  
4744         SET_MODULE_OWNER(dev);
4745  
4746 @@ -699,9 +825,22 @@
4747                 return -ENXIO;
4748  
4749         /* check every ethernet address */
4750 -       for (i = 0; smc_portlist[i]; i++)
4751 -               if (smc_probe(dev, smc_portlist[i]) == 0)
4752 +       for (i = 0; smc_portlist[i]; i++) {
4753 +#ifdef CONFIG_NETtel
4754 +               smc_remap(smc_portlist[i]);
4755 +#endif
4756 +#if defined(NO_AUTOPROBE)
4757 +               dev->irq = smc_irqlist[i];
4758 +               if (smc_found[i])
4759 +                       continue;
4760 +#endif
4761 +               if (smc_probe(dev, smc_portlist[i]) == 0) {
4762 +#if defined(NO_AUTOPROBE)
4763 +                       smc_found[i] = 1;
4764 +#endif
4765                         return 0;
4766 +               }
4767 +       }
4768  
4769         /* couldn't find anything */
4770         return -ENODEV;
4771 @@ -714,12 +853,20 @@
4772   . interrupt, so an auto-detect routine can detect it, and find the IRQ,
4773   ------------------------------------------------------------------------
4774  */
4775 -int __init smc_findirq( int ioaddr )
4776 +#ifndef NO_AUTOPROBE
4777 +int __init smc_findirq( smcio_t ioaddr )
4778  {
4779         int     timeout = 20;
4780         unsigned long cookie;
4781  
4782  
4783 +#if 0
4784 +       /* I have to do a STI() here, because this is called from
4785 +          a routine that does an CLI during this process, making it
4786 +          rather difficult to get interrupts for auto detection */
4787 +       sti();
4788 +#endif
4789 +
4790         cookie = probe_irq_on();
4791  
4792         /*
4793 @@ -731,7 +878,7 @@
4794  
4795         SMC_SELECT_BANK(2);
4796         /* enable ALLOCation interrupts ONLY */
4797 -       outb( IM_ALLOC_INT, ioaddr + INT_MASK );
4798 +       SMC_SET_INT( IM_ALLOC_INT );
4799  
4800         /*
4801          . Allocate 512 bytes of memory.  Note that the chip was just
4802 @@ -766,14 +913,21 @@
4803         SMC_DELAY();
4804  
4805         /* and disable all interrupts again */
4806 -       outb( 0, ioaddr + INT_MASK );
4807 +       SMC_SET_INT( 0 );
4808 +
4809 +#if 0
4810 +       /* clear hardware interrupts again, because that's how it
4811 +          was when I was called... */
4812 +       cli();
4813 +#endif
4814  
4815         /* and return what I found */
4816         return probe_irq_off(cookie);
4817  }
4818 +#endif /* NO_AUTOPROBE */
4819  
4820  /*----------------------------------------------------------------------
4821 - . Function: smc_probe( int ioaddr )
4822 + . Function: smc_probe( smcio_t ioaddr )
4823   .
4824   . Purpose:
4825   .     Tests to see if a given ioaddr points to an SMC9xxx chip.
4826 @@ -801,11 +955,17 @@
4827   . o  GRAB the region
4828   .-----------------------------------------------------------------
4829  */
4830 -static int __init smc_probe(struct net_device *dev, int ioaddr)
4831 +static int __init smc_probe(struct net_device *dev, smcio_t ioaddr)
4832  {
4833         int i, memory, retval;
4834         static unsigned version_printed;
4835         unsigned int bank;
4836 +#if defined(CONFIG_NETtel) || defined(CONFIG_eLIA) || defined(CONFIG_DISKtel) || defined(CONFIG_CLEOPATRA)
4837 +       static int nr = 0;
4838 +#endif
4839 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
4840 +       unsigned char *ep;
4841 +#endif
4842  
4843         const char *version_string;
4844         const char *if_string;
4845 @@ -817,9 +977,18 @@
4846         word memory_info_register;
4847         word memory_cfg_register;
4848  
4849 +#if !defined(CONFIG_COLDFIRE) && !defined(CONFIG_M68EZ328) && \
4850 +    !defined(CONFIG_CPU_H8300H) && !defined(CONFIG_CPU_H8S)
4851         /* Grab the region so that no one else tries to probe our ioports. */
4852         if (!request_region(ioaddr, SMC_IO_EXTENT, dev->name))
4853                 return -EBUSY;
4854 +#elif defined(CONFIG_COLDFIRE)
4855 +       /*
4856 +        *      We need to put the SMC into 68k mode.
4857 +        *      Do a write before anything else.
4858 +        */
4859 +       outw(0, ioaddr + BANK_SELECT);
4860 +#endif
4861  
4862         /* First, see if the high byte is 0x33 */
4863         bank = inw( ioaddr + BANK_SELECT );
4864 @@ -835,12 +1004,14 @@
4865                 retval = -ENODEV;
4866                 goto err_out;
4867         }
4868 +
4869         /* well, we've already written once, so hopefully another time won't
4870            hurt.  This time, I need to switch the bank register to bank 1,
4871            so I can access the base address register */
4872 +#if !defined(CONFIG_CPU_H8300H) && !defined(CONFIG_CPU_H8S)
4873         SMC_SELECT_BANK(1);
4874         base_address_register = inw( ioaddr + BASE );
4875 -       if ( ioaddr != ( base_address_register >> 3 & 0x3E0 ) )  {
4876 +       if ( (ioaddr & 0x3E0) != ( base_address_register >> 3 & 0x3E0 ) )  {
4877                 printk(CARDNAME ": IOADDR %x doesn't match configuration (%x)."
4878                         "Probably not a SMC chip\n",
4879                         ioaddr, base_address_register >> 3 & 0x3E0 );
4880 @@ -849,6 +1020,7 @@
4881                 retval = -ENODEV;
4882                 goto err_out;
4883         }
4884 +#endif
4885  
4886         /*  check if the revision register is something that I recognize.
4887             These might need to be added to later, as future revisions
4888 @@ -867,13 +1039,30 @@
4889         /* at this point I'll assume that the chip is an SMC9xxx.
4890            It might be prudent to check a listing of MAC addresses
4891            against the hardware address, or do some other tests. */
4892 -
4893         if (version_printed++ == 0)
4894                 printk("%s", version);
4895  
4896         /* fill in some of the fields */
4897         dev->base_addr = ioaddr;
4898  
4899 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
4900 +#if defined(CONFIG_NETtel) || defined(CONFIG_eLIA) || defined(CONFIG_DISKtel) || defined(CONFIG_CLEOPATRA)
4901 +       /*
4902 +        . MAC address should be in FLASH, check that it is valid.
4903 +        . If good use it, otherwise use the default.
4904 +       */
4905 +       ep = (unsigned char *) (0xf0006000 + (nr++ * 6));
4906 +       if ((ep[0] == 0xff) && (ep[1] == 0xff) && (ep[2] == 0xff) &&
4907 +           (ep[3] == 0xff) && (ep[4] == 0xff) && (ep[5] == 0xff))
4908 +               ep = (unsigned char *) &smc_defethaddr[0];
4909 +       else if ((ep[0] == 0) && (ep[1] == 0) && (ep[2] == 0) &&
4910 +           (ep[3] == 0) && (ep[4] == 0) && (ep[5] == 0))
4911 +               ep = (unsigned char *) &smc_defethaddr[0];
4912 +#else
4913 +       ep = (unsigned char *) &smc_defethaddr[0];
4914 +#endif
4915 +#endif
4916 +
4917         /*
4918          . Get the MAC address ( bank 1, regs 4 - 9 )
4919         */
4920 @@ -881,11 +1070,23 @@
4921         for ( i = 0; i < 6; i += 2 ) {
4922                 word    address;
4923  
4924 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
4925 +               dev->dev_addr[ i ] = ep[ i ];
4926 +               dev->dev_addr[ i + 1 ] = ep[ i + 1 ];
4927 +               address = (((word) ep[ i ]) << 8) | ep[ i + 1 ];
4928 +               outw( address, ioaddr + ADDR0 + i);
4929 +#else
4930                 address = inw( ioaddr + ADDR0 + i  );
4931                 dev->dev_addr[ i + 1] = address >> 8;
4932 -               dev->dev_addr[ i ] = address & 0xFF;
4933 +               dev->dev_addr[ i ] = address & 0xFF;    
4934 +#endif
4935         }
4936  
4937 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
4938 +       /* HACK: to support 2 ethernets when using default address! */
4939 +       smc_defethaddr[5]++;
4940 +#endif
4941 +
4942         /* get the memory information */
4943  
4944         SMC_SELECT_BANK( 0 );
4945 @@ -938,6 +1139,7 @@
4946          . what (s)he is doing.  No checking is done!!!!
4947          .
4948         */
4949 +#ifndef NO_AUTOPROBE
4950         if ( dev->irq < 2 ) {
4951                 int     trials;
4952  
4953 @@ -955,6 +1157,13 @@
4954                 retval = -ENODEV;
4955                 goto err_out;
4956         }
4957 +#else
4958 +       if (dev->irq == 0 ) {
4959 +               printk(CARDNAME
4960 +               ": Autoprobing IRQs is not supported for this configuration.\n");
4961 +               return -ENODEV;
4962 +       }
4963 +#endif
4964  
4965         /* now, print out the card info, in a short format.. */
4966  
4967 @@ -985,14 +1194,23 @@
4968         ether_setup(dev);
4969  
4970         /* Grab the IRQ */
4971 -       retval = request_irq(dev->irq, &smc_interrupt, 0, dev->name, dev);
4972 -       if (retval) {
4973 +#ifdef CONFIG_COLDFIRE
4974 +       mcf_autovector(dev->irq);
4975 +    retval = request_irq(dev->irq, &smc_interrupt, 0, dev->name, dev);
4976 +#elif defined(CONFIG_M68EZ328) && !defined(CONFIG_CWEZ328) && !defined(CONFIG_CWVZ328)
4977 +       retval = request_irq(IRQ_MACHSPEC | dev->irq, &smc_interrupt,
4978 +                       IRQ_FLG_STD, dev->name, dev);
4979 +       if (retval) panic("Unable to attach Lan91C96 intr\n");
4980 +#else
4981 +       retval = request_irq(dev->irq, &smc_interrupt, 0, dev->name, dev);
4982 +#endif
4983 +       if (retval) {
4984                 printk("%s: unable to get IRQ %d (irqval=%d).\n", dev->name,
4985                         dev->irq, retval);
4986                 kfree(dev->priv);
4987                 dev->priv = NULL;
4988                 goto err_out;
4989 -       }
4990 +       }
4991  
4992         dev->open                       = smc_open;
4993         dev->stop                       = smc_close;
4994 @@ -1002,6 +1220,9 @@
4995         dev->get_stats                  = smc_query_statistics;
4996         dev->set_multicast_list         = smc_set_multicast_list;
4997  
4998 +#ifdef PHY_SETUP
4999 +       setup_phy( ioaddr );
5000 +#endif
5001         return 0;
5002  
5003  err_out:
5004 @@ -1054,7 +1275,7 @@
5005   */
5006  static int smc_open(struct net_device *dev)
5007  {
5008 -       int     ioaddr = dev->base_addr;
5009 +       smcio_t ioaddr = dev->base_addr;
5010  
5011         int     i;      /* used to set hw ethernet address */
5012  
5013 @@ -1069,6 +1290,11 @@
5014         /* Select which interface to use */
5015  
5016         SMC_SELECT_BANK( 1 );
5017 +#if defined(CONFIG_DISKtel) || defined(CONFIG_SH_KEYWEST)
5018 +       /* Setup to use external PHY on smc91c110 */
5019 +       outw( inw( ioaddr + CONFIG ) | CFG_NO_WAIT | CFG_MII_SELECT,
5020 +               (ioaddr + CONFIG ));
5021 +#else
5022         if ( dev->if_port == 1 ) {
5023                 outw( inw( ioaddr + CONFIG ) & ~CFG_AUI_SELECT,
5024                         ioaddr + CONFIG );
5025 @@ -1077,6 +1303,7 @@
5026                 outw( inw( ioaddr + CONFIG ) | CFG_AUI_SELECT,
5027                         ioaddr + CONFIG );
5028         }
5029 +#endif
5030  
5031         /*
5032                 According to Becker, I have to set the hardware address
5033 @@ -1093,6 +1320,18 @@
5034         }
5035         
5036         netif_start_queue(dev);
5037 +
5038 +#if defined(CONFIG_LEDMAN) && defined(CONFIG_SNAPGEAR)
5039 +       /*
5040 +        *      fix the link status LED's
5041 +        */
5042 +       SMC_SELECT_BANK( 0 );
5043 +       ledman_cmd((inw(ioaddr + EPH_STATUS) & ES_LINK_OK) == ES_LINK_OK ?
5044 +                       LEDMAN_CMD_ON : LEDMAN_CMD_OFF,
5045 +                       strcmp(dev->name, "eth0") ?
5046 +                                       LEDMAN_LAN2_LINK : LEDMAN_LAN1_LINK);
5047 +#endif
5048 +
5049         return 0;
5050  }
5051  
5052 @@ -1135,19 +1374,23 @@
5053  static irqreturn_t smc_interrupt(int irq, void * dev_id,  struct pt_regs * regs)
5054  {
5055         struct net_device *dev  = dev_id;
5056 -       int ioaddr              = dev->base_addr;
5057 +       smcio_t ioaddr          = dev->base_addr;
5058         struct smc_local *lp    = (struct smc_local *)dev->priv;
5059  
5060         byte    status;
5061         word    card_stats;
5062         byte    mask;
5063         int     timeout;
5064 +#ifdef CONFIG_LEDMAN
5065 +       int tx;
5066 +#endif
5067         /* state registers */
5068         word    saved_bank;
5069         word    saved_pointer;
5070         int handled = 0;
5071  
5072  
5073 +
5074         PRINTK3((CARDNAME": SMC interrupt started \n"));
5075  
5076         saved_bank = inw( ioaddr + BANK_SELECT );
5077 @@ -1157,7 +1400,7 @@
5078  
5079         mask = inb( ioaddr + INT_MASK );
5080         /* clear all interrupts */
5081 -       outb( 0, ioaddr + INT_MASK );
5082 +       SMC_SET_INT( 0 );
5083  
5084  
5085         /* set a timeout value, so I don't stay here forever */
5086 @@ -1170,7 +1413,9 @@
5087                 if (!status )
5088                         break;
5089  
5090 -               handled = 1;
5091 +#ifdef CONFIG_LEDMAN
5092 +               tx = 0;
5093 +#endif
5094  
5095                 PRINTK3((KERN_WARNING CARDNAME
5096                         ": Handling interrupt status %x \n", status ));
5097 @@ -1184,7 +1429,10 @@
5098                         PRINTK2((KERN_WARNING CARDNAME
5099                                 ": TX ERROR handled\n"));
5100                         smc_tx(dev);
5101 -                       outb(IM_TX_INT, ioaddr + INTERRUPT );
5102 +                       SMC_ACK_INT( IM_TX_INT );
5103 +#ifdef CONFIG_LEDMAN
5104 +                       tx = 1;
5105 +#endif
5106                 } else if (status & IM_TX_EMPTY_INT ) {
5107                         /* update stats */
5108                         SMC_SELECT_BANK( 0 );
5109 @@ -1200,11 +1448,14 @@
5110                         SMC_SELECT_BANK( 2 );
5111                         PRINTK2((KERN_WARNING CARDNAME
5112                                 ": TX_BUFFER_EMPTY handled\n"));
5113 -                       outb( IM_TX_EMPTY_INT, ioaddr + INTERRUPT );
5114 +                       SMC_ACK_INT( IM_TX_EMPTY_INT );
5115                         mask &= ~IM_TX_EMPTY_INT;
5116                         lp->stats.tx_packets += lp->packets_waiting;
5117 +                       lp->stats.tx_bytes += lp->saved_skb->len;
5118                         lp->packets_waiting = 0;
5119 -
5120 +#ifdef CONFIG_LEDMAN
5121 +                       tx = 1;
5122 +#endif
5123                 } else if (status & IM_ALLOC_INT ) {
5124                         PRINTK2((KERN_DEBUG CARDNAME
5125                                 ": Allocation interrupt \n"));
5126 @@ -1220,22 +1471,50 @@
5127                         netif_wake_queue(dev);
5128                         
5129                         PRINTK2((CARDNAME": Handoff done successfully.\n"));
5130 +#ifdef CONFIG_LEDMAN
5131 +                       tx = 1;
5132 +#endif
5133                 } else if (status & IM_RX_OVRN_INT ) {
5134                         lp->stats.rx_errors++;
5135                         lp->stats.rx_fifo_errors++;
5136 -                       outb( IM_RX_OVRN_INT, ioaddr + INTERRUPT );
5137 +                       SMC_ACK_INT( IM_RX_OVRN_INT );
5138                 } else if (status & IM_EPH_INT ) {
5139 +#if defined(CONFIG_LEDMAN) && defined(CONFIG_SNAPGEAR)
5140 +                       SMC_SELECT_BANK( 0 );
5141 +                       ledman_cmd((inw(ioaddr + EPH_STATUS) & ES_LINK_OK) == ES_LINK_OK ?
5142 +                                       LEDMAN_CMD_ON : LEDMAN_CMD_OFF,
5143 +                                       strcmp(dev->name, "eth0")?LEDMAN_LAN2_LINK:LEDMAN_LAN1_LINK);
5144 +                       SMC_SELECT_BANK( 1 );
5145 +                       /* ACK it */
5146 +                       outw(inw(ioaddr + CONTROL) & ~CTL_LE_ENABLE, ioaddr + CONTROL); 
5147 +                       outw(inw(ioaddr + CONTROL) | CTL_LE_ENABLE, ioaddr + CONTROL);  
5148 +                       SMC_SELECT_BANK( 2 );
5149 +                       SMC_ACK_INT( IM_EPH_INT );
5150 +                       continue; /* do not turn the TX/RX leds on */
5151 +#else
5152                         PRINTK((CARDNAME ": UNSUPPORTED: EPH INTERRUPT \n"));
5153 +#endif
5154                 } else if (status & IM_ERCV_INT ) {
5155                         PRINTK((CARDNAME ": UNSUPPORTED: ERCV INTERRUPT \n"));
5156 -                       outb( IM_ERCV_INT, ioaddr + INTERRUPT );
5157 +                       SMC_ACK_INT( IM_ERCV_INT );
5158 +               }
5159 +#ifdef CONFIG_LEDMAN
5160 +               if (tx) {
5161 +                       ledman_cmd(LEDMAN_CMD_SET,
5162 +                                       strcmp(dev->name, "eth0") == 0 ? LEDMAN_LAN1_TX :
5163 +                                               LEDMAN_LAN2_TX);
5164 +               } else {
5165 +                       ledman_cmd(LEDMAN_CMD_SET,
5166 +                                       strcmp(dev->name, "eth0") == 0 ? LEDMAN_LAN1_RX :
5167 +                                               LEDMAN_LAN2_RX);
5168                 }
5169 +#endif
5170         } while ( timeout -- );
5171  
5172  
5173         /* restore state register */
5174         SMC_SELECT_BANK( 2 );
5175 -       outb( mask, ioaddr + INT_MASK );
5176 +       SMC_SET_INT( mask );
5177  
5178         PRINTK3(( KERN_WARNING CARDNAME ": MASK is now %x \n", mask ));
5179         outw( saved_pointer, ioaddr + POINTER );
5180 @@ -1261,7 +1540,7 @@
5181  static void smc_rcv(struct net_device *dev)
5182  {
5183         struct smc_local *lp = (struct smc_local *)dev->priv;
5184 -       int     ioaddr = dev->base_addr;
5185 +       smcio_t ioaddr = dev->base_addr;
5186         int     packet_number;
5187         word    status;
5188         word    packet_length;
5189 @@ -1281,8 +1560,16 @@
5190         outw( PTR_READ | PTR_RCV | PTR_AUTOINC, ioaddr + POINTER );
5191  
5192         /* First two words are status and packet_length */
5193 +#ifndef CONFIG_SH_KEYWEST
5194         status          = inw( ioaddr + DATA_1 );
5195         packet_length   = inw( ioaddr + DATA_1 );
5196 +#else
5197 +       {
5198 +               unsigned int l = inl( ioaddr + DATA_1 );
5199 +               status         = l & 0xffff;
5200 +               packet_length  = l >> 16;
5201 +       }
5202 +#endif
5203  
5204         packet_length &= 0x07ff;  /* mask off top bits */
5205  
5206 @@ -1333,9 +1620,17 @@
5207                         packet_length >> 2, packet_length & 3 ));
5208                 insl(ioaddr + DATA_1 , data, packet_length >> 2 );
5209                 /* read the left over bytes */
5210 +#ifndef CONFIG_SH_KEYWEST
5211                 insb( ioaddr + DATA_1, data + (packet_length & 0xFFFFFC),
5212                         packet_length & 0x3  );
5213  #else
5214 +               if (packet_length & 3) {
5215 +                       union { unsigned int l; char data[4]; } l;
5216 +                       l.l = inl(ioaddr + DATA_1);
5217 +                       memcpy(data + (packet_length & ~0x3), l.data, packet_length & 0x3);
5218 +               }
5219 +#endif
5220 +#else
5221                 PRINTK3((" Reading %d words and %d byte(s) \n",
5222                         (packet_length >> 1 ), packet_length & 1 ));
5223                 insw(ioaddr + DATA_1 , data, packet_length >> 1);
5224 @@ -1386,7 +1681,7 @@
5225   ************************************************************************/
5226  static void smc_tx( struct net_device * dev )
5227  {
5228 -       int     ioaddr = dev->base_addr;
5229 +       smcio_t ioaddr = dev->base_addr;
5230         struct smc_local *lp = (struct smc_local *)dev->priv;
5231         byte saved_packet;
5232         byte packet_no;
5233 @@ -1400,7 +1695,12 @@
5234         packet_no &= 0x7F;
5235  
5236         /* select this as the packet to read from */
5237 -       outb( packet_no, ioaddr + PNR_ARR );
5238 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
5239 +       outw( packet_no, ioaddr + PNR_ARR ); 
5240 +#else
5241 +       outb( packet_no, ioaddr + PNR_ARR ); 
5242 +#endif
5243 +       
5244  
5245         /* read the first word from this packet */
5246         outw( PTR_AUTOINC | PTR_READ, ioaddr + POINTER );
5247 @@ -1411,8 +1711,10 @@
5248         lp->stats.tx_errors++;
5249         if ( tx_status & TS_LOSTCAR ) lp->stats.tx_carrier_errors++;
5250         if ( tx_status & TS_LATCOL  ) {
5251 +#if 0
5252                 printk(KERN_DEBUG CARDNAME
5253                         ": Late collision occurred on last xmit.\n");
5254 +#endif
5255                 lp->stats.tx_window_errors++;
5256         }
5257  #if 0
5258 @@ -1433,7 +1735,11 @@
5259         /* one less packet waiting for me */
5260         lp->packets_waiting--;
5261  
5262 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
5263 +       outw( saved_packet, ioaddr + PNR_ARR );
5264 +#else
5265         outb( saved_packet, ioaddr + PNR_ARR );
5266 +#endif
5267         return;
5268  }
5269  
5270 @@ -1451,6 +1757,11 @@
5271         /* clear everything */
5272         smc_shutdown( dev->base_addr );
5273  
5274 +#if defined(CONFIG_LEDMAN) && defined(CONFIG_SNAPGEAR)
5275 +       ledman_cmd(LEDMAN_CMD_OFF,
5276 +               strcmp(dev->name, "eth0")?LEDMAN_LAN2_LINK : LEDMAN_LAN1_LINK);
5277 +#endif
5278 +
5279         /* Update the statistics here. */
5280         return 0;
5281  }
5282 @@ -1475,7 +1786,7 @@
5283  */
5284  static void smc_set_multicast_list(struct net_device *dev)
5285  {
5286 -       short ioaddr = dev->base_addr;
5287 +       smcio_t ioaddr = dev->base_addr;
5288  
5289         SMC_SELECT_BANK(0);
5290         if ( dev->flags & IFF_PROMISC )
5291 @@ -1522,6 +1833,12 @@
5292         }
5293  }
5294  
5295 +#ifdef PHY_SETUP
5296 +static int phy_delay1 = 4;
5297 +static int phy_delay2 = 1;
5298 +static int phy_delay3 = 100;
5299 +#endif
5300 +
5301  #ifdef MODULE
5302  
5303  static struct net_device devSMC9194;
5304 @@ -1537,6 +1854,15 @@
5305  MODULE_PARM_DESC(irq, "SMC 99194 IRQ number");
5306  MODULE_PARM_DESC(ifport, "SMC 99194 interface port (0-default, 1-TP, 2-AUI)");
5307  
5308 +#ifdef PHY_SETUP
5309 +MODULE_PARM(phy_delay1, "i");
5310 +MODULE_PARM(phy_delay2, "i");
5311 +MODULE_PARM(phy_delay3, "i");
5312 +MODULE_PARM_DESC(phy_delay1, "Per MII clock delay [4]");
5313 +MODULE_PARM_DESC(phy_delay2, "General delay [1]");
5314 +MODULE_PARM_DESC(phy_delay3, "pre probe delay [100]");
5315 +#endif
5316 +
5317  int init_module(void)
5318  {
5319         int result;
5320 @@ -1545,6 +1871,10 @@
5321                 printk(KERN_WARNING
5322                 CARDNAME": You shouldn't use auto-probing with insmod!\n" );
5323  
5324 +#ifdef PHY_SETUP
5325 +       printk(CARDNAME ": phy_delays %d %d %d\n", phy_delay1, phy_delay2,
5326 +                       phy_delay3);
5327 +#endif
5328         /* copy the parameters from insmod into the device structure */
5329         devSMC9194.base_addr = io;
5330         devSMC9194.irq       = irq;
5331 @@ -1558,6 +1888,7 @@
5332  
5333  void cleanup_module(void)
5334  {
5335 +       /* No need to check MOD_IN_USE, as sys_delete_module() checks. */
5336         unregister_netdev(&devSMC9194);
5337  
5338         free_irq(devSMC9194.irq, &devSMC9194);
5339 @@ -1568,3 +1899,437 @@
5340  }
5341  
5342  #endif /* MODULE */
5343 +
5344 +
5345 +#ifdef PHY_SETUP
5346 +/*-----------------------------------------------------------
5347 + . PHY/MII setup routines
5348 + .
5349 +*/
5350 +
5351 +#define phy_delay(x) ({ int d; for (d = 0; d < 100; d++) udelay((x) * 10); })
5352 +
5353 +/*
5354 + *     Ports for talking to the PHY/MII
5355 + */
5356 +
5357 +#define NV_CONTROL     0x10
5358 +#define MIICTRL                0x30
5359 +#define MIIDATA                0x34
5360 +#define MIICFG         0x38
5361 +
5362 +#define MIIREAD                0x0001
5363 +#define MIIWRITE       0x0002
5364 +
5365 +#define        MDO                     0x01            /* MII Register bits */
5366 +#define        MDI                     0x02
5367 +#define        MCLK            0x04
5368 +#define        MDOE            0x08
5369 +#define        MALL            0x0F
5370 +#define        OPWrite         0x01
5371 +#define        OPRead          0x02
5372 +
5373 +
5374 +#define PHY_CR                 0               /* PHY Registers and bits */
5375 +#define PHY_CR_Reset   0x8000
5376 +#define PHY_CR_Speed   0x2000
5377 +#define PHY_CR_Duplex  0x0100
5378 +
5379 +#define PHY_SR 1
5380 +#define PHY_ID1        2
5381 +#define PHY_ID2        3
5382 +
5383 +/*
5384 + *     PHY propietary registers
5385 + */
5386 +
5387 +#define PHY_NATIONAL_PAR                       0x19
5388 +#define PHY_NATIONAL_PAR_DUPLEX                0x0080
5389 +#define PHY_NATIONAL_PAR_SPEED_10      0x0040
5390 +
5391 +#define PHY_TDK_DIAG                           0x12
5392 +#define PHY_TDK_DIAG_DUPLEX                    0x0800
5393 +#define PHY_TDK_DIAG_RATE                      0x0400
5394 +
5395 +#define PHY_QSI_BASETX                         0x1F
5396 +#define PHY_QSI_BASETX_OPMODE_MASK     0x001c
5397 +#define PHY_QSI_BASETX_OPMODE_10HD     (2<<0x1)
5398 +#define PHY_QSI_BASETX_OPMODE_100HD    (2<<0x2)
5399 +#define PHY_QSI_BASETX_OPMODE_10FD     (2<<0x5)
5400 +#define PHY_QSI_BASETX_OPMODE_100FD    (2<<0x6)
5401 +
5402 +#define PHY_SEEQ_STATUS_OUTPUT         0x12
5403 +#define PHY_SEEQ_SPD_DET                       0x80
5404 +#define PHY_SEEQ_DPLX_DET                      0x40
5405 +
5406 +#define PHY_OUI_QSI                    0x006051
5407 +#define PHY_OUI_TDK                    0x00C039
5408 +#define PHY_OUI_MITELSMSC      0x00A087
5409 +#define PHY_OUI_NATIONAL       0x080017
5410 +#define PHY_OUI_SEEQSMSC       0x0005BE
5411 +
5412 +#define NWAY_TIMEOUT   10
5413 +
5414 +#define MAC_IS_FEAST() (1)
5415 +#define MAC_IS_EPIC()  (0)
5416 +
5417 +static void
5418 +clkmdio(smcio_t ioaddr, unsigned int MGMTData)
5419 +{
5420 +       outw(MGMTData, ioaddr + MGMT);
5421 +       udelay(phy_delay1);
5422 +       outw(MGMTData | MCLK, ioaddr + MGMT);
5423 +       udelay(phy_delay1);
5424 +}
5425 +
5426 +
5427 +static unsigned
5428 +PHYAccess(
5429 +       smcio_t ioaddr,
5430 +       unsigned char PHYAdd,
5431 +       unsigned char RegAdd,
5432 +       unsigned char OPCode,
5433 +       unsigned wData)
5434 +{
5435 +       int i;
5436 +       unsigned MGMTval;
5437 +
5438 +       // Filter unused bits from input variables.
5439 +
5440 +       PHYAdd &= 0x1F;
5441 +       RegAdd &= 0x1F;
5442 +       OPCode &= 0x03;
5443 +
5444 +       if (MAC_IS_FEAST()) {
5445 +               MGMTval = inw(ioaddr + MGMT) & (MALL ^ 0xFFFF);
5446 +
5447 +               // Output Preamble (32 '1's)
5448 +
5449 +               for (i = 0; i < 32; i++)
5450 +                       clkmdio(ioaddr, MGMTval | MDOE | MDO);
5451 +
5452 +               // Output Start of Frame ('01')
5453 +
5454 +               for (i = 0; i < 2; i++)
5455 +                       clkmdio(ioaddr, MGMTval | MDOE | i);
5456 +
5457 +               // Output OPCode ('01' for write or '10' for Read)
5458 +
5459 +               for (i = 1; i >= 0; i--)
5460 +                       clkmdio(ioaddr, MGMTval | MDOE | ((OPCode>>i) & 0x01) );
5461 +
5462 +               // Output PHY Address
5463 +
5464 +               for (i = 4; i >= 0; i--)
5465 +                       clkmdio(ioaddr, MGMTval | MDOE | ((PHYAdd>>i) & 0x01) );
5466 +
5467 +               // Output Register Address
5468 +
5469 +               for (i = 4; i >= 0; i--)
5470 +                       clkmdio(ioaddr, MGMTval | MDOE | ((RegAdd>>i) & 0x01) );
5471 +
5472 +               if (OPCode == OPRead) {
5473 +                       // Read Operation
5474 +
5475 +                       // Implement Turnaround ('Z0')
5476 +
5477 +                       clkmdio(ioaddr, MGMTval);
5478 +                       // clkmdio(ioaddr, MGMTval | MDOE);
5479 +
5480 +                       // Read Data
5481 +
5482 +                       wData = 0;
5483 +
5484 +                       for (i = 15; i >= 0; i--) {
5485 +                               clkmdio(ioaddr, MGMTval);
5486 +                               wData |= (((inw(ioaddr + MGMT) & MDI) >> 1) << i);
5487 +                       }
5488 +
5489 +                       // Add Idle state
5490 +
5491 +                       clkmdio(ioaddr, MGMTval);
5492 +
5493 +                       return (wData);
5494 +               } else {
5495 +                       // Write Operation
5496 +
5497 +                       // Implement Turnaround ('10')
5498 +
5499 +                       for (i = 1; i >= 0; i--)
5500 +                               clkmdio(ioaddr, MGMTval | MDOE | ((2>>i) & 0x01));
5501 +
5502 +                       // Write Data
5503 +
5504 +                       for (i = 15; i >= 0; i--)
5505 +                               clkmdio(ioaddr, MGMTval | MDOE | ((wData>>i) & 0x01));
5506 +
5507 +                       // Add Idle state
5508 +
5509 +                       clkmdio(ioaddr, MGMTval);
5510 +
5511 +                       return (1);
5512 +               }
5513 +       }
5514 +
5515 +       if (MAC_IS_EPIC()) {
5516 +               if (OPCode == OPRead) {
5517 +                       // Read Operation
5518 +                       outw((((unsigned)PHYAdd)<<9) | (((unsigned)RegAdd)<<4) | MIIREAD,
5519 +                                       ioaddr + MIICTRL);
5520 +                       phy_delay(phy_delay2);
5521 +                       wData = inw(MIIDATA);
5522 +                       return(wData);
5523 +               } else {
5524 +                       // Write Operation
5525 +                       outw(wData, ioaddr + MIIDATA);
5526 +                       outw((((unsigned)PHYAdd)<<9) | (((unsigned)RegAdd)<<4) | MIIWRITE,
5527 +                                       ioaddr + MIICTRL);
5528 +                       phy_delay(phy_delay2);
5529 +                       return(1);
5530 +               }
5531 +       }
5532 +
5533 +       return(1);
5534 +
5535 +}
5536 +
5537 +
5538 +static unsigned char
5539 +DetectPHY(
5540 +       smcio_t ioaddr,
5541 +       unsigned long *OUI,
5542 +       unsigned char *Model,
5543 +       unsigned char *Revision)
5544 +{
5545 +    unsigned int PhyId1, PhyId2;
5546 +    unsigned char PhyAdd=0xff;
5547 +    int Count;
5548 +
5549 +    for (Count=31; Count >= 0; Count--) {
5550 +               PhyId1 = PHYAccess(ioaddr, Count, PHY_ID1, OPRead, 0);
5551 +               PhyId1 = PHYAccess(ioaddr, Count, PHY_ID1, OPRead, 0);
5552 +               PhyId2 = PHYAccess(ioaddr, Count, PHY_ID2, OPRead, 0);
5553 +               PhyId2 = PHYAccess(ioaddr, Count, PHY_ID2, OPRead, 0);
5554 +
5555 +               if (PhyId1 > 0x0000 && PhyId1 < 0xffff && PhyId2 > 0x0000 &&
5556 +                       PhyId2 < 0xffff && PhyId1 != 0x8000 && PhyId2 != 0x8000) {
5557 +                       PhyAdd = (unsigned char) Count;
5558 +                       break;
5559 +               }
5560 +               phy_delay(phy_delay2);
5561 +    }
5562 +
5563 +    *OUI =             (((unsigned long) PhyId1) << 6) | ((PhyId2 & 0xfc00) >> 10);
5564 +    *Model =   (unsigned char) ((PhyId2 & 0x03f0) >> 4);
5565 +    *Revision =        (unsigned char) (PhyId2 & 0x000f);
5566 +
5567 +    return(PhyAdd);
5568 +}
5569 +
5570 +
5571 +static int
5572 +setup_phy(smcio_t ioaddr)
5573 +{
5574 +    int duplex = 0; /* 0 = Half,   !0 = Full */
5575 +    int speed = 0;  /* 0 = 10Mbps, !0 = 100Mbps */
5576 +    char *report = "";
5577 +       unsigned long OUI;
5578 +       unsigned char Model, Revision;
5579 +
5580 +    unsigned int i, PHYConfig, PHYConfig2, data;
5581 +    unsigned char PHYAdd, ositech = 0;
5582 +
5583 +       printk("SMCPHY: ");
5584 +#if 0
5585 +       ositech = 1;
5586 +#endif
5587 +
5588 +       //Setting the AUI Select Bit for 91C110 PCMCIA Design. 11/23/99 PG
5589 +       if (ositech) {
5590 +               SMC_SELECT_BANK( 1 );
5591 +               data = inw(ioaddr + BANK_SELECT);
5592 +               outw(data | 0x0100, ioaddr);
5593 +       }
5594 +
5595 +    if (MAC_IS_FEAST())
5596 +               SMC_SELECT_BANK ( 3 );
5597 +
5598 +       PHYAdd = DetectPHY(ioaddr, &OUI, &Model, &Revision);
5599 +
5600 +       if (PHYAdd > 31) {
5601 +           printk("UNRECOVERABLE ERROR: PHY is not present or not supported\n");
5602 +           return(-1);
5603 +       }
5604 +
5605 +       //Setup NV_CONTROL for the cardbus card.
5606 +       if (OUI == PHY_OUI_TDK)
5607 +               outw(0x7c03, ioaddr + NV_CONTROL);
5608 +
5609 +       // Save Register 0.
5610 +
5611 +       if (OUI == PHY_OUI_TDK)
5612 +               PHYAccess(ioaddr, PHYAdd, PHY_CR, OPRead, 0);
5613 +       PHYConfig = PHYAccess(ioaddr, PHYAdd,PHY_CR,OPRead,0);
5614 +
5615 +       if (OUI == PHY_OUI_TDK) {
5616 +               outw(0x0012, ioaddr + MIICFG);  /* Set ENABLE_694 */
5617 +               /* if using EPIC, Hardware Reset the PHY from the MAC */
5618 +               outw(inw(ioaddr + CONTROL) | 0x4000, ioaddr + CONTROL);
5619 +               phy_delay(phy_delay2);
5620 +               outw(inw(ioaddr + CONTROL) & (~0x4000), ioaddr + CONTROL);
5621 +               phy_delay(phy_delay2);
5622 +       }
5623 +
5624 +       /* Reset PHY */
5625 +       PHYAccess(ioaddr, PHYAdd, PHY_CR, OPWrite, PHY_CR_Reset);
5626 +       if (OUI == PHY_OUI_TDK)
5627 +               PHYAccess(ioaddr, PHYAdd, PHY_CR, OPWrite, PHY_CR_Reset);
5628 +
5629 +       for (i = 0; i < 500; i++) {
5630 +               if (OUI == PHY_OUI_TDK)
5631 +                       PHYAccess(ioaddr, PHYAdd, PHY_CR, OPRead, 0);
5632 +
5633 +               if (PHYAccess(ioaddr, PHYAdd, PHY_CR, OPRead, 0) & PHY_CR_Reset)
5634 +                       phy_delay(phy_delay2);
5635 +               else
5636 +                       break;
5637 +       }
5638 +
5639 +       if (i == 500) {
5640 +               printk("UNRECOVERABLE ERROR: Could not reset PHY\n");
5641 +               return(-1);
5642 +       }
5643 +
5644 +       /* Write selected configuration to the PHY and verify it by reading back */
5645 +       /* Set Advertising Register for all 10/100 and Half/Full combinations */
5646 +
5647 +       if (OUI == PHY_OUI_TDK)
5648 +               PHYConfig = PHYAccess(ioaddr, PHYAdd, 4, OPRead, 0);
5649 +       PHYConfig = PHYAccess(ioaddr, PHYAdd, 4, OPRead, 0);
5650 +       PHYConfig |= 0x01e0;
5651 +       PHYAccess(ioaddr, PHYAdd, 4, OPWrite, PHYConfig);
5652 +       if (OUI == PHY_OUI_TDK)
5653 +               PHYAccess(ioaddr, PHYAdd, 4, OPWrite, PHYConfig);
5654 +
5655 +       /* Start 1 */
5656 +
5657 +       /* National PHY requires clear before set 1 enable. */
5658 +       PHYAccess(ioaddr, PHYAdd, 0, OPWrite, 0x0000);
5659 +       PHYAccess(ioaddr, PHYAdd, 0, OPWrite, 0x1200);
5660 +       if (OUI == PHY_OUI_TDK)
5661 +               PHYAccess(ioaddr, PHYAdd, 0, OPWrite, 0x1200);
5662 +
5663 +       /* Wait for completion */
5664 +       for (i = 0; i < NWAY_TIMEOUT * 10; i++) {
5665 +               printk("%c\b", "|/-\\"[i&3]);
5666 +
5667 +               phy_delay(phy_delay3);
5668 +
5669 +               PHYConfig = PHYAccess(ioaddr, PHYAdd, 1, OPRead, 0);
5670 +               PHYConfig2 = PHYAccess(ioaddr, PHYAdd, 1, OPRead, 0);
5671 +
5672 +               if (PHYConfig != PHYConfig2) /* Value is not stable */
5673 +                       continue;
5674 +               if (PHYConfig & 0x0010) /* Remote Fault */
5675 +                       continue;
5676 +               if ((PHYConfig == 0x0000) || (PHYConfig == 0xffff)) /* invalid value */
5677 +                       continue;
5678 +               if (PHYConfig & 0x0020)
5679 +                       break;
5680 +       }
5681 +
5682 +       /* Now read the results of the NWAY. */
5683 +
5684 +       if (OUI == PHY_OUI_TDK)
5685 +               PHYConfig = PHYAccess(ioaddr, PHYAdd, 5, OPRead, 0);
5686 +       PHYConfig = PHYAccess(ioaddr, PHYAdd, 5, OPRead, 0);
5687 +
5688 +       if (PHYConfig != 0) {
5689 +               /* Got real NWAY information here */
5690 +               report = "ANLPA";
5691 +               speed = (PHYConfig & 0x0180);
5692 +               duplex = (PHYConfig & 0x0140);
5693 +       } else {
5694 +               /*
5695 +                * ANLPA was 0 so NWAY did not complete or is not reported fine.
5696 +                * Get the info from propietary regs or from the control register.
5697 +                */
5698 +               report = "Prop."; /* Proprietary Status */
5699 +
5700 +               switch (OUI) {
5701 +               case PHY_OUI_NATIONAL:
5702 +                       PHYConfig = PHYAccess(ioaddr, PHYAdd, PHY_NATIONAL_PAR, OPRead, 0);
5703 +                       duplex = (PHYConfig & PHY_NATIONAL_PAR_DUPLEX);
5704 +                       speed = ! (PHYConfig & PHY_NATIONAL_PAR_SPEED_10);
5705 +                       break;
5706 +
5707 +               case PHY_OUI_TDK:
5708 +                       PHYConfig = PHYAccess(ioaddr, PHYAdd, PHY_TDK_DIAG, OPRead, 0);
5709 +                       PHYConfig = PHYAccess(ioaddr, PHYAdd, PHY_TDK_DIAG, OPRead, 0);
5710 +                       speed = ((Revision < 7) && ((PHYConfig & 0x300) == 0x300)) ||
5711 +                                       ((Revision >= 7) && (PHYConfig & PHY_TDK_DIAG_RATE));
5712 +                       duplex = ((Revision >= 7) && (PHYConfig & PHY_TDK_DIAG_DUPLEX));
5713 +                       break;
5714 +
5715 +               case PHY_OUI_QSI:
5716 +                       PHYConfig = PHYAccess(ioaddr, PHYAdd, PHY_QSI_BASETX, OPRead, 0);
5717 +                       PHYConfig &= PHY_QSI_BASETX_OPMODE_MASK;
5718 +                       duplex = (PHYConfig & PHY_QSI_BASETX_OPMODE_10FD) ||
5719 +                               (PHYConfig & PHY_QSI_BASETX_OPMODE_100FD);
5720 +                       speed = (PHYConfig & PHY_QSI_BASETX_OPMODE_100HD) ||
5721 +                               (PHYConfig & PHY_QSI_BASETX_OPMODE_100FD);
5722 +                       break;
5723 +
5724 +               case PHY_OUI_SEEQSMSC:
5725 +                       PHYConfig=PHYAccess(ioaddr,PHYAdd,PHY_SEEQ_STATUS_OUTPUT,OPRead,0);
5726 +                       duplex = (PHYConfig & PHY_SEEQ_DPLX_DET);
5727 +                       speed = (PHYConfig & PHY_SEEQ_SPD_DET);
5728 +                       break;
5729 +
5730 +               default:
5731 +                       report = "Command";
5732 +                       PHYConfig = PHYAccess(ioaddr, PHYAdd, 0, OPRead, 0);
5733 +                       speed = (PHYConfig & 0x2000);
5734 +                       duplex = (PHYConfig & 0x0100);
5735 +                       break;
5736 +               }
5737 +       }
5738 +
5739 +       /* Do we need to adjust the Carrier sense on full duplex FEAST issue ?  */
5740 +
5741 +       if (duplex && MAC_IS_FEAST() && (OUI == PHY_OUI_MITELSMSC))
5742 +               PHYAccess(ioaddr, PHYAdd, 0x18, OPWrite,
5743 +                               0x0020 | PHYAccess(ioaddr, PHYAdd, 0x18, OPRead, 0));
5744 +
5745 +       /* Display what we learned */
5746 +
5747 +    printk(" %s-duplex %d Mbps ", duplex ? "Full" : "Half", speed ? 100 : 10);
5748 +
5749 +       if (MAC_IS_FEAST())
5750 +               printk("FEAST ");
5751 +       if (MAC_IS_EPIC())
5752 +               printk("EPIC ");
5753 +
5754 +       switch (OUI) {
5755 +       case PHY_OUI_QSI:       printk("QSI");                break;
5756 +       case PHY_OUI_TDK:       printk("TDK");                break;
5757 +       case PHY_OUI_MITELSMSC: printk("MITEL/SMSC180");      break;
5758 +       case PHY_OUI_NATIONAL:  printk("NATIONAL");           break;
5759 +       case PHY_OUI_SEEQSMSC:  printk("SEEQ/SMSC183");       break;
5760 +       default:                printk("%06lX(UNKNOWN)",OUI); break;
5761 +       }
5762 +
5763 +       printk(" Model=%02X Rev=%02X ", Model, Revision);
5764 +#if DEBUG
5765 +       printk("Addr=%02X ", PHYAdd);
5766 +       printk("Conf=%s ", report);
5767 +#endif
5768 +       if (i == NWAY_TIMEOUT)
5769 +               printk("TIMEOUT!\n");
5770 +       else
5771 +               printk("Done.\n");
5772 +       return(0);
5773 +}
5774 +
5775 +/*----------------------------------------------------------- */
5776 +#endif /* PHY_SETUP */
5777 diff -Naur linux-2.6.0-test8/drivers/net/smc9194.h linux-2.6.0-test8-uc0/drivers/net/smc9194.h
5778 --- linux-2.6.0-test8/drivers/net/smc9194.h     2003-10-20 09:10:30.000000000 +1000
5779 +++ linux-2.6.0-test8-uc0/drivers/net/smc9194.h 2003-10-20 09:12:25.833264184 +1000
5780 @@ -96,6 +96,8 @@
5781  /* BANK 1 */
5782  #define CONFIG                 0
5783  #define CFG_AUI_SELECT         0x100
5784 +#define        CFG_NO_WAIT             0x1000
5785 +#define        CFG_MII_SELECT          0x8000
5786  #define        BASE                    2
5787  #define        ADDR0                   4
5788  #define        ADDR1                   6
5789 @@ -208,6 +210,44 @@
5790                         inw( ioaddr + RCR );\
5791                         inw( ioaddr + RCR );  }
5792  
5793 +#if defined(CONFIG_COLDFIRE) || defined(CONFIG_M68EZ328)
5794 +
5795 +/* this enables an interrupt in the interrupt mask register */
5796 +#define SMC_ENABLE_INT(x) {\
5797 +               unsigned char mask;\
5798 +               SMC_SELECT_BANK(2);\
5799 +               mask = inb( ioaddr + INT_MASK );\
5800 +               mask |= (x);\
5801 +               outw( mask << 8, ioaddr + INTERRUPT ); \
5802 +}
5803 +
5804 +/* this disables an interrupt from the interrupt mask register */
5805 +
5806 +#define SMC_DISABLE_INT(x) {\
5807 +               unsigned char mask;\
5808 +               SMC_SELECT_BANK(2);\
5809 +               mask = inb( ioaddr + INT_MASK );\
5810 +               mask &= ~(x);\
5811 +               outw( mask << 8, ioaddr + INTERRUPT ); \
5812 +}
5813 +
5814 +/* set the interrupt mask register */
5815 +#define        SMC_SET_INT(x) {\
5816 +               SMC_SELECT_BANK(2);\
5817 +               outw( ((unsigned short) (x)) << 8, ioaddr + INTERRUPT );\
5818 +}
5819 +
5820 +/* acknowledge an interrupt */
5821 +#define        SMC_ACK_INT(x) {\
5822 +               unsigned short val;\
5823 +               /* assume BANK 2 selected */\
5824 +               val = inb( ioaddr + INT_MASK );\
5825 +               val = (val << 8) | (x);\
5826 +               outw( val, ioaddr + INTERRUPT );\
5827 +}
5828 +
5829 +#else
5830 +
5831  /* this enables an interrupt in the interrupt mask register */
5832  #define SMC_ENABLE_INT(x) {\
5833                 unsigned char mask;\
5834 @@ -227,6 +267,17 @@
5835                 outb( mask, ioaddr + INT_MASK ); \
5836  }
5837  
5838 +/* set the interrupt mask register */
5839 +#define        SMC_SET_INT(x) {\
5840 +               SMC_SELECT_BANK(2);\
5841 +               outb( (x), ioaddr + INT_MASK );\
5842 +}
5843 +
5844 +/* acknowledge an interrupt */
5845 +#define        SMC_ACK_INT(x)  outb( (x), ioaddr + INTERRUPT )
5846 +
5847 +#endif
5848 +
5849  /*----------------------------------------------------------------------
5850   . Define the interrupts that I want to receive from the card
5851   . 
5852 diff -Naur linux-2.6.0-test8/drivers/serial/68328serial.c linux-2.6.0-test8-uc0/drivers/serial/68328serial.c
5853 --- linux-2.6.0-test8/drivers/serial/68328serial.c      2003-10-20 09:10:41.000000000 +1000
5854 +++ linux-2.6.0-test8-uc0/drivers/serial/68328serial.c  2003-10-20 09:12:40.942967160 +1000
5855 @@ -4,7 +4,7 @@
5856   * Copyright (C) 1998       Kenneth Albanowski <kjahds@kjahds.com>
5857   * Copyright (C) 1998, 1999 D. Jeff Dionne     <jeff@uclinux.org>
5858   * Copyright (C) 1999       Vladimir Gurevich  <vgurevic@cisco.com>
5859 - * Copyright (C) 2002       David McCullough   <davidm@snapgear.com>
5860 + * Copyright (C) 2002-2003  David McCullough   <davidm@snapgear.com>
5861   * Copyright (C) 2002       Greg Ungerer       <gerg@snapgear.com>
5862   *
5863   * VZ Support/Fixes             Evan Stawnyczy <e@lineo.ca>
5864 @@ -67,12 +67,12 @@
5865  #endif
5866  
5867  static struct m68k_serial m68k_soft[NR_PORTS];
5868 -struct m86k_serial *IRQ_ports[NR_IRQS];
5869 +struct m68k_serial *IRQ_ports[NR_IRQS];
5870  
5871  static unsigned int uart_irqs[NR_PORTS] = UART_IRQ_DEFNS;
5872  
5873  /* multiple ports are contiguous in memory */
5874 -m68328_uart *uart_addr = USTCNT_ADDR;
5875 +m68328_uart *uart_addr = (m68328_uart *)USTCNT_ADDR;
5876  
5877  struct tty_struct m68k_ttys;
5878  struct m68k_serial *m68k_consinfo = 0;
5879 @@ -400,7 +400,7 @@
5880  /*
5881   * This is the serial driver's generic interrupt routine
5882   */
5883 -void rs_interrupt(int irq, void *dev_id, struct pt_regs * regs)
5884 +irqreturn_t rs_interrupt(int irq, void *dev_id, struct pt_regs * regs)
5885  {
5886         struct m68k_serial * info;
5887         m68328_uart *uart;
5888 @@ -409,7 +409,7 @@
5889  
5890         info = IRQ_ports[irq];
5891         if(!info)
5892 -           return;
5893 +           return IRQ_NONE;
5894  
5895         uart = &uart_addr[info->line];
5896         rx = uart->urx.w;
5897 @@ -422,7 +422,7 @@
5898  #else
5899         receive_chars(info, regs, rx);          
5900  #endif
5901 -       return;
5902 +       return IRQ_HANDLED;
5903  }
5904  
5905  static void do_softint(void *private)
5906 @@ -777,7 +777,7 @@
5907         save_flags(flags);
5908         while (1) {
5909                 cli();          
5910 -               c = min(count, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
5911 +               c = min_t(int, count, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
5912                                    SERIAL_XMIT_SIZE - info->xmit_head));
5913                 if (c <= 0)
5914                         break;
5915 @@ -785,7 +785,7 @@
5916                 if (from_user) {
5917                         down(&tmp_buf_sem);
5918                         copy_from_user(tmp_buf, buf, c);
5919 -                       c = min(c, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
5920 +                       c = min_t(int, c, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
5921                                        SERIAL_XMIT_SIZE - info->xmit_head));
5922                         memcpy(info->xmit_buf + info->xmit_head, tmp_buf, c);
5923                         up(&tmp_buf_sem);
5924 @@ -1056,11 +1056,10 @@
5925                         send_break(info, arg ? arg*(HZ/10) : HZ/4);
5926                         return 0;
5927                 case TIOCGSOFTCAR:
5928 -                       error = verify_area(VERIFY_WRITE, (void *) arg,sizeof(long));
5929 +                       error = put_user(C_CLOCAL(tty) ? 1 : 0,
5930 +                                   (unsigned long *) arg);
5931                         if (error)
5932                                 return error;
5933 -                       put_user(C_CLOCAL(tty) ? 1 : 0,
5934 -                                   (unsigned long *) arg);
5935                         return 0;
5936                 case TIOCSSOFTCAR:
5937                         get_user(arg, (unsigned long *) arg);
5938 diff -Naur linux-2.6.0-test8/drivers/serial/mcfserial.c linux-2.6.0-test8-uc0/drivers/serial/mcfserial.c
5939 --- linux-2.6.0-test8/drivers/serial/mcfserial.c        2003-10-20 09:10:41.000000000 +1000
5940 +++ linux-2.6.0-test8-uc0/drivers/serial/mcfserial.c    2003-10-20 09:12:41.033953328 +1000
5941 @@ -10,6 +10,11 @@
5942   * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
5943   * Copyright (C) 1998 TSHG
5944   * Copyright (c) 1999 Rt-Control Inc. <jeff@uclinux.org>
5945 + *
5946 + * Changes:
5947 + * 08/07/2003    Daniele Bellucci <bellucda@tiscali.it>
5948 + *               some cleanups in mcfrs_write.
5949 + * 
5950   */
5951   
5952  #include <linux/module.h>
5953 @@ -31,7 +36,6 @@
5954  #include <linux/ledman.h>
5955  #endif
5956  #include <linux/console.h>
5957 -#include <linux/version.h>
5958  #include <linux/init.h>
5959  
5960  #include <asm/io.h>
5961 @@ -138,6 +142,7 @@
5962   *     Forware declarations...
5963   */
5964  static void    mcfrs_change_speed(struct mcf_serial *info);
5965 +static void    mcfrs_wait_until_sent(struct tty_struct *tty, int timeout);
5966  
5967  
5968  static inline int serial_paranoia_check(struct mcf_serial *info,
5969 @@ -603,6 +608,9 @@
5970         unsigned long           flags;
5971         unsigned char           mr1, mr2;
5972         int                     i;
5973 +#ifdef CONFIG_M5272
5974 +       unsigned int            fraction;
5975 +#endif
5976  
5977         if (!info->tty || !info->tty->termios)
5978                 return;
5979 @@ -626,7 +634,20 @@
5980                 mcfrs_setsignals(info, 0, -1);
5981                 return;
5982         }
5983 +
5984 +       /* compute the baudrate clock */
5985 +#ifdef CONFIG_M5272
5986 +       /*
5987 +        * For the MCF5272, also compute the baudrate fraction.
5988 +        */
5989 +       baudclk = (MCF_BUSCLK / mcfrs_baud_table[i]) / 32;
5990 +       fraction = MCF_BUSCLK - (baudclk * 32 * mcfrs_baud_table[i]);
5991 +       fraction *= 16;
5992 +       fraction /= (32 * mcfrs_baud_table[i]);
5993 +#else
5994         baudclk = ((MCF_BUSCLK / mcfrs_baud_table[i]) + 16) / 32;
5995 +#endif
5996 +
5997         info->baud = mcfrs_baud_table[i];
5998  
5999         mr1 = MCFUART_MR1_RXIRQRDY | MCFUART_MR1_RXERRCHAR;
6000 @@ -690,6 +711,9 @@
6001         uartp[MCFUART_UMR] = mr2;
6002         uartp[MCFUART_UBG1] = (baudclk & 0xff00) >> 8;  /* set msb byte */
6003         uartp[MCFUART_UBG2] = (baudclk & 0xff);         /* set lsb byte */
6004 +#ifdef CONFIG_M5272
6005 +       uartp[MCFUART_UFPD] = (fraction & 0xf);         /* set fraction */
6006 +#endif
6007         uartp[MCFUART_UCSR] = MCFUART_UCSR_RXCLKTIMER | MCFUART_UCSR_TXCLKTIMER;
6008         uartp[MCFUART_UCR] = MCFUART_UCR_RXENABLE | MCFUART_UCR_TXENABLE;
6009         mcfrs_setsignals(info, 1, -1);
6010 @@ -742,24 +766,26 @@
6011                 local_irq_disable();            
6012                 c = min(count, (int) min(((int)SERIAL_XMIT_SIZE) - info->xmit_cnt - 1,
6013                         ((int)SERIAL_XMIT_SIZE) - info->xmit_head));
6014 +               local_irq_restore(flags);
6015  
6016 -               if (c <= 0) {
6017 -                       local_irq_restore(flags);
6018 +               if (c <= 0)
6019                         break;
6020 -               }
6021  
6022                 if (from_user) {
6023                         down(&mcfrs_tmp_buf_sem);
6024 -                       copy_from_user(mcfrs_tmp_buf, buf, c);
6025 -                       local_irq_restore(flags);
6026 -                       local_irq_disable();
6027 +                       if (copy_from_user(mcfrs_tmp_buf, buf, c))
6028 +                               return -EFAULT;
6029 +
6030 +                       local_irq_disable();            
6031                         c = min(c, (int) min(((int)SERIAL_XMIT_SIZE) - info->xmit_cnt - 1,
6032                                        ((int)SERIAL_XMIT_SIZE) - info->xmit_head));
6033 +                       local_irq_restore(flags);
6034                         memcpy(info->xmit_buf + info->xmit_head, mcfrs_tmp_buf, c);
6035                         up(&mcfrs_tmp_buf_sem);
6036                 } else
6037                         memcpy(info->xmit_buf + info->xmit_head, buf, c);
6038  
6039 +               local_irq_disable();            
6040                 info->xmit_head = (info->xmit_head + c) & (SERIAL_XMIT_SIZE-1);
6041                 info->xmit_cnt += c;
6042                 local_irq_restore(flags);
6043 @@ -1020,11 +1046,10 @@
6044                         send_break(info, arg ? arg*(HZ/10) : HZ/4);
6045                         return 0;
6046                 case TIOCGSOFTCAR:
6047 -                       error = verify_area(VERIFY_WRITE, (void *) arg,sizeof(long));
6048 +                       error = put_user(C_CLOCAL(tty) ? 1 : 0,
6049 +                                   (unsigned long *) arg);
6050                         if (error)
6051                                 return error;
6052 -                       put_user(C_CLOCAL(tty) ? 1 : 0,
6053 -                                   (unsigned long *) arg);
6054                         return 0;
6055                 case TIOCSSOFTCAR:
6056                         get_user(arg, (unsigned long *) arg);
6057 @@ -1051,48 +1076,37 @@
6058                             return get_lsr_info(info, (unsigned int *) arg);
6059  
6060                 case TIOCSERGSTRUCT:
6061 -                       error = verify_area(VERIFY_WRITE, (void *) arg,
6062 -                                               sizeof(struct mcf_serial));
6063 -                       if (error)
6064 -                               return error;
6065 -                       copy_to_user((struct mcf_serial *) arg,
6066 +                       error = copy_to_user((struct mcf_serial *) arg,
6067                                     info, sizeof(struct mcf_serial));
6068 +                       if (error)
6069 +                               return -EFAULT;
6070                         return 0;
6071                         
6072                 case TIOCMGET:
6073 -                       if ((error = verify_area(VERIFY_WRITE, (void *) arg,
6074 -                            sizeof(unsigned int))))
6075 -                                return(error);
6076                         val = mcfrs_getsignals(info);
6077 -                       put_user(val, (unsigned int *) arg);
6078 +                       if ((error = put_user(val, (unsigned int *) arg)))
6079 +                               return error;
6080                         break;
6081  
6082                  case TIOCMBIS:
6083 -                       if ((error = verify_area(VERIFY_WRITE, (void *) arg,
6084 -                            sizeof(unsigned int))))
6085 -                               return(error);
6086 -
6087 -                       get_user(val, (unsigned int *) arg);
6088 +                       if ((error = get_user(val, (unsigned int *) arg)))
6089 +                               return error;
6090                         rts = (val & TIOCM_RTS) ? 1 : -1;
6091                         dtr = (val & TIOCM_DTR) ? 1 : -1;
6092                         mcfrs_setsignals(info, dtr, rts);
6093                         break;
6094  
6095                  case TIOCMBIC:
6096 -                       if ((error = verify_area(VERIFY_WRITE, (void *) arg,
6097 -                            sizeof(unsigned int))))
6098 -                               return(error);
6099 -                       get_user(val, (unsigned int *) arg);
6100 +                       if ((error = get_user(val, (unsigned int *) arg)))
6101 +                               return error;
6102                         rts = (val & TIOCM_RTS) ? 0 : -1;
6103                         dtr = (val & TIOCM_DTR) ? 0 : -1;
6104                         mcfrs_setsignals(info, dtr, rts);
6105                         break;
6106  
6107                  case TIOCMSET:
6108 -                       if ((error = verify_area(VERIFY_WRITE, (void *) arg,
6109 -                            sizeof(unsigned int))))
6110 -                               return(error);
6111 -                       get_user(val, (unsigned int *) arg);
6112 +                       if ((error = get_user(val, (unsigned int *) arg)))
6113 +                               return error;
6114                         rts = (val & TIOCM_RTS) ? 1 : 0;
6115                         dtr = (val & TIOCM_DTR) ? 1 : 0;
6116                         mcfrs_setsignals(info, dtr, rts);
6117 @@ -1239,6 +1253,76 @@
6118  }
6119  
6120  /*
6121 + * mcfrs_wait_until_sent() --- wait until the transmitter is empty
6122 + */
6123 +static void
6124 +mcfrs_wait_until_sent(struct tty_struct *tty, int timeout)
6125 +{
6126 +#ifdef CONFIG_M5272
6127 +#define        MCF5272_FIFO_SIZE       25              /* fifo size + shift reg */
6128 +
6129 +       struct mcf_serial * info = (struct mcf_serial *)tty->driver_data;
6130 +       volatile unsigned char *uartp;
6131 +       unsigned long orig_jiffies, fifo_time, char_time, fifo_cnt;
6132 +       
6133 +       if (serial_paranoia_check(info, tty->name, "mcfrs_wait_until_sent"))
6134 +               return;
6135 +       
6136 +       orig_jiffies = jiffies;
6137 +
6138 +       /*
6139 +        * Set the check interval to be 1/5 of the approximate time
6140 +        * to send the entire fifo, and make it at least 1.  The check
6141 +        * interval should also be less than the timeout.
6142 +        *
6143 +        * Note: we have to use pretty tight timings here to satisfy
6144 +        * the NIST-PCTS.
6145 +        */
6146 +       fifo_time = (MCF5272_FIFO_SIZE * HZ * 10) / info->baud;
6147 +       char_time = fifo_time / 5;
6148 +       if (char_time == 0)
6149 +               char_time = 1;
6150 +       if (timeout && timeout < char_time)
6151 +               char_time = timeout;
6152 +
6153 +       /*
6154 +        * Clamp the timeout period at 2 * the time to empty the
6155 +        * fifo.  Just to be safe, set the minimum at .5 seconds.
6156 +        */
6157 +       fifo_time *= 2;
6158 +       if (fifo_time < (HZ/2))
6159 +               fifo_time = HZ/2;
6160 +       if (!timeout || timeout > fifo_time)
6161 +               timeout = fifo_time;
6162 +
6163 +       /*
6164 +        * Account for the number of bytes in the UART
6165 +        * transmitter FIFO plus any byte being shifted out.
6166 +        */
6167 +       uartp = (volatile unsigned char *) info->addr;
6168 +       for (;;) {
6169 +               fifo_cnt = (uartp[MCFUART_UTF] & MCFUART_UTF_TXB);
6170 +               if ((uartp[MCFUART_USR] & (MCFUART_USR_TXREADY|
6171 +                               MCFUART_USR_TXEMPTY)) ==
6172 +                       MCFUART_USR_TXREADY)
6173 +                       fifo_cnt++;
6174 +               if (fifo_cnt == 0)
6175 +                       break;
6176 +               set_current_state(TASK_INTERRUPTIBLE);
6177 +               schedule_timeout(char_time);
6178 +               if (signal_pending(current))
6179 +                       break;
6180 +               if (timeout && time_after(jiffies, orig_jiffies + timeout))
6181 +                       break;
6182 +       }
6183 +#else
6184 +       /*
6185 +        * For the other coldfire models, assume all data has been sent
6186 +        */
6187 +#endif
6188 +}
6189 +
6190 +/*
6191   * mcfrs_hangup() --- called by tty_hangup() when a hangup is signaled.
6192   */
6193  void mcfrs_hangup(struct tty_struct *tty)
6194 @@ -1563,6 +1647,7 @@
6195         .start = mcfrs_start,
6196         .hangup = mcfrs_hangup,
6197         .read_proc = mcfrs_readproc,
6198 +       .wait_until_sent = mcfrs_wait_until_sent,
6199  };
6200  
6201  /* mcfrs_init inits the driver */
6202 @@ -1589,7 +1674,9 @@
6203         show_serial_version();
6204  
6205         /* Initialize the tty_driver structure */
6206 +       mcfrs_serial_driver->owner = THIS_MODULE;
6207         mcfrs_serial_driver->name = "ttyS";
6208 +       mcfrs_serial_driver->devfs_name = "ttys/";
6209         mcfrs_serial_driver->driver_name = "serial";
6210         mcfrs_serial_driver->major = TTY_MAJOR;
6211         mcfrs_serial_driver->minor_start = 64;
6212 diff -Naur linux-2.6.0-test8/fs/binfmt_flat.c linux-2.6.0-test8-uc0/fs/binfmt_flat.c
6213 --- linux-2.6.0-test8/fs/binfmt_flat.c  2003-10-20 09:10:54.989074600 +1000
6214 +++ linux-2.6.0-test8-uc0/fs/binfmt_flat.c      2003-10-20 09:12:45.018347608 +1000
6215 @@ -179,7 +179,7 @@
6216         unsigned char *buf;
6217         z_stream strm;
6218         loff_t fpos;
6219 -       int ret;
6220 +       int ret, retval;
6221  
6222         DBG_FLT("decompress_exec(offset=%x,buf=%x,len=%x)\n",(int)offset, (int)dst, (int)len);
6223  
6224 @@ -192,7 +192,8 @@
6225         buf = kmalloc(LBUFSIZE, GFP_KERNEL);
6226         if (buf == NULL) {
6227                 DBG_FLT("binfmt_flat: no memory for read buffer\n");
6228 -               return -ENOMEM;
6229 +               retval = -ENOMEM;
6230 +               goto out_free;
6231         }
6232  
6233         /* Read in first chunk of data and parse gzip header. */
6234 @@ -203,28 +204,30 @@
6235         strm.avail_in = ret;
6236         strm.total_in = 0;
6237  
6238 +       retval = -ENOEXEC;
6239 +
6240         /* Check minimum size -- gzip header */
6241         if (ret < 10) {
6242                 DBG_FLT("binfmt_flat: file too small?\n");
6243 -               return -ENOEXEC;
6244 +               goto out_free_buf;
6245         }
6246  
6247         /* Check gzip magic number */
6248         if ((buf[0] != 037) || ((buf[1] != 0213) && (buf[1] != 0236))) {
6249                 DBG_FLT("binfmt_flat: unknown compression magic?\n");
6250 -               return -ENOEXEC;
6251 +               goto out_free_buf;
6252         }
6253  
6254         /* Check gzip method */
6255         if (buf[2] != 8) {
6256                 DBG_FLT("binfmt_flat: unknown compression method?\n");
6257 -               return -ENOEXEC;
6258 +               goto out_free_buf;
6259         }
6260         /* Check gzip flags */
6261         if ((buf[3] & ENCRYPTED) || (buf[3] & CONTINUATION) ||
6262             (buf[3] & RESERVED)) {
6263                 DBG_FLT("binfmt_flat: unknown flags?\n");
6264 -               return -ENOEXEC;
6265 +               goto out_free_buf;
6266         }
6267  
6268         ret = 10;
6269 @@ -232,7 +235,7 @@
6270                 ret += 2 + buf[10] + (buf[11] << 8);
6271                 if (unlikely(LBUFSIZE == ret)) {
6272                         DBG_FLT("binfmt_flat: buffer overflow (EXTRA)?\n");
6273 -                       return -ENOEXEC;
6274 +                       goto out_free_buf;
6275                 }
6276         }
6277         if (buf[3] & ORIG_NAME) {
6278 @@ -240,7 +243,7 @@
6279                         ;
6280                 if (unlikely(LBUFSIZE == ret)) {
6281                         DBG_FLT("binfmt_flat: buffer overflow (ORIG_NAME)?\n");
6282 -                       return -ENOEXEC;
6283 +                       goto out_free_buf;
6284                 }
6285         }
6286         if (buf[3] & COMMENT) {
6287 @@ -248,7 +251,7 @@
6288                         ;
6289                 if (unlikely(LBUFSIZE == ret)) {
6290                         DBG_FLT("binfmt_flat: buffer overflow (COMMENT)?\n");
6291 -                       return -ENOEXEC;
6292 +                       goto out_free_buf;
6293                 }
6294         }
6295  
6296 @@ -261,7 +264,7 @@
6297  
6298         if (zlib_inflateInit2(&strm, -MAX_WBITS) != Z_OK) {
6299                 DBG_FLT("binfmt_flat: zlib init failed?\n");
6300 -               return -ENOEXEC;
6301 +               goto out_free_buf;
6302         }
6303  
6304         while ((ret = zlib_inflate(&strm, Z_NO_FLUSH)) == Z_OK) {
6305 @@ -280,13 +283,17 @@
6306         if (ret < 0) {
6307                 DBG_FLT("binfmt_flat: decompression failed (%d), %s\n",
6308                         ret, strm.msg);
6309 -               return -ENOEXEC;
6310 +               goto out_free_buf;
6311         }
6312  
6313         zlib_inflateEnd(&strm);
6314 +       retval = 0;
6315 +out_free_buf:
6316         kfree(buf);
6317 +out_free:
6318         kfree(strm.workspace);
6319 -       return 0;
6320 +out:
6321 +       return retval;
6322  }
6323  
6324  #endif /* CONFIG_BINFMT_ZFLAT */
6325 diff -Naur linux-2.6.0-test8/fs/Kconfig.binfmt linux-2.6.0-test8-uc0/fs/Kconfig.binfmt
6326 --- linux-2.6.0-test8/fs/Kconfig.binfmt 2003-10-20 09:10:57.047761632 +1000
6327 +++ linux-2.6.0-test8-uc0/fs/Kconfig.binfmt     2003-10-20 09:12:45.006349432 +1000
6328 @@ -40,6 +40,12 @@
6329         help
6330           Support FLAT format compressed binaries
6331  
6332 +config BINFMT_SHARED_FLAT
6333 +       bool "Enable shared FLAT support"
6334 +       depends on BINFMT_FLAT
6335 +       help
6336 +         Support FLAT shared libraries
6337 +
6338  config BINFMT_AOUT
6339         tristate "Kernel support for a.out and ECOFF binaries"
6340         depends on (X86 && !X86_64) || ALPHA || ARM || M68K || MIPS || SPARC
6341 diff -Naur linux-2.6.0-test8/fs/proc/task_nommu.c linux-2.6.0-test8-uc0/fs/proc/task_nommu.c
6342 --- linux-2.6.0-test8/fs/proc/task_nommu.c      2003-10-20 09:10:56.398860280 +1000
6343 +++ linux-2.6.0-test8-uc0/fs/proc/task_nommu.c  2003-10-20 09:12:50.002589888 +1000
6344 @@ -1,6 +1,7 @@
6345  
6346  #include <linux/mm.h>
6347  #include <linux/file.h>
6348 +#include <linux/seq_file.h>
6349  
6350  /*
6351   * Logic: we've got two memory sums for each process, "shared", and
6352 @@ -97,12 +98,28 @@
6353         return size;
6354  }
6355  
6356 -/*
6357 - * Albert D. Cahalan suggested to fake entries for the traditional
6358 - * sections here.  This might be worth investigating.
6359 - */
6360 -ssize_t proc_pid_read_maps(struct task_struct *task, struct file *file,
6361 -                          char *buf, size_t count, loff_t *ppos)
6362 +static int show_map(struct seq_file *m, void *v)
6363  {
6364         return 0;
6365  }
6366 +
6367 +static void *m_start(struct seq_file *m, loff_t *pos)
6368 +{
6369 +       return NULL;
6370 +}
6371 +
6372 +static void m_stop(struct seq_file *m, void *v)
6373 +{
6374 +}
6375 +
6376 +static void *m_next(struct seq_file *m, void *v, loff_t *pos)
6377 +{
6378 +       return NULL;
6379 +}
6380 +
6381 +struct seq_operations proc_pid_maps_op = {
6382 +       .start  = m_start,
6383 +       .next   = m_next,
6384 +       .stop   = m_stop,
6385 +       .show   = show_map
6386 +};
6387 diff -Naur linux-2.6.0-test8/include/asm-m68knommu/bitops.h linux-2.6.0-test8-uc0/include/asm-m68knommu/bitops.h
6388 --- linux-2.6.0-test8/include/asm-m68knommu/bitops.h    2003-10-20 09:11:27.864076840 +1000
6389 +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/bitops.h        2003-10-20 09:13:01.807795224 +1000
6390 @@ -77,12 +77,6 @@
6391  }
6392  
6393  /*
6394 - * fls: find last bit set.
6395 - */
6396 -#define fls(x) generic_fls(x)
6397 -
6398 -
6399 -/*
6400   * Every architecture must define this function. It's the fastest
6401   * way of searching a 140-bit bitmap where the first 100 bits are
6402   * unlikely to be set. It's guaranteed that at least one of the 140
6403 @@ -283,7 +277,7 @@
6404         return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
6405  }
6406  
6407 -static __inline__ int __test_bit(int nr, const unsigned long * addr)
6408 +static __inline__ int __test_bit(int nr, const volatile unsigned long * addr)
6409  {
6410         int     * a = (int *) addr;
6411         int     mask;
6412 @@ -478,4 +472,9 @@
6413  
6414  #endif /* __KERNEL__ */
6415  
6416 +/*
6417 + * fls: find last bit set.
6418 + */
6419 +#define fls(x) generic_fls(x)
6420 +
6421  #endif /* _M68KNOMMU_BITOPS_H */
6422 diff -Naur linux-2.6.0-test8/include/asm-m68knommu/cacheflush.h linux-2.6.0-test8-uc0/include/asm-m68knommu/cacheflush.h
6423 --- linux-2.6.0-test8/include/asm-m68knommu/cacheflush.h        2003-10-20 09:11:27.959062400 +1000
6424 +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/cacheflush.h    2003-10-20 09:13:01.831791576 +1000
6425 @@ -37,13 +37,15 @@
6426                 "1:\n\t"
6427                 "movel  %%d0,%%a0\n\t"
6428                 "2:\n\t"
6429 -               ".word  0xf4e8\n\t"
6430 +               ".word  0xf468\n\t"
6431                 "addl   #0x10,%%a0\n\t"
6432                 "cmpl   #0x00000800,%%a0\n\t"
6433                 "blt    2b\n\t"
6434                 "addql  #1,%%d0\n\t"
6435                 "cmpil  #4,%%d0\n\t"
6436                 "bne    1b\n\t"
6437 +               "movel  #0xb6088500,%%d0\n\t"
6438 +               "movec  %%d0,%%CACR\n\t"
6439                 : : : "d0", "a0" );
6440  #endif /* CONFIG_M5407 */
6441  #ifdef CONFIG_M5272
6442 diff -Naur linux-2.6.0-test8/include/asm-m68knommu/elf.h linux-2.6.0-test8-uc0/include/asm-m68knommu/elf.h
6443 --- linux-2.6.0-test8/include/asm-m68knommu/elf.h       2003-10-20 09:11:27.956062856 +1000
6444 +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/elf.h   2003-10-20 09:13:01.848788992 +1000
6445 @@ -9,6 +9,33 @@
6446  #include <asm/ptrace.h>
6447  #include <asm/user.h>
6448  
6449 +/*
6450 + * 68k ELF relocation types
6451 + */
6452 +#define R_68K_NONE  0
6453 +#define R_68K_32    1
6454 +#define R_68K_16    2
6455 +#define R_68K_8     3
6456 +#define R_68K_PC32  4
6457 +#define R_68K_PC16  5
6458 +#define R_68K_PC8   6
6459 +#define R_68K_GOT32 7
6460 +#define R_68K_GOT16 8
6461 +#define R_68K_GOT8  9
6462 +#define R_68K_GOT32O    10
6463 +#define R_68K_GOT16O    11
6464 +#define R_68K_GOT8O 12
6465 +#define R_68K_PLT32 13
6466 +#define R_68K_PLT16 14
6467 +#define R_68K_PLT8  15
6468 +#define R_68K_PLT32O    16
6469 +#define R_68K_PLT16O    17
6470 +#define R_68K_PLT8O 18
6471 +#define R_68K_COPY  19
6472 +#define R_68K_GLOB_DAT  20
6473 +#define R_68K_JMP_SLOT  21
6474 +#define R_68K_RELATIVE  22
6475 +
6476  typedef unsigned long elf_greg_t;
6477  
6478  #define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t))
6479 diff -Naur linux-2.6.0-test8/include/asm-m68knommu/kmap_types.h linux-2.6.0-test8-uc0/include/asm-m68knommu/kmap_types.h
6480 --- linux-2.6.0-test8/include/asm-m68knommu/kmap_types.h        2003-10-20 09:11:27.862077144 +1000
6481 +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/kmap_types.h    2003-10-20 09:13:01.991767256 +1000
6482 @@ -13,6 +13,8 @@
6483         KM_PTE1,
6484         KM_IRQ0,
6485         KM_IRQ1,
6486 +       KM_SOFTIRQ0,
6487 +       KM_SOFTIRQ1,
6488         KM_TYPE_NR
6489  };
6490  
6491 diff -Naur linux-2.6.0-test8/include/asm-m68knommu/m68360_enet.h linux-2.6.0-test8-uc0/include/asm-m68knommu/m68360_enet.h
6492 --- linux-2.6.0-test8/include/asm-m68knommu/m68360_enet.h       2003-10-20 09:11:27.882074104 +1000
6493 +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/m68360_enet.h   2003-10-20 09:13:01.994766800 +1000
6494 @@ -1,7 +1,4 @@
6495 -/***********************************
6496 - * $Id$
6497 - ***********************************
6498 - *
6499 +/*
6500   ***************************************
6501   * Definitions for the ETHERNET controllers
6502   ***************************************
6503 diff -Naur linux-2.6.0-test8/include/asm-m68knommu/machdep.h linux-2.6.0-test8-uc0/include/asm-m68knommu/machdep.h
6504 --- linux-2.6.0-test8/include/asm-m68knommu/machdep.h   2003-10-20 09:11:27.879074560 +1000
6505 +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/machdep.h       2003-10-20 09:13:01.996766496 +1000
6506 @@ -2,6 +2,7 @@
6507  #define _M68KNOMMU_MACHDEP_H
6508  
6509  #include <linux/seq_file.h>
6510 +#include <linux/interrupt.h>
6511  
6512  struct pt_regs;
6513  struct kbd_repeat;
6514 @@ -10,14 +11,14 @@
6515  struct gendisk;
6516  struct buffer_head;
6517  
6518 -extern void (*mach_sched_init) (void (*handler)(int, void *, struct pt_regs *));
6519 +extern void (*mach_sched_init) (irqreturn_t (*handler)(int, void *, struct pt_regs *));
6520  /* machine dependent keyboard functions */
6521  extern int (*mach_keyb_init) (void);
6522  extern int (*mach_kbdrate) (struct kbd_repeat *);
6523  extern void (*mach_kbd_leds) (unsigned int);
6524  /* machine dependent irq functions */
6525  extern void (*mach_init_IRQ) (void);
6526 -extern void (*(*mach_default_handler)[]) (int, void *, struct pt_regs *);
6527 +extern irqreturn_t (*(*mach_default_handler)[]) (int, void *, struct pt_regs *);
6528  extern int (*mach_request_irq) (unsigned int irq, void (*handler)(int, void *, struct pt_regs *),
6529                                  unsigned long flags, const char *devname, void *dev_id);
6530  extern void (*mach_free_irq) (unsigned int irq, void *dev_id);
6531 diff -Naur linux-2.6.0-test8/include/asm-m68knommu/mcfsmc.h linux-2.6.0-test8-uc0/include/asm-m68knommu/mcfsmc.h
6532 --- linux-2.6.0-test8/include/asm-m68knommu/mcfsmc.h    2003-10-20 09:11:27.880074408 +1000
6533 +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/mcfsmc.h        2003-10-20 09:13:02.023762392 +1000
6534 @@ -21,6 +21,18 @@
6535  
6536  #undef outb
6537  #undef inb
6538 +#undef outw
6539 +#undef outwd
6540 +#undef inw     
6541 +#undef outl
6542 +#undef inl
6543 +
6544 +#undef outsb
6545 +#undef outsw
6546 +#undef outsl
6547 +#undef insb
6548 +#undef insw
6549 +#undef insl
6550  
6551  /*
6552   *     Re-defines for ColdFire environment... The SMC part is
6553 diff -Naur linux-2.6.0-test8/include/asm-m68knommu/types.h linux-2.6.0-test8-uc0/include/asm-m68knommu/types.h
6554 --- linux-2.6.0-test8/include/asm-m68knommu/types.h     2003-10-20 09:11:27.865076688 +1000
6555 +++ linux-2.6.0-test8-uc0/include/asm-m68knommu/types.h 2003-10-20 09:13:02.041759656 +1000
6556 @@ -1,66 +1 @@
6557 -#ifndef _M68K_TYPES_H
6558 -#define _M68K_TYPES_H
6559 -
6560 -/*
6561 - * This file is never included by application software unless
6562 - * explicitly requested (e.g., via linux/types.h) in which case the
6563 - * application is Linux specific so (user-) name space pollution is
6564 - * not a major issue.  However, for interoperability, libraries still
6565 - * need to be careful to avoid a name clashes.
6566 - */
6567 -
6568 -#ifndef __ASSEMBLY__
6569 -
6570 -typedef unsigned short umode_t;
6571 -
6572 -/*
6573 - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
6574 - * header files exported to user space
6575 - */
6576 -
6577 -typedef __signed__ char __s8;
6578 -typedef unsigned char __u8;
6579 -
6580 -typedef __signed__ short __s16;
6581 -typedef unsigned short __u16;
6582 -
6583 -typedef __signed__ int __s32;
6584 -typedef unsigned int __u32;
6585 -
6586 -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
6587 -typedef __signed__ long long __s64;
6588 -typedef unsigned long long __u64;
6589 -#endif
6590 -
6591 -#endif /* __ASSEMBLY__ */
6592 -
6593 -/*
6594 - * These aren't exported outside the kernel to avoid name space clashes
6595 - */
6596 -#ifdef __KERNEL__
6597 -
6598 -#define BITS_PER_LONG 32
6599 -
6600 -#ifndef __ASSEMBLY__
6601 -
6602 -typedef signed char s8;
6603 -typedef unsigned char u8;
6604 -
6605 -typedef signed short s16;
6606 -typedef unsigned short u16;
6607 -
6608 -typedef signed int s32;
6609 -typedef unsigned int u32;
6610 -
6611 -typedef signed long long s64;
6612 -typedef unsigned long long u64;
6613 -
6614 -/* Dma addresses are 32-bits wide.  */
6615 -
6616 -typedef u32 dma_addr_t;
6617 -
6618 -#endif /* __ASSEMBLY__ */
6619 -
6620 -#endif /* __KERNEL__ */
6621 -
6622 -#endif /* _M68K_TYPES_H */
6623 +#include <asm-m68k/types.h>
6624 diff -Naur linux-2.6.0-test8/include/linux/list.h linux-2.6.0-test8-uc0/include/linux/list.h
6625 --- linux-2.6.0-test8/include/linux/list.h      2003-10-20 09:11:18.436510048 +1000
6626 +++ linux-2.6.0-test8-uc0/include/linux/list.h  2003-10-20 09:13:15.424725136 +1000
6627 @@ -3,6 +3,7 @@
6628  
6629  #ifdef __KERNEL__
6630  
6631 +#include <linux/kernel.h>
6632  #include <linux/stddef.h>
6633  #include <linux/prefetch.h>
6634  #include <asm/system.h>
6635 diff -Naur linux-2.6.0-test8/include/linux/mtd/inftl.h linux-2.6.0-test8-uc0/include/linux/mtd/inftl.h
6636 --- linux-2.6.0-test8/include/linux/mtd/inftl.h 2003-10-20 09:11:17.755613560 +1000
6637 +++ linux-2.6.0-test8-uc0/include/linux/mtd/inftl.h     2003-10-20 09:13:16.352584080 +1000
6638 @@ -19,7 +19,7 @@
6639  #define        SECTORSIZE      512
6640  
6641  #ifndef INFTL_MAJOR
6642 -#define INFTL_MAJOR 93 /* FIXME */
6643 +#define INFTL_MAJOR 94
6644  #endif
6645  #define INFTL_PARTN_BITS 4
6646  
6647 diff -Naur linux-2.6.0-test8/mm/nommu.c linux-2.6.0-test8-uc0/mm/nommu.c
6648 --- linux-2.6.0-test8/mm/nommu.c        2003-10-20 09:11:41.792959328 +1000
6649 +++ linux-2.6.0-test8-uc0/mm/nommu.c    2003-10-20 09:13:21.524797784 +1000
6650 @@ -551,6 +551,11 @@
6651         return NULL;
6652  }
6653  
6654 +struct vm_area_struct *find_extend_vma(struct mm_struct *mm, unsigned long addr)
6655 +{
6656 +       return NULL;
6657 +}
6658 +
6659  int remap_page_range(struct vm_area_struct *vma, unsigned long from,
6660                 unsigned long to, unsigned long size, pgprot_t prot)
6661  {
This page took 0.593565 seconds and 3 git commands to generate.