Changeset 715c21d
- Timestamp:
- Nov 20, 2006, 10:18:42 PM (18 years ago)
- Branches:
- clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
- Children:
- 5d65b1a
- Parents:
- d080051
- Location:
- patches
- Files:
-
- 1 added
- 4 moved
Legend:
- Unmodified
- Added
- Removed
-
patches/linux-2.6.18.3-mips-1.patch
rd080051 r715c21d 1 1 Submitted By: Jim Gifford (patches at jg555 dot com) 2 Date: 2006-11- 053 Initial Package Version: 2.6.18. 22 Date: 2006-11-20 3 Initial Package Version: 2.6.18.3 4 4 Origin: Linux-MIPS 5 5 Upstream Status: http://www.linux-mips.org/pub/linux/mips/kernel/v2.6/ 6 6 7 diff -Naur linux-2.6.18. 2/Documentation/mips/time.README linux-mips-2.6.18.2/Documentation/mips/time.README8 --- linux-2.6.18. 2/Documentation/mips/time.README 2006-11-03 17:33:58.000000000 -08009 +++ linux-mips-2.6.18. 2/Documentation/mips/time.README 2006-11-04 14:51:12.000000000 -08007 diff -Naur linux-2.6.18.3/Documentation/mips/time.README linux-mips-2.6.18.3/Documentation/mips/time.README 8 --- linux-2.6.18.3/Documentation/mips/time.README 2006-11-18 19:28:22.000000000 -0800 9 +++ linux-mips-2.6.18.3/Documentation/mips/time.README 2006-11-20 10:09:08.000000000 -0800 10 10 @@ -63,7 +63,7 @@ 11 11 a) board_time_init - a function pointer. Invoked at the beginnig of … … 44 44 or use cpu counter as timer interrupt source) 45 45 46 diff -Naur linux-2.6.18. 2/Makefile linux-mips-2.6.18.2/Makefile47 --- linux-2.6.18. 2/Makefile 2006-11-03 17:33:58.000000000 -080048 +++ linux-mips-2.6.18. 2/Makefile 2006-11-04 14:51:12.000000000 -080046 diff -Naur linux-2.6.18.3/Makefile linux-mips-2.6.18.3/Makefile 47 --- linux-2.6.18.3/Makefile 2006-11-18 19:28:22.000000000 -0800 48 +++ linux-mips-2.6.18.3/Makefile 2006-11-20 10:09:08.000000000 -0800 49 49 @@ -149,10 +149,7 @@ 50 50 # then ARCH is assigned, getting whatever value it gets normally, and … … 59 59 # Cross compiling and selecting different set of gcc/bin-utils 60 60 # --------------------------------------------------------------------------- 61 diff -Naur linux-2.6.18. 2/arch/mips/Kconfig linux-mips-2.6.18.2/arch/mips/Kconfig62 --- linux-2.6.18. 2/arch/mips/Kconfig 2006-11-03 17:33:58.000000000 -080063 +++ linux-mips-2.6.18. 2/arch/mips/Kconfig 2006-11-04 14:51:12.000000000 -080061 diff -Naur linux-2.6.18.3/arch/mips/Kconfig linux-mips-2.6.18.3/arch/mips/Kconfig 62 --- linux-2.6.18.3/arch/mips/Kconfig 2006-11-18 19:28:22.000000000 -0800 63 +++ linux-mips-2.6.18.3/arch/mips/Kconfig 2006-11-20 10:09:08.000000000 -0800 64 64 @@ -126,7 +126,6 @@ 65 65 select IRQ_CPU … … 70 70 select SYS_SUPPORTS_32BIT_KERNEL 71 71 select SYS_SUPPORTS_64BIT_KERNEL 72 @@ -480,7 +479,6 @@ 72 @@ -478,9 +477,8 @@ 73 select SWAP_IO_SPACE 74 select SYS_HAS_CPU_RM7000 73 75 select SYS_SUPPORTS_32BIT_KERNEL 74 select SYS_SUPPORTS_64BIT_KERNEL 76 - select SYS_SUPPORTS_64BIT_KERNEL 77 + select SYS_SUPPORTS_64BIT_KERNEL if BROKEN 75 78 select SYS_SUPPORTS_BIG_ENDIAN 76 79 - select ARCH_SPARSEMEM_ENABLE … … 148 151 This enables support for systems with more than one CPU. If you have 149 152 a system with only one CPU, like most personal computers, say N. If 150 diff -Naur linux-2.6.18.2/arch/mips/Makefile linux-mips-2.6.18.2/arch/mips/Makefile 151 --- linux-2.6.18.2/arch/mips/Makefile 2006-11-03 17:33:58.000000000 -0800 152 +++ linux-mips-2.6.18.2/arch/mips/Makefile 2006-11-04 14:51:12.000000000 -0800 153 @@ -1973,6 +1968,11 @@ 154 depends on MIPS32_COMPAT 155 default y 156 157 +config SYSVIPC_COMPAT 158 + bool 159 + depends on COMPAT && SYSVIPC 160 + default y 161 + 162 config MIPS32_O32 163 bool "Kernel support for o32 binaries" 164 depends on MIPS32_COMPAT 165 diff -Naur linux-2.6.18.3/arch/mips/Makefile linux-mips-2.6.18.3/arch/mips/Makefile 166 --- linux-2.6.18.3/arch/mips/Makefile 2006-11-18 19:28:22.000000000 -0800 167 +++ linux-mips-2.6.18.3/arch/mips/Makefile 2006-11-20 10:09:08.000000000 -0800 153 168 @@ -63,7 +63,9 @@ 154 169 ifdef CONFIG_BUILD_ELF64 … … 190 205 191 206 # 192 diff -Naur linux-2.6.18.2/arch/mips/au1000/db1x00/Makefile linux-mips-2.6.18.2/arch/mips/au1000/db1x00/Makefile 193 --- linux-2.6.18.2/arch/mips/au1000/db1x00/Makefile 2006-11-03 17:33:58.000000000 -0800 194 +++ linux-mips-2.6.18.2/arch/mips/au1000/db1x00/Makefile 2006-11-04 14:51:12.000000000 -0800 207 diff -Naur linux-2.6.18.3/arch/mips/au1000/common/pci.c linux-mips-2.6.18.3/arch/mips/au1000/common/pci.c 208 --- linux-2.6.18.3/arch/mips/au1000/common/pci.c 2006-11-18 19:28:22.000000000 -0800 209 +++ linux-mips-2.6.18.3/arch/mips/au1000/common/pci.c 2006-11-20 10:09:08.000000000 -0800 210 @@ -76,13 +76,17 @@ 211 } 212 213 #ifdef CONFIG_DMA_NONCOHERENT 214 - /* 215 - * Set the NC bit in controller for Au1500 pre-AC silicon 216 - */ 217 - u32 prid = read_c0_prid(); 218 - if ( (prid & 0xFF000000) == 0x01000000 && prid < 0x01030202) { 219 - au_writel( 1<<16 | au_readl(Au1500_PCI_CFG), Au1500_PCI_CFG); 220 - printk("Non-coherent PCI accesses enabled\n"); 221 + { 222 + /* 223 + * Set the NC bit in controller for Au1500 pre-AC silicon 224 + */ 225 + u32 prid = read_c0_prid(); 226 + 227 + if ((prid & 0xFF000000) == 0x01000000 && prid < 0x01030202) { 228 + au_writel((1 << 16) | au_readl(Au1500_PCI_CFG), 229 + Au1500_PCI_CFG); 230 + printk("Non-coherent PCI accesses enabled\n"); 231 + } 232 } 233 #endif 234 235 diff -Naur linux-2.6.18.3/arch/mips/au1000/common/setup.c linux-mips-2.6.18.3/arch/mips/au1000/common/setup.c 236 --- linux-2.6.18.3/arch/mips/au1000/common/setup.c 2006-11-18 19:28:22.000000000 -0800 237 +++ linux-mips-2.6.18.3/arch/mips/au1000/common/setup.c 2006-11-20 10:09:08.000000000 -0800 238 @@ -141,17 +141,20 @@ 239 /* This routine should be valid for all Au1x based boards */ 240 phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size) 241 { 242 - u32 start, end; 243 - 244 /* Don't fixup 36 bit addresses */ 245 - if ((phys_addr >> 32) != 0) return phys_addr; 246 + if ((phys_addr >> 32) != 0) 247 + return phys_addr; 248 249 #ifdef CONFIG_PCI 250 - start = (u32)Au1500_PCI_MEM_START; 251 - end = (u32)Au1500_PCI_MEM_END; 252 - /* check for pci memory window */ 253 - if ((phys_addr >= start) && ((phys_addr + size) < end)) { 254 - return (phys_t)((phys_addr - start) + Au1500_PCI_MEM_START); 255 + { 256 + u32 start, end; 257 + 258 + start = (u32)Au1500_PCI_MEM_START; 259 + end = (u32)Au1500_PCI_MEM_END; 260 + /* check for pci memory window */ 261 + if ((phys_addr >= start) && ((phys_addr + size) < end)) 262 + return (phys_t) 263 + ((phys_addr - start) + Au1500_PCI_MEM_START); 264 } 265 #endif 266 267 diff -Naur linux-2.6.18.3/arch/mips/au1000/db1x00/Makefile linux-mips-2.6.18.3/arch/mips/au1000/db1x00/Makefile 268 --- linux-2.6.18.3/arch/mips/au1000/db1x00/Makefile 2006-11-18 19:28:22.000000000 -0800 269 +++ linux-mips-2.6.18.3/arch/mips/au1000/db1x00/Makefile 2006-11-20 10:09:08.000000000 -0800 195 270 @@ -6,4 +6,3 @@ 196 271 # Makefile for the Alchemy Semiconductor Db1x00 board. … … 198 273 lib-y := init.o board_setup.o irqmap.o 199 274 -obj-$(CONFIG_WM97XX_COMODULE) += mirage_ts.o 200 diff -Naur linux-2.6.18. 2/arch/mips/au1000/db1x00/mirage_ts.c linux-mips-2.6.18.2/arch/mips/au1000/db1x00/mirage_ts.c201 --- linux-2.6.18. 2/arch/mips/au1000/db1x00/mirage_ts.c 2006-11-03 17:33:58.000000000 -0800202 +++ linux-mips-2.6.18. 2/arch/mips/au1000/db1x00/mirage_ts.c 1969-12-31 16:00:00.000000000 -0800275 diff -Naur linux-2.6.18.3/arch/mips/au1000/db1x00/mirage_ts.c linux-mips-2.6.18.3/arch/mips/au1000/db1x00/mirage_ts.c 276 --- linux-2.6.18.3/arch/mips/au1000/db1x00/mirage_ts.c 2006-11-18 19:28:22.000000000 -0800 277 +++ linux-mips-2.6.18.3/arch/mips/au1000/db1x00/mirage_ts.c 1969-12-31 16:00:00.000000000 -0800 203 278 @@ -1,260 +0,0 @@ 204 279 -/* … … 462 537 -module_exit(ts_mirage_exit); 463 538 - 464 diff -Naur linux-2.6.18.2/arch/mips/cobalt/setup.c linux-mips-2.6.18.2/arch/mips/cobalt/setup.c 465 --- linux-2.6.18.2/arch/mips/cobalt/setup.c 2006-11-03 17:33:58.000000000 -0800 466 +++ linux-mips-2.6.18.2/arch/mips/cobalt/setup.c 2006-11-04 14:51:12.000000000 -0800 539 diff -Naur linux-2.6.18.3/arch/mips/au1000/pb1100/board_setup.c linux-mips-2.6.18.3/arch/mips/au1000/pb1100/board_setup.c 540 --- linux-2.6.18.3/arch/mips/au1000/pb1100/board_setup.c 2006-11-18 19:28:22.000000000 -0800 541 +++ linux-mips-2.6.18.3/arch/mips/au1000/pb1100/board_setup.c 2006-11-20 10:09:08.000000000 -0800 542 @@ -47,8 +47,7 @@ 543 544 void __init board_setup(void) 545 { 546 - u32 pin_func; 547 - u32 sys_freqctrl, sys_clksrc; 548 + volatile void __iomem * base = (volatile void __iomem *) 0xac000000UL; 549 550 // set AUX clock to 12MHz * 8 = 96 MHz 551 au_writel(8, SYS_AUXPLL); 552 @@ -56,60 +55,64 @@ 553 udelay(100); 554 555 #if defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE) 556 - // configure pins GPIO[14:9] as GPIO 557 - pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x80); 558 + { 559 + u32 pin_func, sys_freqctrl, sys_clksrc; 560 561 - /* zero and disable FREQ2 */ 562 - sys_freqctrl = au_readl(SYS_FREQCTRL0); 563 - sys_freqctrl &= ~0xFFF00000; 564 - au_writel(sys_freqctrl, SYS_FREQCTRL0); 565 - 566 - /* zero and disable USBH/USBD/IrDA clock */ 567 - sys_clksrc = au_readl(SYS_CLKSRC); 568 - sys_clksrc &= ~0x0000001F; 569 - au_writel(sys_clksrc, SYS_CLKSRC); 570 - 571 - sys_freqctrl = au_readl(SYS_FREQCTRL0); 572 - sys_freqctrl &= ~0xFFF00000; 573 - 574 - sys_clksrc = au_readl(SYS_CLKSRC); 575 - sys_clksrc &= ~0x0000001F; 576 - 577 - // FREQ2 = aux/2 = 48 MHz 578 - sys_freqctrl |= ((0<<22) | (1<<21) | (1<<20)); 579 - au_writel(sys_freqctrl, SYS_FREQCTRL0); 580 - 581 - /* 582 - * Route 48MHz FREQ2 into USBH/USBD/IrDA 583 - */ 584 - sys_clksrc |= ((4<<2) | (0<<1) | 0 ); 585 - au_writel(sys_clksrc, SYS_CLKSRC); 586 - 587 - /* setup the static bus controller */ 588 - au_writel(0x00000002, MEM_STCFG3); /* type = PCMCIA */ 589 - au_writel(0x280E3D07, MEM_STTIME3); /* 250ns cycle time */ 590 - au_writel(0x10000000, MEM_STADDR3); /* any PCMCIA select */ 591 + // configure pins GPIO[14:9] as GPIO 592 + pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x80); 593 594 - // get USB Functionality pin state (device vs host drive pins) 595 - pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000); 596 + /* zero and disable FREQ2 */ 597 + sys_freqctrl = au_readl(SYS_FREQCTRL0); 598 + sys_freqctrl &= ~0xFFF00000; 599 + au_writel(sys_freqctrl, SYS_FREQCTRL0); 600 + 601 + /* zero and disable USBH/USBD/IrDA clock */ 602 + sys_clksrc = au_readl(SYS_CLKSRC); 603 + sys_clksrc &= ~0x0000001F; 604 + au_writel(sys_clksrc, SYS_CLKSRC); 605 + 606 + sys_freqctrl = au_readl(SYS_FREQCTRL0); 607 + sys_freqctrl &= ~0xFFF00000; 608 + 609 + sys_clksrc = au_readl(SYS_CLKSRC); 610 + sys_clksrc &= ~0x0000001F; 611 + 612 + // FREQ2 = aux/2 = 48 MHz 613 + sys_freqctrl |= ((0<<22) | (1<<21) | (1<<20)); 614 + au_writel(sys_freqctrl, SYS_FREQCTRL0); 615 + 616 + /* 617 + * Route 48MHz FREQ2 into USBH/USBD/IrDA 618 + */ 619 + sys_clksrc |= ((4<<2) | (0<<1) | 0 ); 620 + au_writel(sys_clksrc, SYS_CLKSRC); 621 + 622 + /* setup the static bus controller */ 623 + au_writel(0x00000002, MEM_STCFG3); /* type = PCMCIA */ 624 + au_writel(0x280E3D07, MEM_STTIME3); /* 250ns cycle time */ 625 + au_writel(0x10000000, MEM_STADDR3); /* any PCMCIA select */ 626 + 627 + // get USB Functionality pin state (device vs host drive pins) 628 + pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000); 629 #ifndef CONFIG_AU1X00_USB_DEVICE 630 - // 2nd USB port is USB host 631 - pin_func |= 0x8000; 632 + // 2nd USB port is USB host 633 + pin_func |= 0x8000; 634 #endif 635 - au_writel(pin_func, SYS_PINFUNC); 636 + au_writel(pin_func, SYS_PINFUNC); 637 + } 638 #endif // defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE) 639 640 /* Enable sys bus clock divider when IDLE state or no bus activity. */ 641 au_writel(au_readl(SYS_POWERCTRL) | (0x3 << 5), SYS_POWERCTRL); 642 643 // Enable the RTC if not already enabled 644 - if (!(readb(0xac000028) & 0x20)) { 645 - writeb(readb(0xac000028) | 0x20, 0xac000028); 646 + if (!(readb(base + 0x28) & 0x20)) { 647 + writeb(readb(base + 0x28) | 0x20, base + 0x28); 648 au_sync(); 649 } 650 // Put the clock in BCD mode 651 - if (readb(0xac00002C) & 0x4) { /* reg B */ 652 - writeb(readb(0xac00002c) & ~0x4, 0xac00002c); 653 + if (readb(base + 0x2C) & 0x4) { /* reg B */ 654 + writeb(readb(base + 0x2c) & ~0x4, base + 0x2c); 655 au_sync(); 656 } 657 } 658 diff -Naur linux-2.6.18.3/arch/mips/cobalt/setup.c linux-mips-2.6.18.3/arch/mips/cobalt/setup.c 659 --- linux-2.6.18.3/arch/mips/cobalt/setup.c 2006-11-18 19:28:22.000000000 -0800 660 +++ linux-mips-2.6.18.3/arch/mips/cobalt/setup.c 2006-11-20 10:09:08.000000000 -0800 467 661 @@ -51,8 +51,8 @@ 468 662 … … 476 670 /* Enable timer */ 477 671 GALILEO_OUTL(GALILEO_ENTC0 | GALILEO_SELTC0, GT_TC_CONTROL_OFS); 478 diff -Naur linux-2.6.18. 2/arch/mips/configs/e55_defconfig linux-mips-2.6.18.2/arch/mips/configs/e55_defconfig479 --- linux-2.6.18. 2/arch/mips/configs/e55_defconfig 2006-11-03 17:33:58.000000000 -0800480 +++ linux-mips-2.6.18. 2/arch/mips/configs/e55_defconfig 2006-11-04 14:51:12.000000000 -0800672 diff -Naur linux-2.6.18.3/arch/mips/configs/e55_defconfig linux-mips-2.6.18.3/arch/mips/configs/e55_defconfig 673 --- linux-2.6.18.3/arch/mips/configs/e55_defconfig 2006-11-18 19:28:22.000000000 -0800 674 +++ linux-mips-2.6.18.3/arch/mips/configs/e55_defconfig 2006-11-20 10:09:08.000000000 -0800 481 675 @@ -1,7 +1,7 @@ 482 676 # … … 530 724 # 531 725 # Security options 532 diff -Naur linux-2.6.18. 2/arch/mips/configs/mpc30x_defconfig linux-mips-2.6.18.2/arch/mips/configs/mpc30x_defconfig533 --- linux-2.6.18. 2/arch/mips/configs/mpc30x_defconfig 2006-11-03 17:33:58.000000000 -0800534 +++ linux-mips-2.6.18. 2/arch/mips/configs/mpc30x_defconfig 2006-11-04 14:51:12.000000000 -0800726 diff -Naur linux-2.6.18.3/arch/mips/configs/mpc30x_defconfig linux-mips-2.6.18.3/arch/mips/configs/mpc30x_defconfig 727 --- linux-2.6.18.3/arch/mips/configs/mpc30x_defconfig 2006-11-18 19:28:22.000000000 -0800 728 +++ linux-mips-2.6.18.3/arch/mips/configs/mpc30x_defconfig 2006-11-20 10:09:08.000000000 -0800 535 729 @@ -1,7 +1,7 @@ 536 730 # … … 593 787 # 594 788 # Security options 595 diff -Naur linux-2.6.18. 2/arch/mips/configs/workpad_defconfig linux-mips-2.6.18.2/arch/mips/configs/workpad_defconfig596 --- linux-2.6.18. 2/arch/mips/configs/workpad_defconfig 2006-11-03 17:33:58.000000000 -0800597 +++ linux-mips-2.6.18. 2/arch/mips/configs/workpad_defconfig 2006-11-04 14:51:12.000000000 -0800789 diff -Naur linux-2.6.18.3/arch/mips/configs/workpad_defconfig linux-mips-2.6.18.3/arch/mips/configs/workpad_defconfig 790 --- linux-2.6.18.3/arch/mips/configs/workpad_defconfig 2006-11-18 19:28:22.000000000 -0800 791 +++ linux-mips-2.6.18.3/arch/mips/configs/workpad_defconfig 2006-11-20 10:09:08.000000000 -0800 598 792 @@ -1,7 +1,7 @@ 599 793 # … … 647 841 # 648 842 # Security options 649 diff -Naur linux-2.6.18.2/arch/mips/kernel/asm-offsets.c linux-mips-2.6.18.2/arch/mips/kernel/asm-offsets.c 650 --- linux-2.6.18.2/arch/mips/kernel/asm-offsets.c 2006-11-03 17:33:58.000000000 -0800 651 +++ linux-mips-2.6.18.2/arch/mips/kernel/asm-offsets.c 2006-11-04 14:51:12.000000000 -0800 843 diff -Naur linux-2.6.18.3/arch/mips/gt64120/common/time.c linux-mips-2.6.18.3/arch/mips/gt64120/common/time.c 844 --- linux-2.6.18.3/arch/mips/gt64120/common/time.c 2006-11-18 19:28:22.000000000 -0800 845 +++ linux-mips-2.6.18.3/arch/mips/gt64120/common/time.c 2006-11-20 10:09:08.000000000 -0800 846 @@ -62,14 +62,14 @@ 847 * as *irq (=irq0 in ../kernel/time.c). We will do our own timer interrupt 848 * handling. 849 */ 850 -void gt64120_time_init(void) 851 +void __init plat_timer_setup(struct irqaction *irq) 852 { 853 static struct irqaction timer; 854 855 /* Disable timer first */ 856 GT_WRITE(GT_TC_CONTROL_OFS, 0); 857 /* Load timer value for 100 Hz */ 858 - GT_WRITE(GT_TC3_OFS, Sys_clock / 100); 859 + GT_WRITE(GT_TC3_OFS, Sys_clock / HZ); 860 861 /* 862 * Create the IRQ structure entry for the timer. Since we're too early 863 diff -Naur linux-2.6.18.3/arch/mips/gt64120/ev64120/setup.c linux-mips-2.6.18.3/arch/mips/gt64120/ev64120/setup.c 864 --- linux-2.6.18.3/arch/mips/gt64120/ev64120/setup.c 2006-11-18 19:28:22.000000000 -0800 865 +++ linux-mips-2.6.18.3/arch/mips/gt64120/ev64120/setup.c 2006-11-20 10:09:08.000000000 -0800 866 @@ -69,7 +69,6 @@ 867 * Initializes basic routines and structures pointers, memory size (as 868 * given by the bios and saves the command line. 869 */ 870 -extern void gt64120_time_init(void); 871 872 void __init plat_mem_setup(void) 873 { 874 @@ -77,7 +76,6 @@ 875 _machine_halt = galileo_machine_halt; 876 pm_power_off = galileo_machine_power_off; 877 878 - board_time_init = gt64120_time_init; 879 set_io_port_base(KSEG1); 880 } 881 882 diff -Naur linux-2.6.18.3/arch/mips/gt64120/momenco_ocelot/setup.c linux-mips-2.6.18.3/arch/mips/gt64120/momenco_ocelot/setup.c 883 --- linux-2.6.18.3/arch/mips/gt64120/momenco_ocelot/setup.c 2006-11-18 19:28:22.000000000 -0800 884 +++ linux-mips-2.6.18.3/arch/mips/gt64120/momenco_ocelot/setup.c 2006-11-20 10:09:08.000000000 -0800 885 @@ -71,7 +71,6 @@ 886 extern void momenco_ocelot_halt(void); 887 extern void momenco_ocelot_power_off(void); 888 889 -extern void gt64120_time_init(void); 890 extern void momenco_ocelot_irq_setup(void); 891 892 static char reset_reason; 893 @@ -157,8 +156,6 @@ 894 void (*l3func)(unsigned long)=KSEG1ADDR(&setup_l3cache); 895 unsigned int tmpword; 896 897 - board_time_init = gt64120_time_init; 898 - 899 _machine_restart = momenco_ocelot_restart; 900 _machine_halt = momenco_ocelot_halt; 901 pm_power_off = momenco_ocelot_power_off; 902 diff -Naur linux-2.6.18.3/arch/mips/kernel/asm-offsets.c linux-mips-2.6.18.3/arch/mips/kernel/asm-offsets.c 903 --- linux-2.6.18.3/arch/mips/kernel/asm-offsets.c 2006-11-18 19:28:22.000000000 -0800 904 +++ linux-mips-2.6.18.3/arch/mips/kernel/asm-offsets.c 2006-11-20 10:09:08.000000000 -0800 652 905 @@ -22,7 +22,7 @@ 653 906 #define offset(string, ptr, member) \ … … 659 912 __asm__("\n@@@" string "%0" : : "i" (sizeof(size))) 660 913 #define linefeed text("") 661 diff -Naur linux-2.6.18. 2/arch/mips/kernel/cpu-probe.c linux-mips-2.6.18.2/arch/mips/kernel/cpu-probe.c662 --- linux-2.6.18. 2/arch/mips/kernel/cpu-probe.c 2006-11-03 17:33:58.000000000 -0800663 +++ linux-mips-2.6.18. 2/arch/mips/kernel/cpu-probe.c 2006-11-04 14:51:12.000000000 -0800914 diff -Naur linux-2.6.18.3/arch/mips/kernel/cpu-probe.c linux-mips-2.6.18.3/arch/mips/kernel/cpu-probe.c 915 --- linux-2.6.18.3/arch/mips/kernel/cpu-probe.c 2006-11-18 19:28:22.000000000 -0800 916 +++ linux-mips-2.6.18.3/arch/mips/kernel/cpu-probe.c 2006-11-20 10:09:08.000000000 -0800 664 917 @@ -38,15 +38,40 @@ 665 918 … … 772 1025 printk(" unavailable.\n"); 773 1026 break; 774 diff -Naur linux-2.6.18. 2/arch/mips/kernel/head.S linux-mips-2.6.18.2/arch/mips/kernel/head.S775 --- linux-2.6.18. 2/arch/mips/kernel/head.S 2006-11-03 17:33:58.000000000 -0800776 +++ linux-mips-2.6.18. 2/arch/mips/kernel/head.S 2006-11-04 14:51:12.000000000 -08001027 diff -Naur linux-2.6.18.3/arch/mips/kernel/head.S linux-mips-2.6.18.3/arch/mips/kernel/head.S 1028 --- linux-2.6.18.3/arch/mips/kernel/head.S 2006-11-18 19:28:22.000000000 -0800 1029 +++ linux-mips-2.6.18.3/arch/mips/kernel/head.S 2006-11-20 10:09:08.000000000 -0800 777 1030 @@ -189,7 +189,8 @@ 778 1031 … … 785 1038 PTR_SUBU sp, 4 * SZREG # init stack pointer 786 1039 787 diff -Naur linux-2.6.18. 2/arch/mips/kernel/irixsig.c linux-mips-2.6.18.2/arch/mips/kernel/irixsig.c788 --- linux-2.6.18. 2/arch/mips/kernel/irixsig.c 2006-11-03 17:33:58.000000000 -0800789 +++ linux-mips-2.6.18. 2/arch/mips/kernel/irixsig.c 2006-11-04 14:51:12.000000000 -08001040 diff -Naur linux-2.6.18.3/arch/mips/kernel/irixsig.c linux-mips-2.6.18.3/arch/mips/kernel/irixsig.c 1041 --- linux-2.6.18.3/arch/mips/kernel/irixsig.c 2006-11-18 19:28:22.000000000 -0800 1042 +++ linux-mips-2.6.18.3/arch/mips/kernel/irixsig.c 2006-11-20 10:09:08.000000000 -0800 790 1043 @@ -17,6 +17,7 @@ 791 1044 … … 904 1157 905 1158 /* hate hate hate... */ 906 diff -Naur linux-2.6.18.2/arch/mips/kernel/linux32.c linux-mips-2.6.18.2/arch/mips/kernel/linux32.c 907 --- linux-2.6.18.2/arch/mips/kernel/linux32.c 2006-11-03 17:33:58.000000000 -0800 908 +++ linux-mips-2.6.18.2/arch/mips/kernel/linux32.c 2006-11-04 14:51:12.000000000 -0800 909 @@ -1053,7 +1053,9 @@ 1159 diff -Naur linux-2.6.18.3/arch/mips/kernel/irq.c linux-mips-2.6.18.3/arch/mips/kernel/irq.c 1160 --- linux-2.6.18.3/arch/mips/kernel/irq.c 2006-11-18 19:28:22.000000000 -0800 1161 +++ linux-mips-2.6.18.3/arch/mips/kernel/irq.c 2006-11-20 10:09:08.000000000 -0800 1162 @@ -26,6 +26,48 @@ 1163 #include <asm/system.h> 1164 #include <asm/uaccess.h> 1165 1166 +static unsigned long irq_map[NR_IRQS / BITS_PER_LONG]; 1167 + 1168 +int __devinit allocate_irqno(void) 1169 +{ 1170 + int irq; 1171 + 1172 +again: 1173 + irq = find_first_zero_bit(irq_map, NR_IRQS); 1174 + 1175 + if (irq >= NR_IRQS) 1176 + return -ENOSPC; 1177 + 1178 + if (test_and_set_bit(irq, irq_map)) 1179 + goto again; 1180 + 1181 + return irq; 1182 +} 1183 + 1184 +EXPORT_SYMBOL_GPL(allocate_irqno); 1185 + 1186 +/* 1187 + * Allocate the 16 legacy interrupts for i8259 devices. This happens early 1188 + * in the kernel initialization so treating allocation failure as BUG() is 1189 + * ok. 1190 + */ 1191 +void __init alloc_legacy_irqno(void) 1192 +{ 1193 + int i; 1194 + 1195 + for (i = 0; i <= 16; i++) 1196 + BUG_ON(test_and_set_bit(i, irq_map)); 1197 +} 1198 + 1199 +void __devinit free_irqno(unsigned int irq) 1200 +{ 1201 + smp_mb__before_clear_bit(); 1202 + clear_bit(irq, irq_map); 1203 + smp_mb__after_clear_bit(); 1204 +} 1205 + 1206 +EXPORT_SYMBOL_GPL(free_irqno); 1207 + 1208 /* 1209 * 'what should we do if we get a hw irq event on an illegal vector'. 1210 * each architecture has to answer this themselves. 1211 diff -Naur linux-2.6.18.3/arch/mips/kernel/linux32.c linux-mips-2.6.18.3/arch/mips/kernel/linux32.c 1212 --- linux-2.6.18.3/arch/mips/kernel/linux32.c 2006-11-18 19:28:22.000000000 -0800 1213 +++ linux-mips-2.6.18.3/arch/mips/kernel/linux32.c 2006-11-20 10:09:08.000000000 -0800 1214 @@ -380,531 +380,6 @@ 1215 return ret; 1216 } 1217 1218 -struct msgbuf32 { s32 mtype; char mtext[1]; }; 1219 - 1220 -struct ipc_perm32 1221 -{ 1222 - key_t key; 1223 - __compat_uid_t uid; 1224 - __compat_gid_t gid; 1225 - __compat_uid_t cuid; 1226 - __compat_gid_t cgid; 1227 - compat_mode_t mode; 1228 - unsigned short seq; 1229 -}; 1230 - 1231 -struct ipc64_perm32 { 1232 - key_t key; 1233 - __compat_uid_t uid; 1234 - __compat_gid_t gid; 1235 - __compat_uid_t cuid; 1236 - __compat_gid_t cgid; 1237 - compat_mode_t mode; 1238 - unsigned short seq; 1239 - unsigned short __pad1; 1240 - unsigned int __unused1; 1241 - unsigned int __unused2; 1242 -}; 1243 - 1244 -struct semid_ds32 { 1245 - struct ipc_perm32 sem_perm; /* permissions .. see ipc.h */ 1246 - compat_time_t sem_otime; /* last semop time */ 1247 - compat_time_t sem_ctime; /* last change time */ 1248 - u32 sem_base; /* ptr to first semaphore in array */ 1249 - u32 sem_pending; /* pending operations to be processed */ 1250 - u32 sem_pending_last; /* last pending operation */ 1251 - u32 undo; /* undo requests on this array */ 1252 - unsigned short sem_nsems; /* no. of semaphores in array */ 1253 -}; 1254 - 1255 -struct semid64_ds32 { 1256 - struct ipc64_perm32 sem_perm; 1257 - compat_time_t sem_otime; 1258 - compat_time_t sem_ctime; 1259 - unsigned int sem_nsems; 1260 - unsigned int __unused1; 1261 - unsigned int __unused2; 1262 -}; 1263 - 1264 -struct msqid_ds32 1265 -{ 1266 - struct ipc_perm32 msg_perm; 1267 - u32 msg_first; 1268 - u32 msg_last; 1269 - compat_time_t msg_stime; 1270 - compat_time_t msg_rtime; 1271 - compat_time_t msg_ctime; 1272 - u32 wwait; 1273 - u32 rwait; 1274 - unsigned short msg_cbytes; 1275 - unsigned short msg_qnum; 1276 - unsigned short msg_qbytes; 1277 - compat_ipc_pid_t msg_lspid; 1278 - compat_ipc_pid_t msg_lrpid; 1279 -}; 1280 - 1281 -struct msqid64_ds32 { 1282 - struct ipc64_perm32 msg_perm; 1283 - compat_time_t msg_stime; 1284 - unsigned int __unused1; 1285 - compat_time_t msg_rtime; 1286 - unsigned int __unused2; 1287 - compat_time_t msg_ctime; 1288 - unsigned int __unused3; 1289 - unsigned int msg_cbytes; 1290 - unsigned int msg_qnum; 1291 - unsigned int msg_qbytes; 1292 - compat_pid_t msg_lspid; 1293 - compat_pid_t msg_lrpid; 1294 - unsigned int __unused4; 1295 - unsigned int __unused5; 1296 -}; 1297 - 1298 -struct shmid_ds32 { 1299 - struct ipc_perm32 shm_perm; 1300 - int shm_segsz; 1301 - compat_time_t shm_atime; 1302 - compat_time_t shm_dtime; 1303 - compat_time_t shm_ctime; 1304 - compat_ipc_pid_t shm_cpid; 1305 - compat_ipc_pid_t shm_lpid; 1306 - unsigned short shm_nattch; 1307 -}; 1308 - 1309 -struct shmid64_ds32 { 1310 - struct ipc64_perm32 shm_perm; 1311 - compat_size_t shm_segsz; 1312 - compat_time_t shm_atime; 1313 - compat_time_t shm_dtime; 1314 - compat_time_t shm_ctime; 1315 - compat_pid_t shm_cpid; 1316 - compat_pid_t shm_lpid; 1317 - unsigned int shm_nattch; 1318 - unsigned int __unused1; 1319 - unsigned int __unused2; 1320 -}; 1321 - 1322 -struct ipc_kludge32 { 1323 - u32 msgp; 1324 - s32 msgtyp; 1325 -}; 1326 - 1327 -static int 1328 -do_sys32_semctl(int first, int second, int third, void __user *uptr) 1329 -{ 1330 - union semun fourth; 1331 - u32 pad; 1332 - int err, err2; 1333 - struct semid64_ds s; 1334 - mm_segment_t old_fs; 1335 - 1336 - if (!uptr) 1337 - return -EINVAL; 1338 - err = -EFAULT; 1339 - if (get_user (pad, (u32 __user *)uptr)) 1340 - return err; 1341 - if ((third & ~IPC_64) == SETVAL) 1342 - fourth.val = (int)pad; 1343 - else 1344 - fourth.__pad = (void __user *)A(pad); 1345 - switch (third & ~IPC_64) { 1346 - case IPC_INFO: 1347 - case IPC_RMID: 1348 - case IPC_SET: 1349 - case SEM_INFO: 1350 - case GETVAL: 1351 - case GETPID: 1352 - case GETNCNT: 1353 - case GETZCNT: 1354 - case GETALL: 1355 - case SETVAL: 1356 - case SETALL: 1357 - err = sys_semctl (first, second, third, fourth); 1358 - break; 1359 - 1360 - case IPC_STAT: 1361 - case SEM_STAT: 1362 - fourth.__pad = (struct semid64_ds __user *)&s; 1363 - old_fs = get_fs(); 1364 - set_fs(KERNEL_DS); 1365 - err = sys_semctl(first, second, third | IPC_64, fourth); 1366 - set_fs(old_fs); 1367 - 1368 - if (third & IPC_64) { 1369 - struct semid64_ds32 __user *usp64 = (struct semid64_ds32 __user *) A(pad); 1370 - 1371 - if (!access_ok(VERIFY_WRITE, usp64, sizeof(*usp64))) { 1372 - err = -EFAULT; 1373 - break; 1374 - } 1375 - err2 = __put_user(s.sem_perm.key, &usp64->sem_perm.key); 1376 - err2 |= __put_user(s.sem_perm.uid, &usp64->sem_perm.uid); 1377 - err2 |= __put_user(s.sem_perm.gid, &usp64->sem_perm.gid); 1378 - err2 |= __put_user(s.sem_perm.cuid, &usp64->sem_perm.cuid); 1379 - err2 |= __put_user(s.sem_perm.cgid, &usp64->sem_perm.cgid); 1380 - err2 |= __put_user(s.sem_perm.mode, &usp64->sem_perm.mode); 1381 - err2 |= __put_user(s.sem_perm.seq, &usp64->sem_perm.seq); 1382 - err2 |= __put_user(s.sem_otime, &usp64->sem_otime); 1383 - err2 |= __put_user(s.sem_ctime, &usp64->sem_ctime); 1384 - err2 |= __put_user(s.sem_nsems, &usp64->sem_nsems); 1385 - } else { 1386 - struct semid_ds32 __user *usp32 = (struct semid_ds32 __user *) A(pad); 1387 - 1388 - if (!access_ok(VERIFY_WRITE, usp32, sizeof(*usp32))) { 1389 - err = -EFAULT; 1390 - break; 1391 - } 1392 - err2 = __put_user(s.sem_perm.key, &usp32->sem_perm.key); 1393 - err2 |= __put_user(s.sem_perm.uid, &usp32->sem_perm.uid); 1394 - err2 |= __put_user(s.sem_perm.gid, &usp32->sem_perm.gid); 1395 - err2 |= __put_user(s.sem_perm.cuid, &usp32->sem_perm.cuid); 1396 - err2 |= __put_user(s.sem_perm.cgid, &usp32->sem_perm.cgid); 1397 - err2 |= __put_user(s.sem_perm.mode, &usp32->sem_perm.mode); 1398 - err2 |= __put_user(s.sem_perm.seq, &usp32->sem_perm.seq); 1399 - err2 |= __put_user(s.sem_otime, &usp32->sem_otime); 1400 - err2 |= __put_user(s.sem_ctime, &usp32->sem_ctime); 1401 - err2 |= __put_user(s.sem_nsems, &usp32->sem_nsems); 1402 - } 1403 - if (err2) 1404 - err = -EFAULT; 1405 - break; 1406 - 1407 - default: 1408 - err = - EINVAL; 1409 - break; 1410 - } 1411 - 1412 - return err; 1413 -} 1414 - 1415 -static int 1416 -do_sys32_msgsnd (int first, int second, int third, void __user *uptr) 1417 -{ 1418 - struct msgbuf32 __user *up = (struct msgbuf32 __user *)uptr; 1419 - struct msgbuf *p; 1420 - mm_segment_t old_fs; 1421 - int err; 1422 - 1423 - if (second < 0) 1424 - return -EINVAL; 1425 - p = kmalloc (second + sizeof (struct msgbuf) 1426 - + 4, GFP_USER); 1427 - if (!p) 1428 - return -ENOMEM; 1429 - err = get_user (p->mtype, &up->mtype); 1430 - if (err) 1431 - goto out; 1432 - err |= __copy_from_user (p->mtext, &up->mtext, second); 1433 - if (err) 1434 - goto out; 1435 - old_fs = get_fs (); 1436 - set_fs (KERNEL_DS); 1437 - err = sys_msgsnd (first, (struct msgbuf __user *)p, second, third); 1438 - set_fs (old_fs); 1439 -out: 1440 - kfree (p); 1441 - 1442 - return err; 1443 -} 1444 - 1445 -static int 1446 -do_sys32_msgrcv (int first, int second, int msgtyp, int third, 1447 - int version, void __user *uptr) 1448 -{ 1449 - struct msgbuf32 __user *up; 1450 - struct msgbuf *p; 1451 - mm_segment_t old_fs; 1452 - int err; 1453 - 1454 - if (!version) { 1455 - struct ipc_kludge32 __user *uipck = (struct ipc_kludge32 __user *)uptr; 1456 - struct ipc_kludge32 ipck; 1457 - 1458 - err = -EINVAL; 1459 - if (!uptr) 1460 - goto out; 1461 - err = -EFAULT; 1462 - if (copy_from_user (&ipck, uipck, sizeof (struct ipc_kludge32))) 1463 - goto out; 1464 - uptr = (void __user *)AA(ipck.msgp); 1465 - msgtyp = ipck.msgtyp; 1466 - } 1467 - 1468 - if (second < 0) 1469 - return -EINVAL; 1470 - err = -ENOMEM; 1471 - p = kmalloc (second + sizeof (struct msgbuf) + 4, GFP_USER); 1472 - if (!p) 1473 - goto out; 1474 - old_fs = get_fs (); 1475 - set_fs (KERNEL_DS); 1476 - err = sys_msgrcv (first, (struct msgbuf __user *)p, second + 4, msgtyp, third); 1477 - set_fs (old_fs); 1478 - if (err < 0) 1479 - goto free_then_out; 1480 - up = (struct msgbuf32 __user *)uptr; 1481 - if (put_user (p->mtype, &up->mtype) || 1482 - __copy_to_user (&up->mtext, p->mtext, err)) 1483 - err = -EFAULT; 1484 -free_then_out: 1485 - kfree (p); 1486 -out: 1487 - return err; 1488 -} 1489 - 1490 -static int 1491 -do_sys32_msgctl (int first, int second, void __user *uptr) 1492 -{ 1493 - int err = -EINVAL, err2; 1494 - struct msqid64_ds m; 1495 - struct msqid_ds32 __user *up32 = (struct msqid_ds32 __user *)uptr; 1496 - struct msqid64_ds32 __user *up64 = (struct msqid64_ds32 __user *)uptr; 1497 - mm_segment_t old_fs; 1498 - 1499 - switch (second & ~IPC_64) { 1500 - case IPC_INFO: 1501 - case IPC_RMID: 1502 - case MSG_INFO: 1503 - err = sys_msgctl (first, second, (struct msqid_ds __user *)uptr); 1504 - break; 1505 - 1506 - case IPC_SET: 1507 - if (second & IPC_64) { 1508 - if (!access_ok(VERIFY_READ, up64, sizeof(*up64))) { 1509 - err = -EFAULT; 1510 - break; 1511 - } 1512 - err = __get_user(m.msg_perm.uid, &up64->msg_perm.uid); 1513 - err |= __get_user(m.msg_perm.gid, &up64->msg_perm.gid); 1514 - err |= __get_user(m.msg_perm.mode, &up64->msg_perm.mode); 1515 - err |= __get_user(m.msg_qbytes, &up64->msg_qbytes); 1516 - } else { 1517 - if (!access_ok(VERIFY_READ, up32, sizeof(*up32))) { 1518 - err = -EFAULT; 1519 - break; 1520 - } 1521 - err = __get_user(m.msg_perm.uid, &up32->msg_perm.uid); 1522 - err |= __get_user(m.msg_perm.gid, &up32->msg_perm.gid); 1523 - err |= __get_user(m.msg_perm.mode, &up32->msg_perm.mode); 1524 - err |= __get_user(m.msg_qbytes, &up32->msg_qbytes); 1525 - } 1526 - if (err) 1527 - break; 1528 - old_fs = get_fs(); 1529 - set_fs(KERNEL_DS); 1530 - err = sys_msgctl(first, second | IPC_64, (struct msqid_ds __user *)&m); 1531 - set_fs(old_fs); 1532 - break; 1533 - 1534 - case IPC_STAT: 1535 - case MSG_STAT: 1536 - old_fs = get_fs(); 1537 - set_fs(KERNEL_DS); 1538 - err = sys_msgctl(first, second | IPC_64, (struct msqid_ds __user *)&m); 1539 - set_fs(old_fs); 1540 - if (second & IPC_64) { 1541 - if (!access_ok(VERIFY_WRITE, up64, sizeof(*up64))) { 1542 - err = -EFAULT; 1543 - break; 1544 - } 1545 - err2 = __put_user(m.msg_perm.key, &up64->msg_perm.key); 1546 - err2 |= __put_user(m.msg_perm.uid, &up64->msg_perm.uid); 1547 - err2 |= __put_user(m.msg_perm.gid, &up64->msg_perm.gid); 1548 - err2 |= __put_user(m.msg_perm.cuid, &up64->msg_perm.cuid); 1549 - err2 |= __put_user(m.msg_perm.cgid, &up64->msg_perm.cgid); 1550 - err2 |= __put_user(m.msg_perm.mode, &up64->msg_perm.mode); 1551 - err2 |= __put_user(m.msg_perm.seq, &up64->msg_perm.seq); 1552 - err2 |= __put_user(m.msg_stime, &up64->msg_stime); 1553 - err2 |= __put_user(m.msg_rtime, &up64->msg_rtime); 1554 - err2 |= __put_user(m.msg_ctime, &up64->msg_ctime); 1555 - err2 |= __put_user(m.msg_cbytes, &up64->msg_cbytes); 1556 - err2 |= __put_user(m.msg_qnum, &up64->msg_qnum); 1557 - err2 |= __put_user(m.msg_qbytes, &up64->msg_qbytes); 1558 - err2 |= __put_user(m.msg_lspid, &up64->msg_lspid); 1559 - err2 |= __put_user(m.msg_lrpid, &up64->msg_lrpid); 1560 - if (err2) 1561 - err = -EFAULT; 1562 - } else { 1563 - if (!access_ok(VERIFY_WRITE, up32, sizeof(*up32))) { 1564 - err = -EFAULT; 1565 - break; 1566 - } 1567 - err2 = __put_user(m.msg_perm.key, &up32->msg_perm.key); 1568 - err2 |= __put_user(m.msg_perm.uid, &up32->msg_perm.uid); 1569 - err2 |= __put_user(m.msg_perm.gid, &up32->msg_perm.gid); 1570 - err2 |= __put_user(m.msg_perm.cuid, &up32->msg_perm.cuid); 1571 - err2 |= __put_user(m.msg_perm.cgid, &up32->msg_perm.cgid); 1572 - err2 |= __put_user(m.msg_perm.mode, &up32->msg_perm.mode); 1573 - err2 |= __put_user(m.msg_perm.seq, &up32->msg_perm.seq); 1574 - err2 |= __put_user(m.msg_stime, &up32->msg_stime); 1575 - err2 |= __put_user(m.msg_rtime, &up32->msg_rtime); 1576 - err2 |= __put_user(m.msg_ctime, &up32->msg_ctime); 1577 - err2 |= __put_user(m.msg_cbytes, &up32->msg_cbytes); 1578 - err2 |= __put_user(m.msg_qnum, &up32->msg_qnum); 1579 - err2 |= __put_user(m.msg_qbytes, &up32->msg_qbytes); 1580 - err2 |= __put_user(m.msg_lspid, &up32->msg_lspid); 1581 - err2 |= __put_user(m.msg_lrpid, &up32->msg_lrpid); 1582 - if (err2) 1583 - err = -EFAULT; 1584 - } 1585 - break; 1586 - } 1587 - 1588 - return err; 1589 -} 1590 - 1591 -static int 1592 -do_sys32_shmat (int first, int second, int third, int version, void __user *uptr) 1593 -{ 1594 - unsigned long raddr; 1595 - u32 __user *uaddr = (u32 __user *)A((u32)third); 1596 - int err = -EINVAL; 1597 - 1598 - if (version == 1) 1599 - return err; 1600 - err = do_shmat (first, uptr, second, &raddr); 1601 - if (err) 1602 - return err; 1603 - err = put_user (raddr, uaddr); 1604 - return err; 1605 -} 1606 - 1607 -struct shm_info32 { 1608 - int used_ids; 1609 - u32 shm_tot, shm_rss, shm_swp; 1610 - u32 swap_attempts, swap_successes; 1611 -}; 1612 - 1613 -static int 1614 -do_sys32_shmctl (int first, int second, void __user *uptr) 1615 -{ 1616 - struct shmid64_ds32 __user *up64 = (struct shmid64_ds32 __user *)uptr; 1617 - struct shmid_ds32 __user *up32 = (struct shmid_ds32 __user *)uptr; 1618 - struct shm_info32 __user *uip = (struct shm_info32 __user *)uptr; 1619 - int err = -EFAULT, err2; 1620 - struct shmid64_ds s64; 1621 - mm_segment_t old_fs; 1622 - struct shm_info si; 1623 - struct shmid_ds s; 1624 - 1625 - switch (second & ~IPC_64) { 1626 - case IPC_INFO: 1627 - second = IPC_INFO; /* So that we don't have to translate it */ 1628 - case IPC_RMID: 1629 - case SHM_LOCK: 1630 - case SHM_UNLOCK: 1631 - err = sys_shmctl(first, second, (struct shmid_ds __user *)uptr); 1632 - break; 1633 - case IPC_SET: 1634 - if (second & IPC_64) { 1635 - err = get_user(s.shm_perm.uid, &up64->shm_perm.uid); 1636 - err |= get_user(s.shm_perm.gid, &up64->shm_perm.gid); 1637 - err |= get_user(s.shm_perm.mode, &up64->shm_perm.mode); 1638 - } else { 1639 - err = get_user(s.shm_perm.uid, &up32->shm_perm.uid); 1640 - err |= get_user(s.shm_perm.gid, &up32->shm_perm.gid); 1641 - err |= get_user(s.shm_perm.mode, &up32->shm_perm.mode); 1642 - } 1643 - if (err) 1644 - break; 1645 - old_fs = get_fs(); 1646 - set_fs(KERNEL_DS); 1647 - err = sys_shmctl(first, second & ~IPC_64, (struct shmid_ds __user *)&s); 1648 - set_fs(old_fs); 1649 - break; 1650 - 1651 - case IPC_STAT: 1652 - case SHM_STAT: 1653 - old_fs = get_fs(); 1654 - set_fs(KERNEL_DS); 1655 - err = sys_shmctl(first, second | IPC_64, (void __user *) &s64); 1656 - set_fs(old_fs); 1657 - if (err < 0) 1658 - break; 1659 - if (second & IPC_64) { 1660 - if (!access_ok(VERIFY_WRITE, up64, sizeof(*up64))) { 1661 - err = -EFAULT; 1662 - break; 1663 - } 1664 - err2 = __put_user(s64.shm_perm.key, &up64->shm_perm.key); 1665 - err2 |= __put_user(s64.shm_perm.uid, &up64->shm_perm.uid); 1666 - err2 |= __put_user(s64.shm_perm.gid, &up64->shm_perm.gid); 1667 - err2 |= __put_user(s64.shm_perm.cuid, &up64->shm_perm.cuid); 1668 - err2 |= __put_user(s64.shm_perm.cgid, &up64->shm_perm.cgid); 1669 - err2 |= __put_user(s64.shm_perm.mode, &up64->shm_perm.mode); 1670 - err2 |= __put_user(s64.shm_perm.seq, &up64->shm_perm.seq); 1671 - err2 |= __put_user(s64.shm_atime, &up64->shm_atime); 1672 - err2 |= __put_user(s64.shm_dtime, &up64->shm_dtime); 1673 - err2 |= __put_user(s64.shm_ctime, &up64->shm_ctime); 1674 - err2 |= __put_user(s64.shm_segsz, &up64->shm_segsz); 1675 - err2 |= __put_user(s64.shm_nattch, &up64->shm_nattch); 1676 - err2 |= __put_user(s64.shm_cpid, &up64->shm_cpid); 1677 - err2 |= __put_user(s64.shm_lpid, &up64->shm_lpid); 1678 - } else { 1679 - if (!access_ok(VERIFY_WRITE, up32, sizeof(*up32))) { 1680 - err = -EFAULT; 1681 - break; 1682 - } 1683 - err2 = __put_user(s64.shm_perm.key, &up32->shm_perm.key); 1684 - err2 |= __put_user(s64.shm_perm.uid, &up32->shm_perm.uid); 1685 - err2 |= __put_user(s64.shm_perm.gid, &up32->shm_perm.gid); 1686 - err2 |= __put_user(s64.shm_perm.cuid, &up32->shm_perm.cuid); 1687 - err2 |= __put_user(s64.shm_perm.cgid, &up32->shm_perm.cgid); 1688 - err2 |= __put_user(s64.shm_perm.mode, &up32->shm_perm.mode); 1689 - err2 |= __put_user(s64.shm_perm.seq, &up32->shm_perm.seq); 1690 - err2 |= __put_user(s64.shm_atime, &up32->shm_atime); 1691 - err2 |= __put_user(s64.shm_dtime, &up32->shm_dtime); 1692 - err2 |= __put_user(s64.shm_ctime, &up32->shm_ctime); 1693 - err2 |= __put_user(s64.shm_segsz, &up32->shm_segsz); 1694 - err2 |= __put_user(s64.shm_nattch, &up32->shm_nattch); 1695 - err2 |= __put_user(s64.shm_cpid, &up32->shm_cpid); 1696 - err2 |= __put_user(s64.shm_lpid, &up32->shm_lpid); 1697 - } 1698 - if (err2) 1699 - err = -EFAULT; 1700 - break; 1701 - 1702 - case SHM_INFO: 1703 - old_fs = get_fs(); 1704 - set_fs(KERNEL_DS); 1705 - err = sys_shmctl(first, second, (void __user *)&si); 1706 - set_fs(old_fs); 1707 - if (err < 0) 1708 - break; 1709 - err2 = put_user(si.used_ids, &uip->used_ids); 1710 - err2 |= __put_user(si.shm_tot, &uip->shm_tot); 1711 - err2 |= __put_user(si.shm_rss, &uip->shm_rss); 1712 - err2 |= __put_user(si.shm_swp, &uip->shm_swp); 1713 - err2 |= __put_user(si.swap_attempts, &uip->swap_attempts); 1714 - err2 |= __put_user (si.swap_successes, &uip->swap_successes); 1715 - if (err2) 1716 - err = -EFAULT; 1717 - break; 1718 - 1719 - default: 1720 - err = -EINVAL; 1721 - break; 1722 - } 1723 - 1724 - return err; 1725 -} 1726 - 1727 -static int sys32_semtimedop(int semid, struct sembuf __user *tsems, int nsems, 1728 - const struct compat_timespec __user *timeout32) 1729 -{ 1730 - struct compat_timespec t32; 1731 - struct timespec __user *t64 = compat_alloc_user_space(sizeof(*t64)); 1732 - 1733 - if (copy_from_user(&t32, timeout32, sizeof(t32))) 1734 - return -EFAULT; 1735 - 1736 - if (put_user(t32.tv_sec, &t64->tv_sec) || 1737 - put_user(t32.tv_nsec, &t64->tv_nsec)) 1738 - return -EFAULT; 1739 - 1740 - return sys_semtimedop(semid, tsems, nsems, t64); 1741 -} 1742 - 1743 asmlinkage long 1744 sys32_ipc (u32 call, int first, int second, int third, u32 ptr, u32 fifth) 1745 { 1746 @@ -916,48 +391,43 @@ 1747 switch (call) { 1748 case SEMOP: 1749 /* struct sembuf is the same on 32 and 64bit :)) */ 1750 - err = sys_semtimedop (first, (struct sembuf __user *)AA(ptr), second, 1751 - NULL); 1752 + err = sys_semtimedop(first, compat_ptr(ptr), second, NULL); 1753 break; 1754 case SEMTIMEDOP: 1755 - err = sys32_semtimedop (first, (struct sembuf __user *)AA(ptr), second, 1756 - (const struct compat_timespec __user *)AA(fifth)); 1757 + err = compat_sys_semtimedop(first, compat_ptr(ptr), second, 1758 + compat_ptr(fifth)); 1759 break; 1760 case SEMGET: 1761 - err = sys_semget (first, second, third); 1762 + err = sys_semget(first, second, third); 1763 break; 1764 case SEMCTL: 1765 - err = do_sys32_semctl (first, second, third, 1766 - (void __user *)AA(ptr)); 1767 + err = compat_sys_semctl(first, second, third, compat_ptr(ptr)); 1768 break; 1769 - 1770 case MSGSND: 1771 - err = do_sys32_msgsnd (first, second, third, 1772 - (void __user *)AA(ptr)); 1773 + err = compat_sys_msgsnd(first, second, third, compat_ptr(ptr)); 1774 break; 1775 case MSGRCV: 1776 - err = do_sys32_msgrcv (first, second, fifth, third, 1777 - version, (void __user *)AA(ptr)); 1778 + err = compat_sys_msgrcv(first, second, fifth, third, 1779 + version, compat_ptr(ptr)); 1780 break; 1781 case MSGGET: 1782 - err = sys_msgget ((key_t) first, second); 1783 + err = sys_msgget((key_t) first, second); 1784 break; 1785 case MSGCTL: 1786 - err = do_sys32_msgctl (first, second, (void __user *)AA(ptr)); 1787 + err = compat_sys_msgctl(first, second, compat_ptr(ptr)); 1788 break; 1789 - 1790 case SHMAT: 1791 - err = do_sys32_shmat (first, second, third, 1792 - version, (void __user *)AA(ptr)); 1793 + err = compat_sys_shmat(first, second, third, version, 1794 + compat_ptr(ptr)); 1795 break; 1796 case SHMDT: 1797 - err = sys_shmdt ((char __user *)A(ptr)); 1798 + err = sys_shmdt(compat_ptr(ptr)); 1799 break; 1800 case SHMGET: 1801 - err = sys_shmget (first, (unsigned)second, third); 1802 + err = sys_shmget(first, (unsigned)second, third); 1803 break; 1804 case SHMCTL: 1805 - err = do_sys32_shmctl (first, second, (void __user *)AA(ptr)); 1806 + err = compat_sys_shmctl(first, second, compat_ptr(ptr)); 1807 break; 1808 default: 1809 err = -EINVAL; 1810 @@ -967,18 +437,16 @@ 1811 return err; 1812 } 1813 1814 -asmlinkage long sys32_shmat(int shmid, char __user *shmaddr, 1815 - int shmflg, int32_t __user *addr) 1816 +#ifdef CONFIG_MIPS32_N32 1817 +asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, union semun arg) 1818 { 1819 - unsigned long raddr; 1820 - int err; 1821 - 1822 - err = do_shmat(shmid, shmaddr, shmflg, &raddr); 1823 - if (err) 1824 - return err; 1825 - 1826 - return put_user(raddr, addr); 1827 + /* compat_sys_semctl expects a pointer to union semun */ 1828 + u32 __user *uptr = compat_alloc_user_space(sizeof(u32)); 1829 + if (put_user(ptr_to_compat(arg.__pad), uptr)) 1830 + return -EFAULT; 1831 + return compat_sys_semctl(semid, semnum, cmd, uptr); 1832 } 1833 +#endif 1834 1835 struct sysctl_args32 1836 { 1837 @@ -1053,7 +521,9 @@ 910 1838 asmlinkage int sys32_personality(unsigned long personality) 911 1839 { … … 918 1846 ret = sys_personality(personality); 919 1847 if (ret == PER_LINUX32) 920 @@ -1296,9 + 1298,3 @@1848 @@ -1296,9 +766,3 @@ 921 1849 return do_fork(clone_flags, newsp, ®s, 0, 922 1850 parent_tidptr, child_tidptr); … … 928 1856 - sys_set_thread_area(AA(addr)); 929 1857 -} 930 diff -Naur linux-2.6.18. 2/arch/mips/kernel/mips-mt.c linux-mips-2.6.18.2/arch/mips/kernel/mips-mt.c931 --- linux-2.6.18. 2/arch/mips/kernel/mips-mt.c 2006-11-03 17:33:58.000000000 -0800932 +++ linux-mips-2.6.18. 2/arch/mips/kernel/mips-mt.c 2006-11-04 14:51:12.000000000 -08001858 diff -Naur linux-2.6.18.3/arch/mips/kernel/mips-mt.c linux-mips-2.6.18.3/arch/mips/kernel/mips-mt.c 1859 --- linux-2.6.18.3/arch/mips/kernel/mips-mt.c 2006-11-18 19:28:22.000000000 -0800 1860 +++ linux-mips-2.6.18.3/arch/mips/kernel/mips-mt.c 2006-11-20 10:09:08.000000000 -0800 933 1861 @@ -96,6 +96,10 @@ 934 1862 goto out_unlock; … … 954 1882 cpus_and(mask, p->thread.user_cpus_allowed, cpu_possible_map); 955 1883 956 diff -Naur linux-2.6.18. 2/arch/mips/kernel/proc.c linux-mips-2.6.18.2/arch/mips/kernel/proc.c957 --- linux-2.6.18. 2/arch/mips/kernel/proc.c 2006-11-03 17:33:58.000000000 -0800958 +++ linux-mips-2.6.18. 2/arch/mips/kernel/proc.c 2006-11-04 14:51:12.000000000 -08001884 diff -Naur linux-2.6.18.3/arch/mips/kernel/proc.c linux-mips-2.6.18.3/arch/mips/kernel/proc.c 1885 --- linux-2.6.18.3/arch/mips/kernel/proc.c 2006-11-18 19:28:22.000000000 -0800 1886 +++ linux-mips-2.6.18.3/arch/mips/kernel/proc.c 2006-11-20 10:09:08.000000000 -0800 959 1887 @@ -89,9 +89,9 @@ 960 1888 … … 991 1919 cpu_has_divec ? "yes" : "no"); 992 1920 seq_printf(m, "hardware watchpoint\t: %s\n", 993 diff -Naur linux-2.6.18. 2/arch/mips/kernel/process.c linux-mips-2.6.18.2/arch/mips/kernel/process.c994 --- linux-2.6.18. 2/arch/mips/kernel/process.c 2006-11-03 17:33:58.000000000 -0800995 +++ linux-mips-2.6.18. 2/arch/mips/kernel/process.c 2006-11-04 14:51:12.000000000 -08001921 diff -Naur linux-2.6.18.3/arch/mips/kernel/process.c linux-mips-2.6.18.3/arch/mips/kernel/process.c 1922 --- linux-2.6.18.3/arch/mips/kernel/process.c 2006-11-18 19:28:22.000000000 -0800 1923 +++ linux-mips-2.6.18.3/arch/mips/kernel/process.c 2006-11-20 10:09:08.000000000 -0800 996 1924 @@ -114,7 +114,7 @@ 997 1925 status |= KU_USER; … … 1188 2116 +} 1189 2117 +#endif 1190 diff -Naur linux-2.6.18. 2/arch/mips/kernel/ptrace.c linux-mips-2.6.18.2/arch/mips/kernel/ptrace.c1191 --- linux-2.6.18. 2/arch/mips/kernel/ptrace.c 2006-11-03 17:33:58.000000000 -08001192 +++ linux-mips-2.6.18. 2/arch/mips/kernel/ptrace.c 2006-11-04 14:51:12.000000000 -08002118 diff -Naur linux-2.6.18.3/arch/mips/kernel/ptrace.c linux-mips-2.6.18.3/arch/mips/kernel/ptrace.c 2119 --- linux-2.6.18.3/arch/mips/kernel/ptrace.c 2006-11-18 19:28:22.000000000 -0800 2120 +++ linux-mips-2.6.18.3/arch/mips/kernel/ptrace.c 2006-11-20 10:09:08.000000000 -0800 1193 2121 @@ -20,12 +20,12 @@ 1194 2122 #include <linux/mm.h> … … 1299 2227 + regs->regs[6], regs->regs[7]); 1300 2228 } 1301 diff -Naur linux-2.6.18. 2/arch/mips/kernel/ptrace32.c linux-mips-2.6.18.2/arch/mips/kernel/ptrace32.c1302 --- linux-2.6.18. 2/arch/mips/kernel/ptrace32.c 2006-11-03 17:33:58.000000000 -08001303 +++ linux-mips-2.6.18. 2/arch/mips/kernel/ptrace32.c 2006-11-04 14:51:12.000000000 -08002229 diff -Naur linux-2.6.18.3/arch/mips/kernel/ptrace32.c linux-mips-2.6.18.3/arch/mips/kernel/ptrace32.c 2230 --- linux-2.6.18.3/arch/mips/kernel/ptrace32.c 2006-11-18 19:28:22.000000000 -0800 2231 +++ linux-mips-2.6.18.3/arch/mips/kernel/ptrace32.c 2006-11-20 10:09:08.000000000 -0800 1304 2232 @@ -175,7 +175,9 @@ 1305 2233 unsigned int mtflags; … … 1320 2248 unsigned int vpflags = dvpe(); 1321 2249 flags = read_c0_status(); 1322 diff -Naur linux-2.6.18. 2/arch/mips/kernel/r4k_switch.S linux-mips-2.6.18.2/arch/mips/kernel/r4k_switch.S1323 --- linux-2.6.18. 2/arch/mips/kernel/r4k_switch.S 2006-11-03 17:33:58.000000000 -08001324 +++ linux-mips-2.6.18. 2/arch/mips/kernel/r4k_switch.S 2006-11-04 14:51:12.000000000 -08002250 diff -Naur linux-2.6.18.3/arch/mips/kernel/r4k_switch.S linux-mips-2.6.18.3/arch/mips/kernel/r4k_switch.S 2251 --- linux-2.6.18.3/arch/mips/kernel/r4k_switch.S 2006-11-18 19:28:22.000000000 -0800 2252 +++ linux-mips-2.6.18.3/arch/mips/kernel/r4k_switch.S 2006-11-20 10:09:08.000000000 -0800 1325 2253 @@ -85,7 +85,12 @@ 1326 2254 move $28, a2 … … 1336 2264 #ifdef CONFIG_MIPS_MT_SMTC 1337 2265 /* Read-modify-writes of Status must be atomic on a VPE */ 1338 diff -Naur linux-2.6.18. 2/arch/mips/kernel/scall32-o32.S linux-mips-2.6.18.2/arch/mips/kernel/scall32-o32.S1339 --- linux-2.6.18. 2/arch/mips/kernel/scall32-o32.S 2006-11-03 17:33:58.000000000 -08001340 +++ linux-mips-2.6.18. 2/arch/mips/kernel/scall32-o32.S 2006-11-04 14:51:12.000000000 -08002266 diff -Naur linux-2.6.18.3/arch/mips/kernel/scall32-o32.S linux-mips-2.6.18.3/arch/mips/kernel/scall32-o32.S 2267 --- linux-2.6.18.3/arch/mips/kernel/scall32-o32.S 2006-11-18 19:28:22.000000000 -0800 2268 +++ linux-mips-2.6.18.3/arch/mips/kernel/scall32-o32.S 2006-11-20 10:09:08.000000000 -0800 1341 2269 @@ -662,6 +662,8 @@ 1342 2270 sys sys_tee 4 … … 1348 2276 1349 2277 /* We pre-compute the number of _instruction_ bytes needed to 1350 diff -Naur linux-2.6.18. 2/arch/mips/kernel/scall64-64.S linux-mips-2.6.18.2/arch/mips/kernel/scall64-64.S1351 --- linux-2.6.18. 2/arch/mips/kernel/scall64-64.S 2006-11-03 17:33:58.000000000 -08001352 +++ linux-mips-2.6.18. 2/arch/mips/kernel/scall64-64.S 2006-11-04 14:51:12.000000000 -08002278 diff -Naur linux-2.6.18.3/arch/mips/kernel/scall64-64.S linux-mips-2.6.18.3/arch/mips/kernel/scall64-64.S 2279 --- linux-2.6.18.3/arch/mips/kernel/scall64-64.S 2006-11-18 19:28:22.000000000 -0800 2280 +++ linux-mips-2.6.18.3/arch/mips/kernel/scall64-64.S 2006-11-20 10:09:08.000000000 -0800 1353 2281 @@ -466,3 +466,5 @@ 1354 2282 PTR sys_tee /* 5265 */ … … 1357 2285 + PTR sys_set_robust_list 1358 2286 + PTR sys_get_robust_list 1359 diff -Naur linux-2.6.18.2/arch/mips/kernel/scall64-n32.S linux-mips-2.6.18.2/arch/mips/kernel/scall64-n32.S 1360 --- linux-2.6.18.2/arch/mips/kernel/scall64-n32.S 2006-11-03 17:33:58.000000000 -0800 1361 +++ linux-mips-2.6.18.2/arch/mips/kernel/scall64-n32.S 2006-11-04 14:51:12.000000000 -0800 2287 diff -Naur linux-2.6.18.3/arch/mips/kernel/scall64-n32.S linux-mips-2.6.18.3/arch/mips/kernel/scall64-n32.S 2288 --- linux-2.6.18.3/arch/mips/kernel/scall64-n32.S 2006-11-18 19:28:22.000000000 -0800 2289 +++ linux-mips-2.6.18.3/arch/mips/kernel/scall64-n32.S 2006-11-20 10:09:08.000000000 -0800 2290 @@ -149,8 +149,8 @@ 2291 PTR sys_mincore 2292 PTR sys_madvise 2293 PTR sys_shmget 2294 - PTR sys32_shmat 2295 - PTR sys_shmctl /* 6030 */ 2296 + PTR sys_shmat 2297 + PTR compat_sys_shmctl /* 6030 */ 2298 PTR sys_dup 2299 PTR sys_dup2 2300 PTR sys_pause 2301 @@ -184,12 +184,12 @@ 2302 PTR sys32_newuname 2303 PTR sys_semget 2304 PTR sys_semop 2305 - PTR sys_semctl 2306 + PTR sysn32_semctl 2307 PTR sys_shmdt /* 6065 */ 2308 PTR sys_msgget 2309 - PTR sys_msgsnd 2310 - PTR sys_msgrcv 2311 - PTR sys_msgctl 2312 + PTR compat_sys_msgsnd 2313 + PTR compat_sys_msgrcv 2314 + PTR compat_sys_msgctl 2315 PTR compat_sys_fcntl /* 6070 */ 2316 PTR sys_flock 2317 PTR sys_fsync 1362 2318 @@ -247,7 +247,7 @@ 1363 2319 PTR sys_capset … … 1378 2334 PTR sys_swapon 1379 2335 PTR sys_swapoff 2336 @@ -335,7 +335,7 @@ 2337 PTR compat_sys_fcntl64 2338 PTR sys_set_tid_address 2339 PTR sys_restart_syscall 2340 - PTR sys_semtimedop /* 6215 */ 2341 + PTR compat_sys_semtimedop /* 6215 */ 2342 PTR sys_fadvise64_64 2343 PTR compat_sys_statfs64 2344 PTR compat_sys_fstatfs64 1380 2345 @@ -390,5 +390,7 @@ 1381 2346 PTR sys_splice … … 1387 2352 + PTR compat_sys_set_robust_list 1388 2353 + PTR compat_sys_get_robust_list 1389 diff -Naur linux-2.6.18. 2/arch/mips/kernel/scall64-o32.S linux-mips-2.6.18.2/arch/mips/kernel/scall64-o32.S1390 --- linux-2.6.18. 2/arch/mips/kernel/scall64-o32.S 2006-11-03 17:33:58.000000000 -08001391 +++ linux-mips-2.6.18. 2/arch/mips/kernel/scall64-o32.S 2006-11-04 14:51:12.000000000 -08002354 diff -Naur linux-2.6.18.3/arch/mips/kernel/scall64-o32.S linux-mips-2.6.18.3/arch/mips/kernel/scall64-o32.S 2355 --- linux-2.6.18.3/arch/mips/kernel/scall64-o32.S 2006-11-18 19:28:22.000000000 -0800 2356 +++ linux-mips-2.6.18.3/arch/mips/kernel/scall64-o32.S 2006-11-20 10:09:08.000000000 -0800 1392 2357 @@ -226,7 +226,7 @@ 1393 2358 PTR sys_ni_syscall /* was sys_stat */ … … 1415 2380 + PTR compat_sys_get_robust_list /* 4310 */ 1416 2381 .size sys_call_table,.-sys_call_table 1417 diff -Naur linux-2.6.18. 2/arch/mips/kernel/signal.c linux-mips-2.6.18.2/arch/mips/kernel/signal.c1418 --- linux-2.6.18. 2/arch/mips/kernel/signal.c 2006-11-03 17:33:58.000000000 -08001419 +++ linux-mips-2.6.18. 2/arch/mips/kernel/signal.c 2006-11-04 14:51:12.000000000 -08002382 diff -Naur linux-2.6.18.3/arch/mips/kernel/signal.c linux-mips-2.6.18.3/arch/mips/kernel/signal.c 2383 --- linux-2.6.18.3/arch/mips/kernel/signal.c 2006-11-18 19:28:22.000000000 -0800 2384 +++ linux-mips-2.6.18.3/arch/mips/kernel/signal.c 2006-11-20 10:09:08.000000000 -0800 1420 2385 @@ -424,15 +424,11 @@ 1421 2386 if (!user_mode(regs)) … … 1454 2419 1455 2420 /* 1456 diff -Naur linux-2.6.18. 2/arch/mips/kernel/signal32.c linux-mips-2.6.18.2/arch/mips/kernel/signal32.c1457 --- linux-2.6.18. 2/arch/mips/kernel/signal32.c 2006-11-03 17:33:58.000000000 -08001458 +++ linux-mips-2.6.18. 2/arch/mips/kernel/signal32.c 2006-11-04 14:51:12.000000000 -08002421 diff -Naur linux-2.6.18.3/arch/mips/kernel/signal32.c linux-mips-2.6.18.3/arch/mips/kernel/signal32.c 2422 --- linux-2.6.18.3/arch/mips/kernel/signal32.c 2006-11-18 19:28:22.000000000 -0800 2423 +++ linux-mips-2.6.18.3/arch/mips/kernel/signal32.c 2006-11-20 10:09:08.000000000 -0800 1459 2424 @@ -815,9 +815,6 @@ 1460 2425 if (!user_mode(regs)) … … 1487 2452 1488 2453 /* 1489 diff -Naur linux-2.6.18. 2/arch/mips/kernel/smp-mt.c linux-mips-2.6.18.2/arch/mips/kernel/smp-mt.c1490 --- linux-2.6.18. 2/arch/mips/kernel/smp-mt.c 2006-11-03 17:33:58.000000000 -08001491 +++ linux-mips-2.6.18. 2/arch/mips/kernel/smp-mt.c 2006-11-04 14:51:12.000000000 -08002454 diff -Naur linux-2.6.18.3/arch/mips/kernel/smp-mt.c linux-mips-2.6.18.3/arch/mips/kernel/smp-mt.c 2455 --- linux-2.6.18.3/arch/mips/kernel/smp-mt.c 2006-11-18 19:28:22.000000000 -0800 2456 +++ linux-mips-2.6.18.3/arch/mips/kernel/smp-mt.c 2006-11-20 10:09:08.000000000 -0800 1492 2457 @@ -203,7 +203,7 @@ 1493 2458 write_vpe_c0_config( read_c0_config()); … … 1499 2464 /* Propagate Config7 */ 1500 2465 write_vpe_c0_config7(read_c0_config7()); 1501 diff -Naur linux-2.6.18. 2/arch/mips/kernel/smp.c linux-mips-2.6.18.2/arch/mips/kernel/smp.c1502 --- linux-2.6.18. 2/arch/mips/kernel/smp.c 2006-11-03 17:33:58.000000000 -08001503 +++ linux-mips-2.6.18. 2/arch/mips/kernel/smp.c 2006-11-04 14:51:12.000000000 -08002466 diff -Naur linux-2.6.18.3/arch/mips/kernel/smp.c linux-mips-2.6.18.3/arch/mips/kernel/smp.c 2467 --- linux-2.6.18.3/arch/mips/kernel/smp.c 2006-11-18 19:28:22.000000000 -0800 2468 +++ linux-mips-2.6.18.3/arch/mips/kernel/smp.c 2006-11-20 10:09:08.000000000 -0800 1504 2469 @@ -467,14 +467,18 @@ 1505 2470 … … 1526 2491 1527 2492 return 0; 1528 diff -Naur linux-2.6.18. 2/arch/mips/kernel/smtc-asm.S linux-mips-2.6.18.2/arch/mips/kernel/smtc-asm.S1529 --- linux-2.6.18. 2/arch/mips/kernel/smtc-asm.S 2006-11-03 17:33:58.000000000 -08001530 +++ linux-mips-2.6.18. 2/arch/mips/kernel/smtc-asm.S 2006-11-04 14:51:12.000000000 -08002493 diff -Naur linux-2.6.18.3/arch/mips/kernel/smtc-asm.S linux-mips-2.6.18.3/arch/mips/kernel/smtc-asm.S 2494 --- linux-2.6.18.3/arch/mips/kernel/smtc-asm.S 2006-11-18 19:28:22.000000000 -0800 2495 +++ linux-mips-2.6.18.3/arch/mips/kernel/smtc-asm.S 2006-11-20 10:09:08.000000000 -0800 1531 2496 @@ -8,7 +8,7 @@ 1532 2497 #include <asm/regdef.h> … … 1538 2503 /* 1539 2504 * "Software Interrupt" linkage. 1540 diff -Naur linux-2.6.18. 2/arch/mips/kernel/syscall.c linux-mips-2.6.18.2/arch/mips/kernel/syscall.c1541 --- linux-2.6.18. 2/arch/mips/kernel/syscall.c 2006-11-03 17:33:58.000000000 -08001542 +++ linux-mips-2.6.18. 2/arch/mips/kernel/syscall.c 2006-11-04 14:51:12.000000000 -08002505 diff -Naur linux-2.6.18.3/arch/mips/kernel/syscall.c linux-mips-2.6.18.3/arch/mips/kernel/syscall.c 2506 --- linux-2.6.18.3/arch/mips/kernel/syscall.c 2006-11-18 19:28:22.000000000 -0800 2507 +++ linux-mips-2.6.18.3/arch/mips/kernel/syscall.c 2006-11-20 10:09:08.000000000 -0800 1543 2508 @@ -263,7 +263,7 @@ 1544 2509 return error; … … 1559 2524 1560 2525 asmlinkage int _sys_sysmips(int cmd, long arg1, int arg2, int arg3) 1561 diff -Naur linux-2.6.18. 2/arch/mips/kernel/traps.c linux-mips-2.6.18.2/arch/mips/kernel/traps.c1562 --- linux-2.6.18. 2/arch/mips/kernel/traps.c 2006-11-03 17:33:58.000000000 -08001563 +++ linux-mips-2.6.18. 2/arch/mips/kernel/traps.c 2006-11-04 14:51:12.000000000 -08002526 diff -Naur linux-2.6.18.3/arch/mips/kernel/traps.c linux-mips-2.6.18.3/arch/mips/kernel/traps.c 2527 --- linux-2.6.18.3/arch/mips/kernel/traps.c 2006-11-18 19:28:22.000000000 -0800 2528 +++ linux-mips-2.6.18.3/arch/mips/kernel/traps.c 2006-11-20 10:09:08.000000000 -0800 1564 2529 @@ -20,6 +20,7 @@ 1565 2530 #include <linux/spinlock.h> … … 1803 2768 force_sig(sig, current); 1804 2769 #ifdef CONFIG_MIPS_MT_FPAFF 1805 diff -Naur linux-2.6.18. 2/arch/mips/kernel/vmlinux.lds.S linux-mips-2.6.18.2/arch/mips/kernel/vmlinux.lds.S1806 --- linux-2.6.18. 2/arch/mips/kernel/vmlinux.lds.S 2006-11-03 17:33:58.000000000 -08001807 +++ linux-mips-2.6.18. 2/arch/mips/kernel/vmlinux.lds.S 2006-11-04 14:51:12.000000000 -08002770 diff -Naur linux-2.6.18.3/arch/mips/kernel/vmlinux.lds.S linux-mips-2.6.18.3/arch/mips/kernel/vmlinux.lds.S 2771 --- linux-2.6.18.3/arch/mips/kernel/vmlinux.lds.S 2006-11-18 19:28:22.000000000 -0800 2772 +++ linux-mips-2.6.18.3/arch/mips/kernel/vmlinux.lds.S 2006-11-20 10:09:08.000000000 -0800 1808 2773 @@ -50,6 +50,16 @@ 1809 2774 /* writeable */ … … 1823 2788 1824 2789 *(.data) 1825 diff -Naur linux-2.6.18. 2/arch/mips/kernel/vpe.c linux-mips-2.6.18.2/arch/mips/kernel/vpe.c1826 --- linux-2.6.18. 2/arch/mips/kernel/vpe.c 2006-11-03 17:33:58.000000000 -08001827 +++ linux-mips-2.6.18. 2/arch/mips/kernel/vpe.c 2006-11-04 14:51:12.000000000 -08002790 diff -Naur linux-2.6.18.3/arch/mips/kernel/vpe.c linux-mips-2.6.18.3/arch/mips/kernel/vpe.c 2791 --- linux-2.6.18.3/arch/mips/kernel/vpe.c 2006-11-18 19:28:22.000000000 -0800 2792 +++ linux-mips-2.6.18.3/arch/mips/kernel/vpe.c 2006-11-20 10:09:08.000000000 -0800 1828 2793 @@ -768,10 +768,16 @@ 1829 2794 */ … … 1843 2808 write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | VPECONF0_VPA); 1844 2809 1845 diff -Naur linux-2.6.18. 2/arch/mips/lib/Makefile linux-mips-2.6.18.2/arch/mips/lib/Makefile1846 --- linux-2.6.18. 2/arch/mips/lib/Makefile 2006-11-03 17:33:58.000000000 -08001847 +++ linux-mips-2.6.18. 2/arch/mips/lib/Makefile 2006-11-04 14:51:12.000000000 -08002810 diff -Naur linux-2.6.18.3/arch/mips/lib/Makefile linux-mips-2.6.18.3/arch/mips/lib/Makefile 2811 --- linux-2.6.18.3/arch/mips/lib/Makefile 2006-11-18 19:28:22.000000000 -0800 2812 +++ linux-mips-2.6.18.3/arch/mips/lib/Makefile 2006-11-20 10:09:08.000000000 -0800 1848 2813 @@ -5,8 +5,6 @@ 1849 2814 lib-y += csum_partial_copy.o memcpy.o promlib.o strlen_user.o strncpy_user.o \ … … 1855 2820 lib-y += ashldi3.o ashrdi3.o lshrdi3.o 1856 2821 1857 diff -Naur linux-2.6.18. 2/arch/mips/lib/iomap.c linux-mips-2.6.18.2/arch/mips/lib/iomap.c1858 --- linux-2.6.18. 2/arch/mips/lib/iomap.c 2006-11-03 17:33:58.000000000 -08001859 +++ linux-mips-2.6.18. 2/arch/mips/lib/iomap.c 1969-12-31 16:00:00.000000000 -08002822 diff -Naur linux-2.6.18.3/arch/mips/lib/iomap.c linux-mips-2.6.18.3/arch/mips/lib/iomap.c 2823 --- linux-2.6.18.3/arch/mips/lib/iomap.c 2006-11-18 19:28:22.000000000 -0800 2824 +++ linux-mips-2.6.18.3/arch/mips/lib/iomap.c 1969-12-31 16:00:00.000000000 -0800 1860 2825 @@ -1,78 +0,0 @@ 1861 2826 -/* … … 1937 2902 -EXPORT_SYMBOL(pci_iomap); 1938 2903 -EXPORT_SYMBOL(pci_iounmap); 1939 diff -Naur linux-2.6.18. 2/arch/mips/lib-32/dump_tlb.c linux-mips-2.6.18.2/arch/mips/lib-32/dump_tlb.c1940 --- linux-2.6.18. 2/arch/mips/lib-32/dump_tlb.c 2006-11-03 17:33:58.000000000 -08001941 +++ linux-mips-2.6.18. 2/arch/mips/lib-32/dump_tlb.c 2006-11-04 14:51:12.000000000 -08002904 diff -Naur linux-2.6.18.3/arch/mips/lib-32/dump_tlb.c linux-mips-2.6.18.3/arch/mips/lib-32/dump_tlb.c 2905 --- linux-2.6.18.3/arch/mips/lib-32/dump_tlb.c 2006-11-18 19:28:22.000000000 -0800 2906 +++ linux-mips-2.6.18.3/arch/mips/lib-32/dump_tlb.c 2006-11-20 10:09:08.000000000 -0800 1942 2907 @@ -40,8 +40,6 @@ 1943 2908 return "256Mb"; … … 1949 2914 1950 2915 #define BARRIER() \ 1951 diff -Naur linux-2.6.18. 2/arch/mips/lib-64/dump_tlb.c linux-mips-2.6.18.2/arch/mips/lib-64/dump_tlb.c1952 --- linux-2.6.18. 2/arch/mips/lib-64/dump_tlb.c 2006-11-03 17:33:58.000000000 -08001953 +++ linux-mips-2.6.18. 2/arch/mips/lib-64/dump_tlb.c 2006-11-04 14:51:12.000000000 -08002916 diff -Naur linux-2.6.18.3/arch/mips/lib-64/dump_tlb.c linux-mips-2.6.18.3/arch/mips/lib-64/dump_tlb.c 2917 --- linux-2.6.18.3/arch/mips/lib-64/dump_tlb.c 2006-11-18 19:28:22.000000000 -0800 2918 +++ linux-mips-2.6.18.3/arch/mips/lib-64/dump_tlb.c 2006-11-20 10:09:08.000000000 -0800 1954 2919 @@ -31,8 +31,6 @@ 1955 2920 case PM_256M: return "256Mb"; … … 1986 2951 addr = (unsigned long) address; 1987 2952 pgd = pgd_offset(current->mm, addr); 1988 diff -Naur linux-2.6.18. 2/arch/mips/math-emu/cp1emu.c linux-mips-2.6.18.2/arch/mips/math-emu/cp1emu.c1989 --- linux-2.6.18. 2/arch/mips/math-emu/cp1emu.c 2006-11-03 17:33:58.000000000 -08001990 +++ linux-mips-2.6.18. 2/arch/mips/math-emu/cp1emu.c 2006-11-04 14:51:12.000000000 -08002953 diff -Naur linux-2.6.18.3/arch/mips/math-emu/cp1emu.c linux-mips-2.6.18.3/arch/mips/math-emu/cp1emu.c 2954 --- linux-2.6.18.3/arch/mips/math-emu/cp1emu.c 2006-11-18 19:28:22.000000000 -0800 2955 +++ linux-mips-2.6.18.3/arch/mips/math-emu/cp1emu.c 2006-11-20 10:09:08.000000000 -0800 1991 2956 @@ -38,8 +38,6 @@ 1992 2957 … … 2017 2982 if (sig) 2018 2983 break; 2019 diff -Naur linux-2.6.18. 2/arch/mips/mips-boards/atlas/atlas_int.c linux-mips-2.6.18.2/arch/mips/mips-boards/atlas/atlas_int.c2020 --- linux-2.6.18. 2/arch/mips/mips-boards/atlas/atlas_int.c 2006-11-03 17:33:58.000000000 -08002021 +++ linux-mips-2.6.18. 2/arch/mips/mips-boards/atlas/atlas_int.c 2006-11-04 14:51:12.000000000 -08002984 diff -Naur linux-2.6.18.3/arch/mips/mips-boards/atlas/atlas_int.c linux-mips-2.6.18.3/arch/mips/mips-boards/atlas/atlas_int.c 2985 --- linux-2.6.18.3/arch/mips/mips-boards/atlas/atlas_int.c 2006-11-18 19:28:22.000000000 -0800 2986 +++ linux-mips-2.6.18.3/arch/mips/mips-boards/atlas/atlas_int.c 2006-11-20 10:09:08.000000000 -0800 2022 2987 @@ -1,6 +1,8 @@ 2023 2988 /* … … 2206 3171 + setup_irq(MIPSCPU_INT_BASE + MIPSCPU_INT_ATLAS, &atlasirq); 2207 3172 +} 2208 diff -Naur linux-2.6.18. 2/arch/mips/mips-boards/atlas/atlas_setup.c linux-mips-2.6.18.2/arch/mips/mips-boards/atlas/atlas_setup.c2209 --- linux-2.6.18. 2/arch/mips/mips-boards/atlas/atlas_setup.c 2006-11-03 17:33:58.000000000 -08002210 +++ linux-mips-2.6.18. 2/arch/mips/mips-boards/atlas/atlas_setup.c 2006-11-04 14:51:12.000000000 -08003173 diff -Naur linux-2.6.18.3/arch/mips/mips-boards/atlas/atlas_setup.c linux-mips-2.6.18.3/arch/mips/mips-boards/atlas/atlas_setup.c 3174 --- linux-2.6.18.3/arch/mips/mips-boards/atlas/atlas_setup.c 2006-11-18 19:28:22.000000000 -0800 3175 +++ linux-mips-2.6.18.3/arch/mips/mips-boards/atlas/atlas_setup.c 2006-11-20 10:09:08.000000000 -0800 2211 3176 @@ -77,7 +77,7 @@ 2212 3177 #else … … 2218 3183 s.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_AUTO_IRQ; 2219 3184 s.iotype = UPIO_PORT; 2220 diff -Naur linux-2.6.18. 2/arch/mips/mips-boards/generic/memory.c linux-mips-2.6.18.2/arch/mips/mips-boards/generic/memory.c2221 --- linux-2.6.18. 2/arch/mips/mips-boards/generic/memory.c 2006-11-03 17:33:58.000000000 -08002222 +++ linux-mips-2.6.18. 2/arch/mips/mips-boards/generic/memory.c 2006-11-04 14:51:12.000000000 -08003185 diff -Naur linux-2.6.18.3/arch/mips/mips-boards/generic/memory.c linux-mips-2.6.18.3/arch/mips/mips-boards/generic/memory.c 3186 --- linux-2.6.18.3/arch/mips/mips-boards/generic/memory.c 2006-11-18 19:28:22.000000000 -0800 3187 +++ linux-mips-2.6.18.3/arch/mips/mips-boards/generic/memory.c 2006-11-20 10:09:08.000000000 -0800 2223 3188 @@ -176,7 +176,7 @@ 2224 3189 if (boot_mem_map.map[i].type != BOOT_MEM_ROM_DATA) … … 2230 3195 + boot_mem_map.map[i].size) { 2231 3196 ClearPageReserved(virt_to_page(__va(addr))); 2232 diff -Naur linux-2.6.18. 2/arch/mips/mips-boards/generic/time.c linux-mips-2.6.18.2/arch/mips/mips-boards/generic/time.c2233 --- linux-2.6.18. 2/arch/mips/mips-boards/generic/time.c 2006-11-03 17:33:58.000000000 -08002234 +++ linux-mips-2.6.18. 2/arch/mips/mips-boards/generic/time.c 2006-11-04 14:51:12.000000000 -08003197 diff -Naur linux-2.6.18.3/arch/mips/mips-boards/generic/time.c linux-mips-2.6.18.3/arch/mips/mips-boards/generic/time.c 3198 --- linux-2.6.18.3/arch/mips/mips-boards/generic/time.c 2006-11-18 19:28:22.000000000 -0800 3199 +++ linux-mips-2.6.18.3/arch/mips/mips-boards/generic/time.c 2006-11-20 10:09:08.000000000 -0800 2235 3200 @@ -41,8 +41,13 @@ 2236 3201 … … 2341 3306 static unsigned int __init estimate_cpu_frequency(void) 2342 3307 { 2343 diff -Naur linux-2.6.18. 2/arch/mips/mips-boards/malta/malta_int.c linux-mips-2.6.18.2/arch/mips/mips-boards/malta/malta_int.c2344 --- linux-2.6.18. 2/arch/mips/mips-boards/malta/malta_int.c 2006-11-03 17:33:58.000000000 -08002345 +++ linux-mips-2.6.18. 2/arch/mips/mips-boards/malta/malta_int.c 2006-11-04 14:51:12.000000000 -08003308 diff -Naur linux-2.6.18.3/arch/mips/mips-boards/malta/malta_int.c linux-mips-2.6.18.3/arch/mips/mips-boards/malta/malta_int.c 3309 --- linux-2.6.18.3/arch/mips/mips-boards/malta/malta_int.c 2006-11-18 19:28:22.000000000 -0800 3310 +++ linux-mips-2.6.18.3/arch/mips/mips-boards/malta/malta_int.c 2006-11-20 10:09:08.000000000 -0800 2346 3311 @@ -208,23 +208,23 @@ 2347 3312 unsigned int a0 = 7; … … 2374 3339 return a0; 2375 3340 #endif 2376 diff -Naur linux-2.6.18. 2/arch/mips/mips-boards/sim/sim_time.c linux-mips-2.6.18.2/arch/mips/mips-boards/sim/sim_time.c2377 --- linux-2.6.18. 2/arch/mips/mips-boards/sim/sim_time.c 2006-11-03 17:33:58.000000000 -08002378 +++ linux-mips-2.6.18. 2/arch/mips/mips-boards/sim/sim_time.c 2006-11-04 14:51:12.000000000 -08003341 diff -Naur linux-2.6.18.3/arch/mips/mips-boards/sim/sim_time.c linux-mips-2.6.18.3/arch/mips/mips-boards/sim/sim_time.c 3342 --- linux-2.6.18.3/arch/mips/mips-boards/sim/sim_time.c 2006-11-18 19:28:22.000000000 -0800 3343 +++ linux-mips-2.6.18.3/arch/mips/mips-boards/sim/sim_time.c 2006-11-20 10:09:08.000000000 -0800 2379 3344 @@ -103,7 +103,7 @@ 2380 3345 … … 2386 3351 static unsigned int __init estimate_cpu_frequency(void) 2387 3352 { 2388 diff -Naur linux-2.6.18. 2/arch/mips/mm/c-r3k.c linux-mips-2.6.18.2/arch/mips/mm/c-r3k.c2389 --- linux-2.6.18. 2/arch/mips/mm/c-r3k.c 2006-11-03 17:33:58.000000000 -08002390 +++ linux-mips-2.6.18. 2/arch/mips/mm/c-r3k.c 2006-11-04 14:51:12.000000000 -08003353 diff -Naur linux-2.6.18.3/arch/mips/mm/c-r3k.c linux-mips-2.6.18.3/arch/mips/mm/c-r3k.c 3354 --- linux-2.6.18.3/arch/mips/mm/c-r3k.c 2006-11-18 19:28:22.000000000 -0800 3355 +++ linux-mips-2.6.18.3/arch/mips/mm/c-r3k.c 2006-11-20 10:09:08.000000000 -0800 2391 3356 @@ -335,7 +335,7 @@ 2392 3357 flush_cache_mm = r3k_flush_cache_mm; … … 2398 3363 2399 3364 flush_cache_sigtramp = r3k_flush_cache_sigtramp; 2400 diff -Naur linux-2.6.18. 2/arch/mips/mm/c-r4k.c linux-mips-2.6.18.2/arch/mips/mm/c-r4k.c2401 --- linux-2.6.18. 2/arch/mips/mm/c-r4k.c 2006-11-03 17:33:58.000000000 -08002402 +++ linux-mips-2.6.18. 2/arch/mips/mm/c-r4k.c 2006-11-04 14:51:12.000000000 -08003365 diff -Naur linux-2.6.18.3/arch/mips/mm/c-r4k.c linux-mips-2.6.18.3/arch/mips/mm/c-r4k.c 3366 --- linux-2.6.18.3/arch/mips/mm/c-r4k.c 2006-11-18 19:28:22.000000000 -0800 3367 +++ linux-mips-2.6.18.3/arch/mips/mm/c-r4k.c 2006-11-20 10:09:08.000000000 -0800 2403 3368 @@ -475,7 +475,7 @@ 2404 3369 } … … 2437 3402 2438 3403 flush_cache_sigtramp = r4k_flush_cache_sigtramp; 2439 diff -Naur linux-2.6.18.2/arch/mips/mm/c-sb1.c linux-mips-2.6.18.2/arch/mips/mm/c-sb1.c 2440 --- linux-2.6.18.2/arch/mips/mm/c-sb1.c 2006-11-03 17:33:58.000000000 -0800 2441 +++ linux-mips-2.6.18.2/arch/mips/mm/c-sb1.c 2006-11-04 14:51:12.000000000 -0800 2442 @@ -155,6 +155,26 @@ 3404 diff -Naur linux-2.6.18.3/arch/mips/mm/c-sb1.c linux-mips-2.6.18.3/arch/mips/mm/c-sb1.c 3405 --- linux-2.6.18.3/arch/mips/mm/c-sb1.c 2006-11-18 19:28:22.000000000 -0800 3406 +++ linux-mips-2.6.18.3/arch/mips/mm/c-sb1.c 2006-11-20 10:09:08.000000000 -0800 3407 @@ -19,6 +19,7 @@ 3408 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 3409 */ 3410 #include <linux/init.h> 3411 +#include <linux/hardirq.h> 3412 3413 #include <asm/asm.h> 3414 #include <asm/bootinfo.h> 3415 @@ -155,6 +156,26 @@ 2443 3416 } 2444 3417 … … 2467 3440 * dcache first, then invalidate the icache. If the page isn't 2468 3441 * executable, nothing is required. 2469 @@ -173,8 +19 3,11 @@3442 @@ -173,8 +194,11 @@ 2470 3443 /* 2471 3444 * Bumping the ASID is probably cheaper than the flush ... … … 2481 3454 2482 3455 #ifdef CONFIG_SMP 2483 @@ -210,26 +23 3,6@@3456 @@ -210,26 +234,25 @@ 2484 3457 __attribute__((alias("local_sb1_flush_cache_page"))); 2485 3458 #endif … … 2493 3466 -static inline void __sb1_flush_icache_range(unsigned long start, 2494 3467 - unsigned long end) 2495 -{ 3468 +#ifdef CONFIG_SMP 3469 +static void sb1_flush_cache_data_page_ipi(void *info) 3470 { 2496 3471 - start &= ~(icache_line_size - 1); 2497 3472 - end = (end + icache_line_size - 1) & ~(icache_line_size - 1); 2498 - 3473 + unsigned long start = (unsigned long)info; 3474 2499 3475 - while (start != end) { 2500 3476 - cache_set_op(Index_Invalidate_I, start & icache_index_mask); … … 2503 3479 - mispredict(); 2504 3480 - sync(); 2505 -} 2506 - 3481 + __sb1_writeback_inv_dcache_range(start, start + PAGE_SIZE); 3482 } 3483 3484 +static void sb1_flush_cache_data_page(unsigned long addr) 3485 +{ 3486 + if (in_atomic()) 3487 + __sb1_writeback_inv_dcache_range(addr, addr + PAGE_SIZE); 3488 + else 3489 + on_each_cpu(sb1_flush_cache_data_page_ipi, (void *) addr, 1, 1); 3490 +} 3491 +#else 3492 +void sb1_flush_cache_data_page(unsigned long) 3493 + __attribute__((alias("local_sb1_flush_cache_data_page"))); 3494 +#endif 2507 3495 2508 3496 /* 2509 3497 * Invalidate all caches on this CPU 2510 @@ -326,9 +3 29,12 @@3498 @@ -326,9 +349,12 @@ 2511 3499 * If there's a context, bump the ASID (cheaper than a flush, 2512 3500 * since we don't know VAs!) … … 2524 3512 2525 3513 #ifdef CONFIG_SMP 2526 @@ -520,7 +5 26,7 @@3514 @@ -520,7 +546,7 @@ 2527 3515 2528 3516 /* These routines are for Icache coherence with the Dcache */ … … 2533 3521 2534 3522 /* This implies an Icache flush too, so can't be nop'ed */ 2535 diff -Naur linux-2.6.18.2/arch/mips/mm/c-tx39.c linux-mips-2.6.18.2/arch/mips/mm/c-tx39.c 2536 --- linux-2.6.18.2/arch/mips/mm/c-tx39.c 2006-11-03 17:33:58.000000000 -0800 2537 +++ linux-mips-2.6.18.2/arch/mips/mm/c-tx39.c 2006-11-04 14:51:12.000000000 -0800 3523 @@ -528,7 +554,7 @@ 3524 3525 flush_cache_sigtramp = sb1_flush_cache_sigtramp; 3526 local_flush_data_cache_page = (void *) sb1_nop; 3527 - flush_data_cache_page = (void *) sb1_nop; 3528 + flush_data_cache_page = sb1_flush_cache_data_page; 3529 3530 /* Full flush */ 3531 __flush_cache_all = sb1___flush_cache_all; 3532 @@ -552,5 +578,5 @@ 3533 : 3534 : "memory"); 3535 3536 - flush_cache_all(); 3537 + local_sb1___flush_cache_all(); 3538 } 3539 diff -Naur linux-2.6.18.3/arch/mips/mm/c-tx39.c linux-mips-2.6.18.3/arch/mips/mm/c-tx39.c 3540 --- linux-2.6.18.3/arch/mips/mm/c-tx39.c 2006-11-18 19:28:22.000000000 -0800 3541 +++ linux-mips-2.6.18.3/arch/mips/mm/c-tx39.c 2006-11-20 10:09:08.000000000 -0800 2538 3542 @@ -382,7 +382,7 @@ 2539 3543 flush_cache_mm = (void *) tx39h_flush_icache_all; … … 2554 3558 2555 3559 flush_cache_sigtramp = tx39_flush_cache_sigtramp; 2556 diff -Naur linux-2.6.18. 2/arch/mips/mm/cache.c linux-mips-2.6.18.2/arch/mips/mm/cache.c2557 --- linux-2.6.18. 2/arch/mips/mm/cache.c 2006-11-03 17:33:58.000000000 -08002558 +++ linux-mips-2.6.18. 2/arch/mips/mm/cache.c 2006-11-04 14:51:12.000000000 -08003560 diff -Naur linux-2.6.18.3/arch/mips/mm/cache.c linux-mips-2.6.18.3/arch/mips/mm/cache.c 3561 --- linux-2.6.18.3/arch/mips/mm/cache.c 2006-11-18 19:28:22.000000000 -0800 3562 +++ linux-mips-2.6.18.3/arch/mips/mm/cache.c 2006-11-20 10:09:08.000000000 -0800 2559 3563 @@ -25,7 +25,7 @@ 2560 3564 void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page, … … 2599 3603 } 2600 3604 } 2601 diff -Naur linux-2.6.18. 2/arch/mips/mm/fault.c linux-mips-2.6.18.2/arch/mips/mm/fault.c2602 --- linux-2.6.18. 2/arch/mips/mm/fault.c 2006-11-03 17:33:58.000000000 -08002603 +++ linux-mips-2.6.18. 2/arch/mips/mm/fault.c 2006-11-04 14:51:12.000000000 -08003605 diff -Naur linux-2.6.18.3/arch/mips/mm/fault.c linux-mips-2.6.18.3/arch/mips/mm/fault.c 3606 --- linux-2.6.18.3/arch/mips/mm/fault.c 2006-11-18 19:28:22.000000000 -0800 3607 +++ linux-mips-2.6.18.3/arch/mips/mm/fault.c 2006-11-20 10:09:08.000000000 -0800 2604 3608 @@ -89,7 +89,7 @@ 2605 3609 if (!(vma->vm_flags & VM_WRITE)) … … 2611 3615 } 2612 3616 2613 diff -Naur linux-2.6.18. 2/arch/mips/mm/init.c linux-mips-2.6.18.2/arch/mips/mm/init.c2614 --- linux-2.6.18. 2/arch/mips/mm/init.c 2006-11-03 17:33:58.000000000 -08002615 +++ linux-mips-2.6.18. 2/arch/mips/mm/init.c 2006-11-04 14:51:12.000000000 -08003617 diff -Naur linux-2.6.18.3/arch/mips/mm/init.c linux-mips-2.6.18.3/arch/mips/mm/init.c 3618 --- linux-2.6.18.3/arch/mips/mm/init.c 2006-11-18 19:28:22.000000000 -0800 3619 +++ linux-mips-2.6.18.3/arch/mips/mm/init.c 2006-11-20 10:09:08.000000000 -0800 2616 3620 @@ -30,11 +30,39 @@ 2617 3621 #include <asm/cachectl.h> … … 2884 3888 max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT; 2885 3889 low = max_low_pfn; 2886 diff -Naur linux-2.6.18. 2/arch/mips/mm/ioremap.c linux-mips-2.6.18.2/arch/mips/mm/ioremap.c2887 --- linux-2.6.18. 2/arch/mips/mm/ioremap.c 2006-11-03 17:33:58.000000000 -08002888 +++ linux-mips-2.6.18. 2/arch/mips/mm/ioremap.c 2006-11-04 14:51:12.000000000 -08003890 diff -Naur linux-2.6.18.3/arch/mips/mm/ioremap.c linux-mips-2.6.18.3/arch/mips/mm/ioremap.c 3891 --- linux-2.6.18.3/arch/mips/mm/ioremap.c 2006-11-18 19:28:22.000000000 -0800 3892 +++ linux-mips-2.6.18.3/arch/mips/mm/ioremap.c 2006-11-20 10:09:08.000000000 -0800 2889 3893 @@ -176,7 +176,7 @@ 2890 3894 … … 2896 3900 struct vm_struct *p; 2897 3901 2898 diff -Naur linux-2.6.18. 2/arch/mips/mm/pg-r4k.c linux-mips-2.6.18.2/arch/mips/mm/pg-r4k.c2899 --- linux-2.6.18. 2/arch/mips/mm/pg-r4k.c 2006-11-03 17:33:58.000000000 -08002900 +++ linux-mips-2.6.18. 2/arch/mips/mm/pg-r4k.c 2006-11-04 14:51:12.000000000 -08003902 diff -Naur linux-2.6.18.3/arch/mips/mm/pg-r4k.c linux-mips-2.6.18.3/arch/mips/mm/pg-r4k.c 3903 --- linux-2.6.18.3/arch/mips/mm/pg-r4k.c 2006-11-18 19:28:22.000000000 -0800 3904 +++ linux-mips-2.6.18.3/arch/mips/mm/pg-r4k.c 2006-11-20 10:09:08.000000000 -0800 2901 3905 @@ -270,6 +270,20 @@ 2902 3906 emit_instruction(mi); … … 2962 3966 if (R4600_V2_HIT_CACHEOP_WAR && cpu_is_r4600_v2_x()) 2963 3967 build_insn_word(0x3c01a000); /* lui $at, 0xa000 */ 2964 diff -Naur linux-2.6.18. 2/arch/mips/mm/pgtable-32.c linux-mips-2.6.18.2/arch/mips/mm/pgtable-32.c2965 --- linux-2.6.18. 2/arch/mips/mm/pgtable-32.c 2006-11-03 17:33:58.000000000 -08002966 +++ linux-mips-2.6.18. 2/arch/mips/mm/pgtable-32.c 2006-11-04 14:51:12.000000000 -08003968 diff -Naur linux-2.6.18.3/arch/mips/mm/pgtable-32.c linux-mips-2.6.18.3/arch/mips/mm/pgtable-32.c 3969 --- linux-2.6.18.3/arch/mips/mm/pgtable-32.c 2006-11-18 19:28:22.000000000 -0800 3970 +++ linux-mips-2.6.18.3/arch/mips/mm/pgtable-32.c 2006-11-20 10:09:08.000000000 -0800 2967 3971 @@ -31,9 +31,10 @@ 2968 3972 … … 2994 3998 * Permanent kmaps: 2995 3999 */ 2996 diff -Naur linux-2.6.18. 2/arch/mips/mm/pgtable-64.c linux-mips-2.6.18.2/arch/mips/mm/pgtable-64.c2997 --- linux-2.6.18. 2/arch/mips/mm/pgtable-64.c 2006-11-03 17:33:58.000000000 -08002998 +++ linux-mips-2.6.18. 2/arch/mips/mm/pgtable-64.c 2006-11-04 14:51:12.000000000 -08004000 diff -Naur linux-2.6.18.3/arch/mips/mm/pgtable-64.c linux-mips-2.6.18.3/arch/mips/mm/pgtable-64.c 4001 --- linux-2.6.18.3/arch/mips/mm/pgtable-64.c 2006-11-18 19:28:22.000000000 -0800 4002 +++ linux-mips-2.6.18.3/arch/mips/mm/pgtable-64.c 2006-11-20 10:09:08.000000000 -0800 2999 4003 @@ -8,6 +8,7 @@ 3000 4004 */ … … 3023 4027 + fixrange_init(vaddr, 0, pgd_base); 3024 4028 } 3025 diff -Naur linux-2.6.18. 2/arch/mips/mm/tlbex.c linux-mips-2.6.18.2/arch/mips/mm/tlbex.c3026 --- linux-2.6.18. 2/arch/mips/mm/tlbex.c 2006-11-03 17:33:58.000000000 -08003027 +++ linux-mips-2.6.18. 2/arch/mips/mm/tlbex.c 2006-11-04 14:51:12.000000000 -08004029 diff -Naur linux-2.6.18.3/arch/mips/mm/tlbex.c linux-mips-2.6.18.3/arch/mips/mm/tlbex.c 4030 --- linux-2.6.18.3/arch/mips/mm/tlbex.c 2006-11-18 19:28:22.000000000 -0800 4031 +++ linux-mips-2.6.18.3/arch/mips/mm/tlbex.c 2006-11-20 10:09:08.000000000 -0800 3028 4032 @@ -102,7 +102,7 @@ 3029 4033 insn_addu, insn_addiu, insn_and, insn_andi, insn_beq, … … 3074 4078 3075 4079 switch (current_cpu_data.cputype) { 3076 diff -Naur linux-2.6.18.2/arch/mips/oprofile/op_model_mipsxx.c linux-mips-2.6.18.2/arch/mips/oprofile/op_model_mipsxx.c 3077 --- linux-2.6.18.2/arch/mips/oprofile/op_model_mipsxx.c 2006-11-03 17:33:58.000000000 -0800 3078 +++ linux-mips-2.6.18.2/arch/mips/oprofile/op_model_mipsxx.c 2006-11-04 14:51:12.000000000 -0800 4080 diff -Naur linux-2.6.18.3/arch/mips/momentum/jaguar_atx/Makefile linux-mips-2.6.18.3/arch/mips/momentum/jaguar_atx/Makefile 4081 --- linux-2.6.18.3/arch/mips/momentum/jaguar_atx/Makefile 2006-11-18 19:28:22.000000000 -0800 4082 +++ linux-mips-2.6.18.3/arch/mips/momentum/jaguar_atx/Makefile 2006-11-20 10:09:08.000000000 -0800 4083 @@ -6,7 +6,7 @@ 4084 # unless it's something special (ie not a .c file). 4085 # 4086 4087 -obj-y += irq.o prom.o reset.o setup.o 4088 +obj-y += irq.o platform.o prom.o reset.o setup.o 4089 4090 obj-$(CONFIG_SERIAL_8250_CONSOLE) += ja-console.o 4091 obj-$(CONFIG_REMOTE_DEBUG) += dbg_io.o 4092 diff -Naur linux-2.6.18.3/arch/mips/momentum/jaguar_atx/jaguar_atx_fpga.h linux-mips-2.6.18.3/arch/mips/momentum/jaguar_atx/jaguar_atx_fpga.h 4093 --- linux-2.6.18.3/arch/mips/momentum/jaguar_atx/jaguar_atx_fpga.h 2006-11-18 19:28:22.000000000 -0800 4094 +++ linux-mips-2.6.18.3/arch/mips/momentum/jaguar_atx/jaguar_atx_fpga.h 2006-11-20 10:09:08.000000000 -0800 4095 @@ -46,7 +46,9 @@ 4096 4097 extern unsigned long ja_fpga_base; 4098 4099 -#define JAGUAR_FPGA_WRITE(x,y) writeb(x, ja_fpga_base + JAGUAR_ATX_REG_##y) 4100 -#define JAGUAR_FPGA_READ(x) readb(ja_fpga_base + JAGUAR_ATX_REG_##x) 4101 +#define __FPGA_REG_TO_ADDR(reg) \ 4102 + ((void *) ja_fpga_base + JAGUAR_ATX_REG_##reg) 4103 +#define JAGUAR_FPGA_WRITE(x, reg) writeb(x, __FPGA_REG_TO_ADDR(reg)) 4104 +#define JAGUAR_FPGA_READ(reg) readb(__FPGA_REG_TO_ADDR(reg)) 4105 4106 #endif 4107 diff -Naur linux-2.6.18.3/arch/mips/momentum/jaguar_atx/platform.c linux-mips-2.6.18.3/arch/mips/momentum/jaguar_atx/platform.c 4108 --- linux-2.6.18.3/arch/mips/momentum/jaguar_atx/platform.c 1969-12-31 16:00:00.000000000 -0800 4109 +++ linux-mips-2.6.18.3/arch/mips/momentum/jaguar_atx/platform.c 2006-11-20 10:09:08.000000000 -0800 4110 @@ -0,0 +1,235 @@ 4111 +#include <linux/delay.h> 4112 +#include <linux/if_ether.h> 4113 +#include <linux/ioport.h> 4114 +#include <linux/mv643xx.h> 4115 +#include <linux/platform_device.h> 4116 + 4117 +#include "jaguar_atx_fpga.h" 4118 + 4119 +#if defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE) 4120 + 4121 +static struct resource mv643xx_eth_shared_resources[] = { 4122 + [0] = { 4123 + .name = "ethernet shared base", 4124 + .start = 0xf1000000 + MV643XX_ETH_SHARED_REGS, 4125 + .end = 0xf1000000 + MV643XX_ETH_SHARED_REGS + 4126 + MV643XX_ETH_SHARED_REGS_SIZE - 1, 4127 + .flags = IORESOURCE_MEM, 4128 + }, 4129 +}; 4130 + 4131 +static struct platform_device mv643xx_eth_shared_device = { 4132 + .name = MV643XX_ETH_SHARED_NAME, 4133 + .id = 0, 4134 + .num_resources = ARRAY_SIZE(mv643xx_eth_shared_resources), 4135 + .resource = mv643xx_eth_shared_resources, 4136 +}; 4137 + 4138 +#define MV_SRAM_BASE 0xfe000000UL 4139 +#define MV_SRAM_SIZE (256 * 1024) 4140 + 4141 +#define MV_SRAM_RXRING_SIZE (MV_SRAM_SIZE / 4) 4142 +#define MV_SRAM_TXRING_SIZE (MV_SRAM_SIZE / 4) 4143 + 4144 +#define MV_SRAM_BASE_ETH0 MV_SRAM_BASE 4145 +#define MV_SRAM_BASE_ETH1 (MV_SRAM_BASE + (MV_SRAM_SIZE / 2)) 4146 + 4147 +#define MV64x60_IRQ_ETH_0 48 4148 +#define MV64x60_IRQ_ETH_1 49 4149 +#define MV64x60_IRQ_ETH_2 50 4150 + 4151 +#ifdef CONFIG_MV643XX_ETH_0 4152 + 4153 +static struct resource mv64x60_eth0_resources[] = { 4154 + [0] = { 4155 + .name = "eth0 irq", 4156 + .start = MV64x60_IRQ_ETH_0, 4157 + .end = MV64x60_IRQ_ETH_0, 4158 + .flags = IORESOURCE_IRQ, 4159 + }, 4160 +}; 4161 + 4162 +static char eth0_mac_addr[ETH_ALEN]; 4163 + 4164 +static struct mv643xx_eth_platform_data eth0_pd = { 4165 + .mac_addr = eth0_mac_addr, 4166 + 4167 + .tx_sram_addr = MV_SRAM_BASE_ETH0, 4168 + .tx_sram_size = MV_SRAM_TXRING_SIZE, 4169 + .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, 4170 + 4171 + .rx_sram_addr = MV_SRAM_BASE_ETH0 + MV_SRAM_TXRING_SIZE, 4172 + .rx_sram_size = MV_SRAM_RXRING_SIZE, 4173 + .rx_queue_size = MV_SRAM_RXRING_SIZE / 16, 4174 +}; 4175 + 4176 +static struct platform_device eth0_device = { 4177 + .name = MV643XX_ETH_NAME, 4178 + .id = 0, 4179 + .num_resources = ARRAY_SIZE(mv64x60_eth0_resources), 4180 + .resource = mv64x60_eth0_resources, 4181 + .dev = { 4182 + .platform_data = ð0_pd, 4183 + }, 4184 +}; 4185 +#endif /* CONFIG_MV643XX_ETH_0 */ 4186 + 4187 +#ifdef CONFIG_MV643XX_ETH_1 4188 + 4189 +static struct resource mv64x60_eth1_resources[] = { 4190 + [0] = { 4191 + .name = "eth1 irq", 4192 + .start = MV64x60_IRQ_ETH_1, 4193 + .end = MV64x60_IRQ_ETH_1, 4194 + .flags = IORESOURCE_IRQ, 4195 + }, 4196 +}; 4197 + 4198 +static char eth1_mac_addr[ETH_ALEN]; 4199 + 4200 +static struct mv643xx_eth_platform_data eth1_pd = { 4201 + .mac_addr = eth1_mac_addr, 4202 + 4203 + .tx_sram_addr = MV_SRAM_BASE_ETH1, 4204 + .tx_sram_size = MV_SRAM_TXRING_SIZE, 4205 + .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, 4206 + 4207 + .rx_sram_addr = MV_SRAM_BASE_ETH1 + MV_SRAM_TXRING_SIZE, 4208 + .rx_sram_size = MV_SRAM_RXRING_SIZE, 4209 + .rx_queue_size = MV_SRAM_RXRING_SIZE / 16, 4210 +}; 4211 + 4212 +static struct platform_device eth1_device = { 4213 + .name = MV643XX_ETH_NAME, 4214 + .id = 1, 4215 + .num_resources = ARRAY_SIZE(mv64x60_eth1_resources), 4216 + .resource = mv64x60_eth1_resources, 4217 + .dev = { 4218 + .platform_data = ð1_pd, 4219 + }, 4220 +}; 4221 +#endif /* CONFIG_MV643XX_ETH_1 */ 4222 + 4223 +#ifdef CONFIG_MV643XX_ETH_2 4224 + 4225 +static struct resource mv64x60_eth2_resources[] = { 4226 + [0] = { 4227 + .name = "eth2 irq", 4228 + .start = MV64x60_IRQ_ETH_2, 4229 + .end = MV64x60_IRQ_ETH_2, 4230 + .flags = IORESOURCE_IRQ, 4231 + }, 4232 +}; 4233 + 4234 +static char eth2_mac_addr[ETH_ALEN]; 4235 + 4236 +static struct mv643xx_eth_platform_data eth2_pd = { 4237 + .mac_addr = eth2_mac_addr, 4238 +}; 4239 + 4240 +static struct platform_device eth2_device = { 4241 + .name = MV643XX_ETH_NAME, 4242 + .id = 1, 4243 + .num_resources = ARRAY_SIZE(mv64x60_eth2_resources), 4244 + .resource = mv64x60_eth2_resources, 4245 + .dev = { 4246 + .platform_data = ð2_pd, 4247 + }, 4248 +}; 4249 +#endif /* CONFIG_MV643XX_ETH_2 */ 4250 + 4251 +static struct platform_device *mv643xx_eth_pd_devs[] __initdata = { 4252 + &mv643xx_eth_shared_device, 4253 +#ifdef CONFIG_MV643XX_ETH_0 4254 + ð0_device, 4255 +#endif 4256 +#ifdef CONFIG_MV643XX_ETH_1 4257 + ð1_device, 4258 +#endif 4259 +#ifdef CONFIG_MV643XX_ETH_2 4260 + ð2_device, 4261 +#endif 4262 +}; 4263 + 4264 +static u8 __init exchange_bit(u8 val, u8 cs) 4265 +{ 4266 + /* place the data */ 4267 + JAGUAR_FPGA_WRITE((val << 2) | cs, EEPROM_MODE); 4268 + udelay(1); 4269 + 4270 + /* turn the clock on */ 4271 + JAGUAR_FPGA_WRITE((val << 2) | cs | 0x2, EEPROM_MODE); 4272 + udelay(1); 4273 + 4274 + /* turn the clock off and read-strobe */ 4275 + JAGUAR_FPGA_WRITE((val << 2) | cs | 0x10, EEPROM_MODE); 4276 + 4277 + /* return the data */ 4278 + return (JAGUAR_FPGA_READ(EEPROM_MODE) >> 3) & 0x1; 4279 +} 4280 + 4281 +static void __init get_mac(char dest[6]) 4282 +{ 4283 + u8 read_opcode[12] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 4284 + int i,j; 4285 + 4286 + for (i = 0; i < 12; i++) 4287 + exchange_bit(read_opcode[i], 1); 4288 + 4289 + for (j = 0; j < 6; j++) { 4290 + dest[j] = 0; 4291 + for (i = 0; i < 8; i++) { 4292 + dest[j] <<= 1; 4293 + dest[j] |= exchange_bit(0, 1); 4294 + } 4295 + } 4296 + 4297 + /* turn off CS */ 4298 + exchange_bit(0,0); 4299 +} 4300 + 4301 +/* 4302 + * Copy and increment ethernet MAC address by a small value. 4303 + * 4304 + * This is useful for systems where the only one MAC address is stored in 4305 + * non-volatile memory for multiple ports. 4306 + */ 4307 +static inline void eth_mac_add(unsigned char *dst, unsigned char *src, 4308 + unsigned int add) 4309 +{ 4310 + int i; 4311 + 4312 + BUG_ON(add >= 256); 4313 + 4314 + for (i = ETH_ALEN; i >= 0; i--) { 4315 + dst[i] = src[i] + add; 4316 + add = dst[i] < src[i]; /* compute carry */ 4317 + } 4318 + 4319 + WARN_ON(add); 4320 +} 4321 + 4322 +static int __init mv643xx_eth_add_pds(void) 4323 +{ 4324 + unsigned char mac[ETH_ALEN]; 4325 + int ret; 4326 + 4327 + get_mac(mac); 4328 +#ifdef CONFIG_MV643XX_ETH_0 4329 + eth_mac_add(eth1_mac_addr, mac, 0); 4330 +#endif 4331 +#ifdef CONFIG_MV643XX_ETH_1 4332 + eth_mac_add(eth1_mac_addr, mac, 1); 4333 +#endif 4334 +#ifdef CONFIG_MV643XX_ETH_2 4335 + eth_mac_add(eth2_mac_addr, mac, 2); 4336 +#endif 4337 + ret = platform_add_devices(mv643xx_eth_pd_devs, 4338 + ARRAY_SIZE(mv643xx_eth_pd_devs)); 4339 + 4340 + return ret; 4341 +} 4342 + 4343 +device_initcall(mv643xx_eth_add_pds); 4344 + 4345 +#endif /* defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE) */ 4346 diff -Naur linux-2.6.18.3/arch/mips/momentum/jaguar_atx/prom.c linux-mips-2.6.18.3/arch/mips/momentum/jaguar_atx/prom.c 4347 --- linux-2.6.18.3/arch/mips/momentum/jaguar_atx/prom.c 2006-11-18 19:28:22.000000000 -0800 4348 +++ linux-mips-2.6.18.3/arch/mips/momentum/jaguar_atx/prom.c 2006-11-20 10:09:08.000000000 -0800 4349 @@ -39,56 +39,6 @@ 4350 return "Momentum Jaguar-ATX"; 4351 } 4352 4353 -#ifdef CONFIG_MV643XX_ETH 4354 -extern unsigned char prom_mac_addr_base[6]; 4355 - 4356 -static void burn_clocks(void) 4357 -{ 4358 - int i; 4359 - 4360 - /* this loop should burn at least 1us -- this should be plenty */ 4361 - for (i = 0; i < 0x10000; i++) 4362 - ; 4363 -} 4364 - 4365 -static u8 exchange_bit(u8 val, u8 cs) 4366 -{ 4367 - /* place the data */ 4368 - JAGUAR_FPGA_WRITE((val << 2) | cs, EEPROM_MODE); 4369 - burn_clocks(); 4370 - 4371 - /* turn the clock on */ 4372 - JAGUAR_FPGA_WRITE((val << 2) | cs | 0x2, EEPROM_MODE); 4373 - burn_clocks(); 4374 - 4375 - /* turn the clock off and read-strobe */ 4376 - JAGUAR_FPGA_WRITE((val << 2) | cs | 0x10, EEPROM_MODE); 4377 - 4378 - /* return the data */ 4379 - return ((JAGUAR_FPGA_READ(EEPROM_MODE) >> 3) & 0x1); 4380 -} 4381 - 4382 -void get_mac(char dest[6]) 4383 -{ 4384 - u8 read_opcode[12] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 4385 - int i,j; 4386 - 4387 - for (i = 0; i < 12; i++) 4388 - exchange_bit(read_opcode[i], 1); 4389 - 4390 - for (j = 0; j < 6; j++) { 4391 - dest[j] = 0; 4392 - for (i = 0; i < 8; i++) { 4393 - dest[j] <<= 1; 4394 - dest[j] |= exchange_bit(0, 1); 4395 - } 4396 - } 4397 - 4398 - /* turn off CS */ 4399 - exchange_bit(0,0); 4400 -} 4401 -#endif 4402 - 4403 #ifdef CONFIG_64BIT 4404 4405 unsigned long signext(unsigned long addr) 4406 @@ -228,11 +178,6 @@ 4407 #endif /* CONFIG_64BIT */ 4408 mips_machgroup = MACH_GROUP_MOMENCO; 4409 mips_machtype = MACH_MOMENCO_JAGUAR_ATX; 4410 - 4411 -#ifdef CONFIG_MV643XX_ETH 4412 - /* get the base MAC address for on-board ethernet ports */ 4413 - get_mac(prom_mac_addr_base); 4414 -#endif 4415 } 4416 4417 unsigned long __init prom_free_prom_memory(void) 4418 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_3/Makefile linux-mips-2.6.18.3/arch/mips/momentum/ocelot_3/Makefile 4419 --- linux-2.6.18.3/arch/mips/momentum/ocelot_3/Makefile 2006-11-18 19:28:22.000000000 -0800 4420 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_3/Makefile 2006-11-20 10:09:08.000000000 -0800 4421 @@ -5,4 +5,4 @@ 4422 # removes any old dependencies. DON'T put your own dependencies here 4423 # unless it's something special (ie not a .c file). 4424 # 4425 -obj-y += irq.o prom.o reset.o setup.o 4426 +obj-y += irq.o platform.o prom.o reset.o setup.o 4427 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_3/ocelot_3_fpga.h linux-mips-2.6.18.3/arch/mips/momentum/ocelot_3/ocelot_3_fpga.h 4428 --- linux-2.6.18.3/arch/mips/momentum/ocelot_3/ocelot_3_fpga.h 2006-11-18 19:28:22.000000000 -0800 4429 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_3/ocelot_3_fpga.h 2006-11-20 10:09:08.000000000 -0800 4430 @@ -51,7 +51,9 @@ 4431 4432 extern unsigned long ocelot_fpga_base; 4433 4434 -#define OCELOT_FPGA_WRITE(x, y) writeb(x, ocelot_fpga_base + OCELOT_3_REG_##y) 4435 -#define OCELOT_FPGA_READ(x) readb(ocelot_fpga_base + OCELOT_3_REG_##x) 4436 +#define __FPGA_REG_TO_ADDR(reg) \ 4437 + ((void *) ocelot_fpga_base + OCELOT_3_REG_##reg) 4438 +#define OCELOT_FPGA_WRITE(x, reg) writeb(x, __FPGA_REG_TO_ADDR(reg)) 4439 +#define OCELOT_FPGA_READ(reg) readb(__FPGA_REG_TO_ADDR(reg)) 4440 4441 #endif 4442 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_3/platform.c linux-mips-2.6.18.3/arch/mips/momentum/ocelot_3/platform.c 4443 --- linux-2.6.18.3/arch/mips/momentum/ocelot_3/platform.c 1969-12-31 16:00:00.000000000 -0800 4444 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_3/platform.c 2006-11-20 10:09:08.000000000 -0800 4445 @@ -0,0 +1,235 @@ 4446 +#include <linux/delay.h> 4447 +#include <linux/if_ether.h> 4448 +#include <linux/ioport.h> 4449 +#include <linux/mv643xx.h> 4450 +#include <linux/platform_device.h> 4451 + 4452 +#include "ocelot_3_fpga.h" 4453 + 4454 +#if defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE) 4455 + 4456 +static struct resource mv643xx_eth_shared_resources[] = { 4457 + [0] = { 4458 + .name = "ethernet shared base", 4459 + .start = 0xf1000000 + MV643XX_ETH_SHARED_REGS, 4460 + .end = 0xf1000000 + MV643XX_ETH_SHARED_REGS + 4461 + MV643XX_ETH_SHARED_REGS_SIZE - 1, 4462 + .flags = IORESOURCE_MEM, 4463 + }, 4464 +}; 4465 + 4466 +static struct platform_device mv643xx_eth_shared_device = { 4467 + .name = MV643XX_ETH_SHARED_NAME, 4468 + .id = 0, 4469 + .num_resources = ARRAY_SIZE(mv643xx_eth_shared_resources), 4470 + .resource = mv643xx_eth_shared_resources, 4471 +}; 4472 + 4473 +#define MV_SRAM_BASE 0xfe000000UL 4474 +#define MV_SRAM_SIZE (256 * 1024) 4475 + 4476 +#define MV_SRAM_RXRING_SIZE (MV_SRAM_SIZE / 4) 4477 +#define MV_SRAM_TXRING_SIZE (MV_SRAM_SIZE / 4) 4478 + 4479 +#define MV_SRAM_BASE_ETH0 MV_SRAM_BASE 4480 +#define MV_SRAM_BASE_ETH1 (MV_SRAM_BASE + (MV_SRAM_SIZE / 2)) 4481 + 4482 +#define MV64x60_IRQ_ETH_0 48 4483 +#define MV64x60_IRQ_ETH_1 49 4484 +#define MV64x60_IRQ_ETH_2 50 4485 + 4486 +#ifdef CONFIG_MV643XX_ETH_0 4487 + 4488 +static struct resource mv64x60_eth0_resources[] = { 4489 + [0] = { 4490 + .name = "eth0 irq", 4491 + .start = MV64x60_IRQ_ETH_0, 4492 + .end = MV64x60_IRQ_ETH_0, 4493 + .flags = IORESOURCE_IRQ, 4494 + }, 4495 +}; 4496 + 4497 +static char eth0_mac_addr[ETH_ALEN]; 4498 + 4499 +static struct mv643xx_eth_platform_data eth0_pd = { 4500 + .mac_addr = eth0_mac_addr, 4501 + 4502 + .tx_sram_addr = MV_SRAM_BASE_ETH0, 4503 + .tx_sram_size = MV_SRAM_TXRING_SIZE, 4504 + .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, 4505 + 4506 + .rx_sram_addr = MV_SRAM_BASE_ETH0 + MV_SRAM_TXRING_SIZE, 4507 + .rx_sram_size = MV_SRAM_RXRING_SIZE, 4508 + .rx_queue_size = MV_SRAM_RXRING_SIZE / 16, 4509 +}; 4510 + 4511 +static struct platform_device eth0_device = { 4512 + .name = MV643XX_ETH_NAME, 4513 + .id = 0, 4514 + .num_resources = ARRAY_SIZE(mv64x60_eth0_resources), 4515 + .resource = mv64x60_eth0_resources, 4516 + .dev = { 4517 + .platform_data = ð0_pd, 4518 + }, 4519 +}; 4520 +#endif /* CONFIG_MV643XX_ETH_0 */ 4521 + 4522 +#ifdef CONFIG_MV643XX_ETH_1 4523 + 4524 +static struct resource mv64x60_eth1_resources[] = { 4525 + [0] = { 4526 + .name = "eth1 irq", 4527 + .start = MV64x60_IRQ_ETH_1, 4528 + .end = MV64x60_IRQ_ETH_1, 4529 + .flags = IORESOURCE_IRQ, 4530 + }, 4531 +}; 4532 + 4533 +static char eth1_mac_addr[ETH_ALEN]; 4534 + 4535 +static struct mv643xx_eth_platform_data eth1_pd = { 4536 + .mac_addr = eth1_mac_addr, 4537 + 4538 + .tx_sram_addr = MV_SRAM_BASE_ETH1, 4539 + .tx_sram_size = MV_SRAM_TXRING_SIZE, 4540 + .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, 4541 + 4542 + .rx_sram_addr = MV_SRAM_BASE_ETH1 + MV_SRAM_TXRING_SIZE, 4543 + .rx_sram_size = MV_SRAM_RXRING_SIZE, 4544 + .rx_queue_size = MV_SRAM_RXRING_SIZE / 16, 4545 +}; 4546 + 4547 +static struct platform_device eth1_device = { 4548 + .name = MV643XX_ETH_NAME, 4549 + .id = 1, 4550 + .num_resources = ARRAY_SIZE(mv64x60_eth1_resources), 4551 + .resource = mv64x60_eth1_resources, 4552 + .dev = { 4553 + .platform_data = ð1_pd, 4554 + }, 4555 +}; 4556 +#endif /* CONFIG_MV643XX_ETH_1 */ 4557 + 4558 +#ifdef CONFIG_MV643XX_ETH_2 4559 + 4560 +static struct resource mv64x60_eth2_resources[] = { 4561 + [0] = { 4562 + .name = "eth2 irq", 4563 + .start = MV64x60_IRQ_ETH_2, 4564 + .end = MV64x60_IRQ_ETH_2, 4565 + .flags = IORESOURCE_IRQ, 4566 + }, 4567 +}; 4568 + 4569 +static char eth2_mac_addr[ETH_ALEN]; 4570 + 4571 +static struct mv643xx_eth_platform_data eth2_pd = { 4572 + .mac_addr = eth2_mac_addr, 4573 +}; 4574 + 4575 +static struct platform_device eth2_device = { 4576 + .name = MV643XX_ETH_NAME, 4577 + .id = 1, 4578 + .num_resources = ARRAY_SIZE(mv64x60_eth2_resources), 4579 + .resource = mv64x60_eth2_resources, 4580 + .dev = { 4581 + .platform_data = ð2_pd, 4582 + }, 4583 +}; 4584 +#endif /* CONFIG_MV643XX_ETH_2 */ 4585 + 4586 +static struct platform_device *mv643xx_eth_pd_devs[] __initdata = { 4587 + &mv643xx_eth_shared_device, 4588 +#ifdef CONFIG_MV643XX_ETH_0 4589 + ð0_device, 4590 +#endif 4591 +#ifdef CONFIG_MV643XX_ETH_1 4592 + ð1_device, 4593 +#endif 4594 +#ifdef CONFIG_MV643XX_ETH_2 4595 + ð2_device, 4596 +#endif 4597 +}; 4598 + 4599 +static u8 __init exchange_bit(u8 val, u8 cs) 4600 +{ 4601 + /* place the data */ 4602 + OCELOT_FPGA_WRITE((val << 2) | cs, EEPROM_MODE); 4603 + udelay(1); 4604 + 4605 + /* turn the clock on */ 4606 + OCELOT_FPGA_WRITE((val << 2) | cs | 0x2, EEPROM_MODE); 4607 + udelay(1); 4608 + 4609 + /* turn the clock off and read-strobe */ 4610 + OCELOT_FPGA_WRITE((val << 2) | cs | 0x10, EEPROM_MODE); 4611 + 4612 + /* return the data */ 4613 + return (OCELOT_FPGA_READ(EEPROM_MODE) >> 3) & 0x1; 4614 +} 4615 + 4616 +static void __init get_mac(char dest[6]) 4617 +{ 4618 + u8 read_opcode[12] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 4619 + int i,j; 4620 + 4621 + for (i = 0; i < 12; i++) 4622 + exchange_bit(read_opcode[i], 1); 4623 + 4624 + for (j = 0; j < 6; j++) { 4625 + dest[j] = 0; 4626 + for (i = 0; i < 8; i++) { 4627 + dest[j] <<= 1; 4628 + dest[j] |= exchange_bit(0, 1); 4629 + } 4630 + } 4631 + 4632 + /* turn off CS */ 4633 + exchange_bit(0,0); 4634 +} 4635 + 4636 +/* 4637 + * Copy and increment ethernet MAC address by a small value. 4638 + * 4639 + * This is useful for systems where the only one MAC address is stored in 4640 + * non-volatile memory for multiple ports. 4641 + */ 4642 +static inline void eth_mac_add(unsigned char *dst, unsigned char *src, 4643 + unsigned int add) 4644 +{ 4645 + int i; 4646 + 4647 + BUG_ON(add >= 256); 4648 + 4649 + for (i = ETH_ALEN; i >= 0; i--) { 4650 + dst[i] = src[i] + add; 4651 + add = dst[i] < src[i]; /* compute carry */ 4652 + } 4653 + 4654 + WARN_ON(add); 4655 +} 4656 + 4657 +static int __init mv643xx_eth_add_pds(void) 4658 +{ 4659 + unsigned char mac[ETH_ALEN]; 4660 + int ret; 4661 + 4662 + get_mac(mac); 4663 +#ifdef CONFIG_MV643XX_ETH_0 4664 + eth_mac_add(eth1_mac_addr, mac, 0); 4665 +#endif 4666 +#ifdef CONFIG_MV643XX_ETH_1 4667 + eth_mac_add(eth1_mac_addr, mac, 1); 4668 +#endif 4669 +#ifdef CONFIG_MV643XX_ETH_2 4670 + eth_mac_add(eth2_mac_addr, mac, 2); 4671 +#endif 4672 + ret = platform_add_devices(mv643xx_eth_pd_devs, 4673 + ARRAY_SIZE(mv643xx_eth_pd_devs)); 4674 + 4675 + return ret; 4676 +} 4677 + 4678 +device_initcall(mv643xx_eth_add_pds); 4679 + 4680 +#endif /* defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE) */ 4681 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_3/prom.c linux-mips-2.6.18.3/arch/mips/momentum/ocelot_3/prom.c 4682 --- linux-2.6.18.3/arch/mips/momentum/ocelot_3/prom.c 2006-11-18 19:28:22.000000000 -0800 4683 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_3/prom.c 2006-11-20 10:09:08.000000000 -0800 4684 @@ -34,64 +34,11 @@ 4685 extern unsigned long marvell_base; 4686 extern unsigned long cpu_clock; 4687 4688 -#ifdef CONFIG_MV643XX_ETH 4689 -extern unsigned char prom_mac_addr_base[6]; 4690 -#endif 4691 - 4692 const char *get_system_type(void) 4693 { 4694 return "Momentum Ocelot-3"; 4695 } 4696 4697 -#ifdef CONFIG_MV643XX_ETH 4698 -void burn_clocks(void) 4699 -{ 4700 - int i; 4701 - 4702 - /* this loop should burn at least 1us -- this should be plenty */ 4703 - for (i = 0; i < 0x10000; i++) 4704 - ; 4705 -} 4706 - 4707 -u8 exchange_bit(u8 val, u8 cs) 4708 -{ 4709 - /* place the data */ 4710 - OCELOT_FPGA_WRITE((val << 2) | cs, EEPROM_MODE); 4711 - burn_clocks(); 4712 - 4713 - /* turn the clock on */ 4714 - OCELOT_FPGA_WRITE((val << 2) | cs | 0x2, EEPROM_MODE); 4715 - burn_clocks(); 4716 - 4717 - /* turn the clock off and read-strobe */ 4718 - OCELOT_FPGA_WRITE((val << 2) | cs | 0x10, EEPROM_MODE); 4719 - 4720 - /* return the data */ 4721 - return ((OCELOT_FPGA_READ(EEPROM_MODE) >> 3) & 0x1); 4722 -} 4723 - 4724 -void get_mac(char dest[6]) 4725 -{ 4726 - u8 read_opcode[12] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 4727 - int i,j; 4728 - 4729 - for (i = 0; i < 12; i++) 4730 - exchange_bit(read_opcode[i], 1); 4731 - 4732 - for (j = 0; j < 6; j++) { 4733 - dest[j] = 0; 4734 - for (i = 0; i < 8; i++) { 4735 - dest[j] <<= 1; 4736 - dest[j] |= exchange_bit(0, 1); 4737 - } 4738 - } 4739 - 4740 - /* turn off CS */ 4741 - exchange_bit(0,0); 4742 -} 4743 -#endif 4744 - 4745 - 4746 #ifdef CONFIG_64BIT 4747 4748 unsigned long signext(unsigned long addr) 4749 @@ -228,11 +175,6 @@ 4750 mips_machgroup = MACH_GROUP_MOMENCO; 4751 mips_machtype = MACH_MOMENCO_OCELOT_3; 4752 4753 -#ifdef CONFIG_MV643XX_ETH 4754 - /* get the base MAC address for on-board ethernet ports */ 4755 - get_mac(prom_mac_addr_base); 4756 -#endif 4757 - 4758 #ifndef CONFIG_64BIT 4759 debug_vectors->printf("Booting Linux kernel...\n"); 4760 #endif 4761 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_3/setup.c linux-mips-2.6.18.3/arch/mips/momentum/ocelot_3/setup.c 4762 --- linux-2.6.18.3/arch/mips/momentum/ocelot_3/setup.c 2006-11-18 19:28:22.000000000 -0800 4763 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_3/setup.c 2006-11-20 10:09:08.000000000 -0800 4764 @@ -4,7 +4,7 @@ 4765 * BRIEF MODULE DESCRIPTION 4766 * Momentum Computer Ocelot-3 board dependent boot routines 4767 * 4768 - * Copyright (C) 1996, 1997, 01, 05 Ralf Baechle 4769 + * Copyright (C) 1996, 1997, 01, 05 - 06 Ralf Baechle 4770 * Copyright (C) 2000 RidgeRun, Inc. 4771 * Copyright (C) 2001 Red Hat, Inc. 4772 * Copyright (C) 2002 Momentum Computer 4773 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_c/Makefile linux-mips-2.6.18.3/arch/mips/momentum/ocelot_c/Makefile 4774 --- linux-2.6.18.3/arch/mips/momentum/ocelot_c/Makefile 2006-11-18 19:28:22.000000000 -0800 4775 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_c/Makefile 2006-11-20 10:09:08.000000000 -0800 4776 @@ -2,7 +2,7 @@ 4777 # Makefile for Momentum Computer's Ocelot-C and -CS boards. 4778 # 4779 4780 -obj-y += cpci-irq.o irq.o prom.o reset.o \ 4781 +obj-y += cpci-irq.o irq.o platform.o prom.o reset.o \ 4782 setup.o uart-irq.o 4783 4784 obj-$(CONFIG_KGDB) += dbg_io.o 4785 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_c/ocelot_c_fpga.h linux-mips-2.6.18.3/arch/mips/momentum/ocelot_c/ocelot_c_fpga.h 4786 --- linux-2.6.18.3/arch/mips/momentum/ocelot_c/ocelot_c_fpga.h 2006-11-18 19:28:22.000000000 -0800 4787 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_c/ocelot_c_fpga.h 2006-11-20 10:09:08.000000000 -0800 4788 @@ -53,7 +53,9 @@ 4789 #define OCELOT_C_REG_INTSET 0xe 4790 #define OCELOT_C_REG_INTCLR 0xf 4791 4792 -#define OCELOT_FPGA_WRITE(x, y) writeb(x, OCELOT_C_CS0_ADDR + OCELOT_C_REG_##y) 4793 -#define OCELOT_FPGA_READ(x) readb(OCELOT_C_CS0_ADDR + OCELOT_C_REG_##x) 4794 +#define __FPGA_REG_TO_ADDR(reg) \ 4795 + ((void *) OCELOT_C_CS0_ADDR + OCELOT_C_REG_##reg) 4796 +#define OCELOT_FPGA_WRITE(x, reg) writeb(x, __FPGA_REG_TO_ADDR(reg)) 4797 +#define OCELOT_FPGA_READ(reg) readb(__FPGA_REG_TO_ADDR(reg)) 4798 4799 #endif 4800 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_c/platform.c linux-mips-2.6.18.3/arch/mips/momentum/ocelot_c/platform.c 4801 --- linux-2.6.18.3/arch/mips/momentum/ocelot_c/platform.c 1969-12-31 16:00:00.000000000 -0800 4802 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_c/platform.c 2006-11-20 10:09:08.000000000 -0800 4803 @@ -0,0 +1,201 @@ 4804 +#include <linux/delay.h> 4805 +#include <linux/if_ether.h> 4806 +#include <linux/ioport.h> 4807 +#include <linux/mv643xx.h> 4808 +#include <linux/platform_device.h> 4809 + 4810 +#include "ocelot_c_fpga.h" 4811 + 4812 +#if defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE) 4813 + 4814 +static struct resource mv643xx_eth_shared_resources[] = { 4815 + [0] = { 4816 + .name = "ethernet shared base", 4817 + .start = 0xf1000000 + MV643XX_ETH_SHARED_REGS, 4818 + .end = 0xf1000000 + MV643XX_ETH_SHARED_REGS + 4819 + MV643XX_ETH_SHARED_REGS_SIZE - 1, 4820 + .flags = IORESOURCE_MEM, 4821 + }, 4822 +}; 4823 + 4824 +static struct platform_device mv643xx_eth_shared_device = { 4825 + .name = MV643XX_ETH_SHARED_NAME, 4826 + .id = 0, 4827 + .num_resources = ARRAY_SIZE(mv643xx_eth_shared_resources), 4828 + .resource = mv643xx_eth_shared_resources, 4829 +}; 4830 + 4831 +#define MV_SRAM_BASE 0xfe000000UL 4832 +#define MV_SRAM_SIZE (256 * 1024) 4833 + 4834 +#define MV_SRAM_RXRING_SIZE (MV_SRAM_SIZE / 4) 4835 +#define MV_SRAM_TXRING_SIZE (MV_SRAM_SIZE / 4) 4836 + 4837 +#define MV_SRAM_BASE_ETH0 MV_SRAM_BASE 4838 +#define MV_SRAM_BASE_ETH1 (MV_SRAM_BASE + (MV_SRAM_SIZE / 2)) 4839 + 4840 +#define MV64x60_IRQ_ETH_0 48 4841 +#define MV64x60_IRQ_ETH_1 49 4842 + 4843 +#ifdef CONFIG_MV643XX_ETH_0 4844 + 4845 +static struct resource mv64x60_eth0_resources[] = { 4846 + [0] = { 4847 + .name = "eth0 irq", 4848 + .start = MV64x60_IRQ_ETH_0, 4849 + .end = MV64x60_IRQ_ETH_0, 4850 + .flags = IORESOURCE_IRQ, 4851 + }, 4852 +}; 4853 + 4854 +static char eth0_mac_addr[ETH_ALEN]; 4855 + 4856 +static struct mv643xx_eth_platform_data eth0_pd = { 4857 + .mac_addr = eth0_mac_addr, 4858 + 4859 + .tx_sram_addr = MV_SRAM_BASE_ETH0, 4860 + .tx_sram_size = MV_SRAM_TXRING_SIZE, 4861 + .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, 4862 + 4863 + .rx_sram_addr = MV_SRAM_BASE_ETH0 + MV_SRAM_TXRING_SIZE, 4864 + .rx_sram_size = MV_SRAM_RXRING_SIZE, 4865 + .rx_queue_size = MV_SRAM_RXRING_SIZE / 16, 4866 +}; 4867 + 4868 +static struct platform_device eth0_device = { 4869 + .name = MV643XX_ETH_NAME, 4870 + .id = 0, 4871 + .num_resources = ARRAY_SIZE(mv64x60_eth0_resources), 4872 + .resource = mv64x60_eth0_resources, 4873 + .dev = { 4874 + .platform_data = ð0_pd, 4875 + }, 4876 +}; 4877 +#endif /* CONFIG_MV643XX_ETH_0 */ 4878 + 4879 +#ifdef CONFIG_MV643XX_ETH_1 4880 + 4881 +static struct resource mv64x60_eth1_resources[] = { 4882 + [0] = { 4883 + .name = "eth1 irq", 4884 + .start = MV64x60_IRQ_ETH_1, 4885 + .end = MV64x60_IRQ_ETH_1, 4886 + .flags = IORESOURCE_IRQ, 4887 + }, 4888 +}; 4889 + 4890 +static char eth1_mac_addr[ETH_ALEN]; 4891 + 4892 +static struct mv643xx_eth_platform_data eth1_pd = { 4893 + .mac_addr = eth1_mac_addr, 4894 + 4895 + .tx_sram_addr = MV_SRAM_BASE_ETH1, 4896 + .tx_sram_size = MV_SRAM_TXRING_SIZE, 4897 + .tx_queue_size = MV_SRAM_TXRING_SIZE / 16, 4898 + 4899 + .rx_sram_addr = MV_SRAM_BASE_ETH1 + MV_SRAM_TXRING_SIZE, 4900 + .rx_sram_size = MV_SRAM_RXRING_SIZE, 4901 + .rx_queue_size = MV_SRAM_RXRING_SIZE / 16, 4902 +}; 4903 + 4904 +static struct platform_device eth1_device = { 4905 + .name = MV643XX_ETH_NAME, 4906 + .id = 1, 4907 + .num_resources = ARRAY_SIZE(mv64x60_eth1_resources), 4908 + .resource = mv64x60_eth1_resources, 4909 + .dev = { 4910 + .platform_data = ð1_pd, 4911 + }, 4912 +}; 4913 +#endif /* CONFIG_MV643XX_ETH_1 */ 4914 + 4915 +static struct platform_device *mv643xx_eth_pd_devs[] __initdata = { 4916 + &mv643xx_eth_shared_device, 4917 +#ifdef CONFIG_MV643XX_ETH_0 4918 + ð0_device, 4919 +#endif 4920 +#ifdef CONFIG_MV643XX_ETH_1 4921 + ð1_device, 4922 +#endif 4923 + /* The third port is not wired up on the Ocelot C */ 4924 +}; 4925 + 4926 +static u8 __init exchange_bit(u8 val, u8 cs) 4927 +{ 4928 + /* place the data */ 4929 + OCELOT_FPGA_WRITE((val << 2) | cs, EEPROM_MODE); 4930 + udelay(1); 4931 + 4932 + /* turn the clock on */ 4933 + OCELOT_FPGA_WRITE((val << 2) | cs | 0x2, EEPROM_MODE); 4934 + udelay(1); 4935 + 4936 + /* turn the clock off and read-strobe */ 4937 + OCELOT_FPGA_WRITE((val << 2) | cs | 0x10, EEPROM_MODE); 4938 + 4939 + /* return the data */ 4940 + return (OCELOT_FPGA_READ(EEPROM_MODE) >> 3) & 0x1; 4941 +} 4942 + 4943 +static void __init get_mac(char dest[6]) 4944 +{ 4945 + u8 read_opcode[12] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 4946 + int i,j; 4947 + 4948 + for (i = 0; i < 12; i++) 4949 + exchange_bit(read_opcode[i], 1); 4950 + 4951 + for (j = 0; j < 6; j++) { 4952 + dest[j] = 0; 4953 + for (i = 0; i < 8; i++) { 4954 + dest[j] <<= 1; 4955 + dest[j] |= exchange_bit(0, 1); 4956 + } 4957 + } 4958 + 4959 + /* turn off CS */ 4960 + exchange_bit(0,0); 4961 +} 4962 + 4963 +/* 4964 + * Copy and increment ethernet MAC address by a small value. 4965 + * 4966 + * This is useful for systems where the only one MAC address is stored in 4967 + * non-volatile memory for multiple ports. 4968 + */ 4969 +static inline void eth_mac_add(unsigned char *dst, unsigned char *src, 4970 + unsigned int add) 4971 +{ 4972 + int i; 4973 + 4974 + BUG_ON(add >= 256); 4975 + 4976 + for (i = ETH_ALEN; i >= 0; i--) { 4977 + dst[i] = src[i] + add; 4978 + add = dst[i] < src[i]; /* compute carry */ 4979 + } 4980 + 4981 + WARN_ON(add); 4982 +} 4983 + 4984 +static int __init mv643xx_eth_add_pds(void) 4985 +{ 4986 + unsigned char mac[ETH_ALEN]; 4987 + int ret; 4988 + 4989 + get_mac(mac); 4990 +#ifdef CONFIG_MV643XX_ETH_0 4991 + eth_mac_add(eth1_mac_addr, mac, 0); 4992 +#endif 4993 +#ifdef CONFIG_MV643XX_ETH_1 4994 + eth_mac_add(eth1_mac_addr, mac, 1); 4995 +#endif 4996 + ret = platform_add_devices(mv643xx_eth_pd_devs, 4997 + ARRAY_SIZE(mv643xx_eth_pd_devs)); 4998 + 4999 + return ret; 5000 +} 5001 + 5002 +device_initcall(mv643xx_eth_add_pds); 5003 + 5004 +#endif /* defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE) */ 5005 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_c/prom.c linux-mips-2.6.18.3/arch/mips/momentum/ocelot_c/prom.c 5006 --- linux-2.6.18.3/arch/mips/momentum/ocelot_c/prom.c 2006-11-18 19:28:22.000000000 -0800 5007 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_c/prom.c 2006-11-20 10:09:08.000000000 -0800 5008 @@ -29,11 +29,7 @@ 5009 struct callvectors* debug_vectors; 5010 5011 extern unsigned long marvell_base; 5012 -extern unsigned long cpu_clock; 5013 - 5014 -#ifdef CONFIG_MV643XX_ETH 5015 -extern unsigned char prom_mac_addr_base[6]; 5016 -#endif 5017 +extern unsigned int cpu_clock; 5018 5019 const char *get_system_type(void) 5020 { 5021 @@ -44,55 +40,6 @@ 5022 #endif 5023 } 5024 5025 -#ifdef CONFIG_MV643XX_ETH 5026 -static void burn_clocks(void) 5027 -{ 5028 - int i; 5029 - 5030 - /* this loop should burn at least 1us -- this should be plenty */ 5031 - for (i = 0; i < 0x10000; i++) 5032 - ; 5033 -} 5034 - 5035 -static u8 exchange_bit(u8 val, u8 cs) 5036 -{ 5037 - /* place the data */ 5038 - OCELOT_FPGA_WRITE((val << 2) | cs, EEPROM_MODE); 5039 - burn_clocks(); 5040 - 5041 - /* turn the clock on */ 5042 - OCELOT_FPGA_WRITE((val << 2) | cs | 0x2, EEPROM_MODE); 5043 - burn_clocks(); 5044 - 5045 - /* turn the clock off and read-strobe */ 5046 - OCELOT_FPGA_WRITE((val << 2) | cs | 0x10, EEPROM_MODE); 5047 - 5048 - /* return the data */ 5049 - return ((OCELOT_FPGA_READ(EEPROM_MODE) >> 3) & 0x1); 5050 -} 5051 - 5052 -void get_mac(char dest[6]) 5053 -{ 5054 - u8 read_opcode[12] = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 5055 - int i,j; 5056 - 5057 - for (i = 0; i < 12; i++) 5058 - exchange_bit(read_opcode[i], 1); 5059 - 5060 - for (j = 0; j < 6; j++) { 5061 - dest[j] = 0; 5062 - for (i = 0; i < 8; i++) { 5063 - dest[j] <<= 1; 5064 - dest[j] |= exchange_bit(0, 1); 5065 - } 5066 - } 5067 - 5068 - /* turn off CS */ 5069 - exchange_bit(0,0); 5070 -} 5071 -#endif 5072 - 5073 - 5074 #ifdef CONFIG_64BIT 5075 5076 unsigned long signext(unsigned long addr) 5077 @@ -226,11 +173,6 @@ 5078 mips_machgroup = MACH_GROUP_MOMENCO; 5079 mips_machtype = MACH_MOMENCO_OCELOT_C; 5080 5081 -#ifdef CONFIG_MV643XX_ETH 5082 - /* get the base MAC address for on-board ethernet ports */ 5083 - get_mac(prom_mac_addr_base); 5084 -#endif 5085 - 5086 #ifndef CONFIG_64BIT 5087 debug_vectors->printf("Booting Linux kernel...\n"); 5088 #endif 5089 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_c/setup.c linux-mips-2.6.18.3/arch/mips/momentum/ocelot_c/setup.c 5090 --- linux-2.6.18.3/arch/mips/momentum/ocelot_c/setup.c 2006-11-18 19:28:22.000000000 -0800 5091 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_c/setup.c 2006-11-20 10:09:08.000000000 -0800 5092 @@ -70,8 +70,7 @@ 5093 #include "ocelot_c_fpga.h" 5094 5095 unsigned long marvell_base; 5096 -extern unsigned long mv64340_sram_base; 5097 -unsigned long cpu_clock; 5098 +unsigned int cpu_clock; 5099 5100 /* These functions are used for rebooting or halting the machine*/ 5101 extern void momenco_ocelot_restart(char *command); 5102 @@ -120,7 +119,6 @@ 5103 add_wired_entry(ENTRYLO(0xfe000000), ENTRYLO(0xff000000), 0xfffffffffe000000, PM_16M); 5104 5105 marvell_base = 0xfffffffff4000000; 5106 - mv64340_sram_base = 0xfffffffffe000000; 5107 #else 5108 /* marvell and extra space */ 5109 add_wired_entry(ENTRYLO(0xf4000000), ENTRYLO(0xf4010000), 0xf4000000, PM_64K); 5110 @@ -130,7 +128,6 @@ 5111 add_wired_entry(ENTRYLO(0xfe000000), ENTRYLO(0xff000000), 0xfe000000, PM_16M); 5112 5113 marvell_base = 0xf4000000; 5114 - mv64340_sram_base = 0xfe000000; 5115 #endif 5116 } 5117 5118 @@ -347,22 +344,20 @@ 5119 } 5120 } 5121 5122 -#ifndef CONFIG_64BIT 5123 -/* This needs to be one of the first initcalls, because no I/O port access 5124 - can work before this */ 5125 +/* 5126 + * This needs to be one of the first initcalls, because no I/O port access 5127 + * can work before this 5128 + */ 5129 static int io_base_ioremap(void) 5130 { 5131 - /* we're mapping PCI accesses from 0xc0000000 to 0xf0000000 */ 5132 - void *io_remap_range = ioremap(0xc0000000, 0x30000000); 5133 + void __iomem * io_remap_range = ioremap(0xc0000000UL, 0x10000); 5134 5135 - if (!io_remap_range) { 5136 + if (!io_remap_range) 5137 panic("Could not ioremap I/O port range"); 5138 - } 5139 - printk("io_remap_range set at 0x%08x\n", (uint32_t)io_remap_range); 5140 - set_io_port_base(io_remap_range - 0xc0000000); 5141 + 5142 + set_io_port_base((unsigned long) io_remap_range); 5143 5144 return 0; 5145 } 5146 5147 module_init(io_base_ioremap); 5148 -#endif 5149 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_g/gt-irq.c linux-mips-2.6.18.3/arch/mips/momentum/ocelot_g/gt-irq.c 5150 --- linux-2.6.18.3/arch/mips/momentum/ocelot_g/gt-irq.c 2006-11-18 19:28:22.000000000 -0800 5151 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_g/gt-irq.c 2006-11-20 10:09:08.000000000 -0800 5152 @@ -28,7 +28,7 @@ 5153 * be handled and ack'ed differently than other MIPS interrupts. 5154 */ 5155 5156 -#if CURRENTLY_UNUSED 5157 +#if 0 5158 5159 struct tq_struct irq_handlers[MAX_CAUSE_REGS][MAX_CAUSE_REG_WIDTH]; 5160 void hook_irq_handler(int int_cause, int bit_num, void *isr_ptr); 5161 @@ -96,7 +96,7 @@ 5162 return 0; 5163 return 1; 5164 } 5165 -#endif /* UNUSED */ 5166 +#endif /* 0 */ 5167 5168 /* 5169 * Interrupt handler for interrupts coming from the Galileo chip via P0_INT#. 5170 @@ -197,7 +197,7 @@ 5171 5172 void gt64240_irq_init(void) 5173 { 5174 -#if CURRENTLY_UNUSED 5175 +#if 0 5176 int i, j; 5177 5178 /* Reset irq handlers pointers to NULL */ 5179 @@ -209,5 +209,5 @@ 5180 irq_handlers[i][j].data = NULL; 5181 } 5182 } 5183 -#endif 5184 +#endif /* 0 */ 5185 } 5186 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_g/ocelot_pld.h linux-mips-2.6.18.3/arch/mips/momentum/ocelot_g/ocelot_pld.h 5187 --- linux-2.6.18.3/arch/mips/momentum/ocelot_g/ocelot_pld.h 2006-11-18 19:28:22.000000000 -0800 5188 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_g/ocelot_pld.h 2006-11-20 10:09:08.000000000 -0800 5189 @@ -23,8 +23,8 @@ 5190 #define OCELOT_REG_INTSET (12) 5191 #define OCELOT_REG_INTCLR (13) 5192 5193 -#define OCELOT_PLD_WRITE(x, y) writeb(x, OCELOT_CS0_ADDR + OCELOT_REG_##y) 5194 -#define OCELOT_PLD_READ(x) readb(OCELOT_CS0_ADDR + OCELOT_REG_##x) 5195 - 5196 +#define __PLD_REG_TO_ADDR(reg) ((void *) OCELOT_CS0_ADDR + OCELOT_REG_##reg) 5197 +#define OCELOT_PLD_WRITE(x, reg) writeb(x, __PLD_REG_TO_ADDR(reg)) 5198 +#define OCELOT_PLD_READ(reg) readb(__PLD_REG_TO_ADDR(reg)) 5199 5200 #endif /* __MOMENCO_OCELOT_PLD_H__ */ 5201 diff -Naur linux-2.6.18.3/arch/mips/momentum/ocelot_g/setup.c linux-mips-2.6.18.3/arch/mips/momentum/ocelot_g/setup.c 5202 --- linux-2.6.18.3/arch/mips/momentum/ocelot_g/setup.c 2006-11-18 19:28:22.000000000 -0800 5203 +++ linux-mips-2.6.18.3/arch/mips/momentum/ocelot_g/setup.c 2006-11-20 10:09:08.000000000 -0800 5204 @@ -57,6 +57,7 @@ 5205 #include <asm/gt64240.h> 5206 #include <asm/irq.h> 5207 #include <asm/pci.h> 5208 +#include <asm/pgtable.h> 5209 #include <asm/processor.h> 5210 #include <asm/ptrace.h> 5211 #include <asm/reboot.h> 5212 @@ -161,6 +162,10 @@ 5213 printk("Done\n"); 5214 } 5215 5216 +void __init plat_timer_setup(struct irqaction *irq) 5217 +{ 5218 +} 5219 + 5220 void __init plat_mem_setup(void) 5221 { 5222 void (*l3func)(unsigned long) = (void *) KSEG1ADDR(setup_l3cache); 5223 diff -Naur linux-2.6.18.3/arch/mips/oprofile/op_model_mipsxx.c linux-mips-2.6.18.3/arch/mips/oprofile/op_model_mipsxx.c 5224 --- linux-2.6.18.3/arch/mips/oprofile/op_model_mipsxx.c 2006-11-18 19:28:22.000000000 -0800 5225 +++ linux-mips-2.6.18.3/arch/mips/oprofile/op_model_mipsxx.c 2006-11-20 10:09:08.000000000 -0800 3079 5226 @@ -30,16 +30,18 @@ 3080 5227 #define M_COUNTER_OVERFLOW (1UL << 31) … … 3117 5264 return counters >> 1; 3118 5265 #endif 3119 diff -Naur linux-2.6.18. 2/arch/mips/pci/Makefile linux-mips-2.6.18.2/arch/mips/pci/Makefile3120 --- linux-2.6.18. 2/arch/mips/pci/Makefile 2006-11-03 17:33:58.000000000 -08003121 +++ linux-mips-2.6.18. 2/arch/mips/pci/Makefile 2006-11-04 14:51:12.000000000 -08005266 diff -Naur linux-2.6.18.3/arch/mips/pci/Makefile linux-mips-2.6.18.3/arch/mips/pci/Makefile 5267 --- linux-2.6.18.3/arch/mips/pci/Makefile 2006-11-18 19:28:22.000000000 -0800 5268 +++ linux-mips-2.6.18.3/arch/mips/pci/Makefile 2006-11-20 10:09:08.000000000 -0800 3122 5269 @@ -28,7 +28,7 @@ 3123 5270 obj-$(CONFIG_LASAT) += pci-lasat.o … … 3125 5272 obj-$(CONFIG_MIPS_COBALT) += fixup-cobalt.o 3126 5273 -obj-$(CONFIG_MIPS_EV96100) += fixup-ev64120.o 3127 +obj-$(CONFIG_MIPS_EV64120) += fixup-ev64120.o5274 +obj-$(CONFIG_MIPS_EV64120) += pci-ev64120.o 3128 5275 obj-$(CONFIG_MIPS_EV96100) += fixup-ev96100.o pci-ev96100.o 3129 5276 obj-$(CONFIG_MIPS_ITE8172) += fixup-ite8172g.o 3130 5277 obj-$(CONFIG_MIPS_IVR) += fixup-ivr.o 3131 diff -Naur linux-2.6.18. 2/arch/mips/pci/fixup-atlas.c linux-mips-2.6.18.2/arch/mips/pci/fixup-atlas.c3132 --- linux-2.6.18. 2/arch/mips/pci/fixup-atlas.c 2006-11-03 17:33:58.000000000 -08003133 +++ linux-mips-2.6.18. 2/arch/mips/pci/fixup-atlas.c 2006-11-04 14:51:12.000000000 -08005278 diff -Naur linux-2.6.18.3/arch/mips/pci/fixup-atlas.c linux-mips-2.6.18.3/arch/mips/pci/fixup-atlas.c 5279 --- linux-2.6.18.3/arch/mips/pci/fixup-atlas.c 2006-11-18 19:28:22.000000000 -0800 5280 +++ linux-mips-2.6.18.3/arch/mips/pci/fixup-atlas.c 2006-11-20 10:09:08.000000000 -0800 3134 5281 @@ -21,16 +21,16 @@ 3135 5282 … … 3159 5306 static char irq_tab[][5] __initdata = { 3160 5307 /* INTA INTB INTC INTD */ 3161 diff -Naur linux-2.6.18.2/arch/mips/pci/fixup-tb0219.c linux-mips-2.6.18.2/arch/mips/pci/fixup-tb0219.c 3162 --- linux-2.6.18.2/arch/mips/pci/fixup-tb0219.c 2006-11-03 17:33:58.000000000 -0800 3163 +++ linux-mips-2.6.18.2/arch/mips/pci/fixup-tb0219.c 2006-11-04 14:51:12.000000000 -0800 5308 diff -Naur linux-2.6.18.3/arch/mips/pci/fixup-ev64120.c linux-mips-2.6.18.3/arch/mips/pci/fixup-ev64120.c 5309 --- linux-2.6.18.3/arch/mips/pci/fixup-ev64120.c 2006-11-18 19:28:22.000000000 -0800 5310 +++ linux-mips-2.6.18.3/arch/mips/pci/fixup-ev64120.c 1969-12-31 16:00:00.000000000 -0800 5311 @@ -1,34 +0,0 @@ 5312 -#include <linux/pci.h> 5313 -#include <linux/init.h> 5314 - 5315 -int pci_range_ck(unsigned char bus, unsigned char dev) 5316 -{ 5317 - if (((bus == 0) || (bus == 1)) && (dev >= 6) && (dev <= 8)) 5318 - return 0; 5319 - 5320 - return -1; 5321 -} 5322 - 5323 -/* 5324 - * After detecting all agents over the PCI , this function is called 5325 - * in order to give an interrupt number for each PCI device starting 5326 - * from IRQ 20. It does also enables master for each device. 5327 - */ 5328 -void __devinit pcibios_fixup_bus(struct pci_bus *bus) 5329 -{ 5330 - unsigned int irq = 20; 5331 - struct pci_bus *current_bus = bus; 5332 - struct pci_dev *dev; 5333 - struct list_head *devices_link; 5334 - 5335 - list_for_each(devices_link, &(current_bus->devices)) { 5336 - dev = pci_dev_b(devices_link); 5337 - if (dev != NULL) { 5338 - dev->irq = irq++; 5339 - 5340 - /* Assign an interrupt number for the device */ 5341 - pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq); 5342 - pcibios_set_master(dev); 5343 - } 5344 - } 5345 -} 5346 diff -Naur linux-2.6.18.3/arch/mips/pci/fixup-tb0219.c linux-mips-2.6.18.3/arch/mips/pci/fixup-tb0219.c 5347 --- linux-2.6.18.3/arch/mips/pci/fixup-tb0219.c 2006-11-18 19:28:22.000000000 -0800 5348 +++ linux-mips-2.6.18.3/arch/mips/pci/fixup-tb0219.c 2006-11-20 10:09:08.000000000 -0800 3164 5349 @@ -2,7 +2,7 @@ 3165 5350 * fixup-tb0219.c, The TANBAC TB0219 specific PCI fixups. … … 3171 5356 * This program is free software; you can redistribute it and/or modify 3172 5357 * it under the terms of the GNU General Public License as published by 3173 diff -Naur linux-2.6.18. 2/arch/mips/pci/ops-au1000.c linux-mips-2.6.18.2/arch/mips/pci/ops-au1000.c3174 --- linux-2.6.18. 2/arch/mips/pci/ops-au1000.c 2006-11-03 17:33:58.000000000 -08003175 +++ linux-mips-2.6.18. 2/arch/mips/pci/ops-au1000.c 2006-11-04 14:51:12.000000000 -08005358 diff -Naur linux-2.6.18.3/arch/mips/pci/ops-au1000.c linux-mips-2.6.18.3/arch/mips/pci/ops-au1000.c 5359 --- linux-2.6.18.3/arch/mips/pci/ops-au1000.c 2006-11-18 19:28:22.000000000 -0800 5360 +++ linux-mips-2.6.18.3/arch/mips/pci/ops-au1000.c 2006-11-20 10:09:08.000000000 -0800 3176 5361 @@ -110,7 +110,7 @@ 3177 5362 if (first_cfg) { … … 3183 5368 panic (KERN_ERR "PCI unable to get vm area\n"); 3184 5369 pci_cfg_wired_entry = read_c0_wired(); 3185 diff -Naur linux-2.6.18.2/arch/mips/qemu/Makefile linux-mips-2.6.18.2/arch/mips/qemu/Makefile 3186 --- linux-2.6.18.2/arch/mips/qemu/Makefile 2006-11-03 17:33:58.000000000 -0800 3187 +++ linux-mips-2.6.18.2/arch/mips/qemu/Makefile 2006-11-04 14:51:12.000000000 -0800 5370 diff -Naur linux-2.6.18.3/arch/mips/pci/pci-ev64120.c linux-mips-2.6.18.3/arch/mips/pci/pci-ev64120.c 5371 --- linux-2.6.18.3/arch/mips/pci/pci-ev64120.c 1969-12-31 16:00:00.000000000 -0800 5372 +++ linux-mips-2.6.18.3/arch/mips/pci/pci-ev64120.c 2006-11-20 10:09:08.000000000 -0800 5373 @@ -0,0 +1,21 @@ 5374 +#include <linux/pci.h> 5375 + 5376 +int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 5377 +{ 5378 + int irq; 5379 + 5380 + if (!pin) 5381 + return 0; 5382 + 5383 + irq = allocate_irqno(); 5384 + if (irq < 0) 5385 + return 0; 5386 + 5387 + return irq; 5388 +} 5389 + 5390 +/* Do platform specific device initialization at pci_enable_device() time */ 5391 +int pcibios_plat_dev_init(struct pci_dev *dev) 5392 +{ 5393 + return 0; 5394 +} 5395 diff -Naur linux-2.6.18.3/arch/mips/qemu/Makefile linux-mips-2.6.18.3/arch/mips/qemu/Makefile 5396 --- linux-2.6.18.3/arch/mips/qemu/Makefile 2006-11-18 19:28:22.000000000 -0800 5397 +++ linux-mips-2.6.18.3/arch/mips/qemu/Makefile 2006-11-20 10:09:08.000000000 -0800 3188 5398 @@ -4,4 +4,5 @@ 3189 5399 … … 3192 5402 +obj-$(CONFIG_VT) += q-vga.o 3193 5403 obj-$(CONFIG_SMP) += q-smp.o 3194 diff -Naur linux-2.6.18. 2/arch/mips/qemu/q-setup.c linux-mips-2.6.18.2/arch/mips/qemu/q-setup.c3195 --- linux-2.6.18. 2/arch/mips/qemu/q-setup.c 2006-11-03 17:33:58.000000000 -08003196 +++ linux-mips-2.6.18. 2/arch/mips/qemu/q-setup.c 2006-11-04 14:51:12.000000000 -08005404 diff -Naur linux-2.6.18.3/arch/mips/qemu/q-setup.c linux-mips-2.6.18.3/arch/mips/qemu/q-setup.c 5405 --- linux-2.6.18.3/arch/mips/qemu/q-setup.c 2006-11-18 19:28:22.000000000 -0800 5406 +++ linux-mips-2.6.18.3/arch/mips/qemu/q-setup.c 2006-11-20 10:09:08.000000000 -0800 3197 5407 @@ -2,6 +2,7 @@ 3198 5408 #include <asm/io.h> … … 3213 5423 qemu_reboot_setup(); 3214 5424 } 3215 diff -Naur linux-2.6.18. 2/arch/mips/qemu/q-vga.c linux-mips-2.6.18.2/arch/mips/qemu/q-vga.c3216 --- linux-2.6.18. 2/arch/mips/qemu/q-vga.c 1969-12-31 16:00:00.000000000 -08003217 +++ linux-mips-2.6.18. 2/arch/mips/qemu/q-vga.c 2006-11-04 14:51:12.000000000 -08005425 diff -Naur linux-2.6.18.3/arch/mips/qemu/q-vga.c linux-mips-2.6.18.3/arch/mips/qemu/q-vga.c 5426 --- linux-2.6.18.3/arch/mips/qemu/q-vga.c 1969-12-31 16:00:00.000000000 -0800 5427 +++ linux-mips-2.6.18.3/arch/mips/qemu/q-vga.c 2006-11-20 10:09:08.000000000 -0800 3218 5428 @@ -0,0 +1,189 @@ 3219 5429 +/* … … 3406 5616 +#endif 3407 5617 +} 3408 diff -Naur linux-2.6.18.2/arch/mips/sibyte/bcm1480/irq.c linux-mips-2.6.18.2/arch/mips/sibyte/bcm1480/irq.c 3409 --- linux-2.6.18.2/arch/mips/sibyte/bcm1480/irq.c 2006-11-03 17:33:58.000000000 -0800 3410 +++ linux-mips-2.6.18.2/arch/mips/sibyte/bcm1480/irq.c 2006-11-04 14:51:12.000000000 -0800 5618 diff -Naur linux-2.6.18.3/arch/mips/sgi-ip27/ip27-irq.c linux-mips-2.6.18.3/arch/mips/sgi-ip27/ip27-irq.c 5619 --- linux-2.6.18.3/arch/mips/sgi-ip27/ip27-irq.c 2006-11-18 19:28:22.000000000 -0800 5620 +++ linux-mips-2.6.18.3/arch/mips/sgi-ip27/ip27-irq.c 2006-11-20 10:09:08.000000000 -0800 5621 @@ -355,29 +355,6 @@ 5622 .end = end_bridge_irq, 5623 }; 5624 5625 -static unsigned long irq_map[NR_IRQS / BITS_PER_LONG]; 5626 - 5627 -int allocate_irqno(void) 5628 -{ 5629 - int irq; 5630 - 5631 -again: 5632 - irq = find_first_zero_bit(irq_map, NR_IRQS); 5633 - 5634 - if (irq >= NR_IRQS) 5635 - return -ENOSPC; 5636 - 5637 - if (test_and_set_bit(irq, irq_map)) 5638 - goto again; 5639 - 5640 - return irq; 5641 -} 5642 - 5643 -void free_irqno(unsigned int irq) 5644 -{ 5645 - clear_bit(irq, irq_map); 5646 -} 5647 - 5648 void __devinit register_bridge_irq(unsigned int irq) 5649 { 5650 irq_desc[irq].status = IRQ_DISABLED; 5651 diff -Naur linux-2.6.18.3/arch/mips/sgi-ip27/ip27-timer.c linux-mips-2.6.18.3/arch/mips/sgi-ip27/ip27-timer.c 5652 --- linux-2.6.18.3/arch/mips/sgi-ip27/ip27-timer.c 2006-11-18 19:28:22.000000000 -0800 5653 +++ linux-mips-2.6.18.3/arch/mips/sgi-ip27/ip27-timer.c 2006-11-20 10:09:08.000000000 -0800 5654 @@ -223,8 +223,6 @@ 5655 .name = "timer" 5656 }; 5657 5658 -extern int allocate_irqno(void); 5659 - 5660 void __init plat_timer_setup(struct irqaction *irq) 5661 { 5662 int irqno = allocate_irqno(); 5663 diff -Naur linux-2.6.18.3/arch/mips/sibyte/bcm1480/irq.c linux-mips-2.6.18.3/arch/mips/sibyte/bcm1480/irq.c 5664 --- linux-2.6.18.3/arch/mips/sibyte/bcm1480/irq.c 2006-11-18 19:28:22.000000000 -0800 5665 +++ linux-mips-2.6.18.3/arch/mips/sibyte/bcm1480/irq.c 2006-11-20 10:09:08.000000000 -0800 3411 5666 @@ -469,21 +469,6 @@ 3412 5667 … … 3452 5707 } 3453 5708 } 3454 diff -Naur linux-2.6.18. 2/arch/mips/sibyte/bcm1480/smp.c linux-mips-2.6.18.2/arch/mips/sibyte/bcm1480/smp.c3455 --- linux-2.6.18. 2/arch/mips/sibyte/bcm1480/smp.c 2006-11-03 17:33:58.000000000 -08003456 +++ linux-mips-2.6.18. 2/arch/mips/sibyte/bcm1480/smp.c 2006-11-04 14:51:12.000000000 -08005709 diff -Naur linux-2.6.18.3/arch/mips/sibyte/bcm1480/smp.c linux-mips-2.6.18.3/arch/mips/sibyte/bcm1480/smp.c 5710 --- linux-2.6.18.3/arch/mips/sibyte/bcm1480/smp.c 2006-11-18 19:28:22.000000000 -0800 5711 +++ linux-mips-2.6.18.3/arch/mips/sibyte/bcm1480/smp.c 2006-11-20 10:09:08.000000000 -0800 3457 5712 @@ -34,21 +34,21 @@ 3458 5713 * independent of board/firmware … … 3480 5735 IOADDR(A_BCM1480_IMR_CPU1_BASE + R_BCM1480_IMR_MAILBOX_0_CPU), 3481 5736 IOADDR(A_BCM1480_IMR_CPU2_BASE + R_BCM1480_IMR_MAILBOX_0_CPU), 3482 diff -Naur linux-2.6.18. 2/arch/mips/sibyte/sb1250/irq.c linux-mips-2.6.18.2/arch/mips/sibyte/sb1250/irq.c3483 --- linux-2.6.18. 2/arch/mips/sibyte/sb1250/irq.c 2006-11-03 17:33:58.000000000 -08003484 +++ linux-mips-2.6.18. 2/arch/mips/sibyte/sb1250/irq.c 2006-11-04 14:51:12.000000000 -08005737 diff -Naur linux-2.6.18.3/arch/mips/sibyte/sb1250/irq.c linux-mips-2.6.18.3/arch/mips/sibyte/sb1250/irq.c 5738 --- linux-2.6.18.3/arch/mips/sibyte/sb1250/irq.c 2006-11-18 19:28:22.000000000 -0800 5739 +++ linux-mips-2.6.18.3/arch/mips/sibyte/sb1250/irq.c 2006-11-20 10:09:08.000000000 -0800 3485 5740 @@ -419,21 +419,6 @@ 3486 5741 … … 3526 5781 + spurious_interrupt(regs); 3527 5782 } 3528 diff -Naur linux-2.6.18. 2/arch/mips/tx4927/common/tx4927_setup.c linux-mips-2.6.18.2/arch/mips/tx4927/common/tx4927_setup.c3529 --- linux-2.6.18. 2/arch/mips/tx4927/common/tx4927_setup.c 2006-11-03 17:33:58.000000000 -08003530 +++ linux-mips-2.6.18. 2/arch/mips/tx4927/common/tx4927_setup.c 2006-11-04 14:51:12.000000000 -08005783 diff -Naur linux-2.6.18.3/arch/mips/tx4927/common/tx4927_setup.c linux-mips-2.6.18.3/arch/mips/tx4927/common/tx4927_setup.c 5784 --- linux-2.6.18.3/arch/mips/tx4927/common/tx4927_setup.c 2006-11-18 19:28:22.000000000 -0800 5785 +++ linux-mips-2.6.18.3/arch/mips/tx4927/common/tx4927_setup.c 2006-11-20 10:09:08.000000000 -0800 3531 5786 @@ -53,19 +53,9 @@ 3532 5787 void dump_cp0(char *key); … … 3549 5804 #ifdef CONFIG_TOSHIBA_RBTX4927 3550 5805 { 3551 diff -Naur linux-2.6.18. 2/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c linux-mips-2.6.18.2/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c3552 --- linux-2.6.18. 2/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c 2006-11-03 17:33:58.000000000 -08003553 +++ linux-mips-2.6.18. 2/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c 2006-11-04 14:51:12.000000000 -08005806 diff -Naur linux-2.6.18.3/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c linux-mips-2.6.18.3/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c 5807 --- linux-2.6.18.3/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c 2006-11-18 19:28:22.000000000 -0800 5808 +++ linux-mips-2.6.18.3/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c 2006-11-20 10:09:08.000000000 -0800 3554 5809 @@ -130,6 +130,7 @@ 3555 5810 #include <asm/ptrace.h> … … 3560 5815 #include <linux/blkdev.h> 3561 5816 #ifdef CONFIG_RTC_DS1742 3562 diff -Naur linux-2.6.18. 2/arch/mips/tx4938/common/irq.c linux-mips-2.6.18.2/arch/mips/tx4938/common/irq.c3563 --- linux-2.6.18. 2/arch/mips/tx4938/common/irq.c 2006-11-03 17:33:58.000000000 -08003564 +++ linux-mips-2.6.18. 2/arch/mips/tx4938/common/irq.c 2006-11-04 14:51:12.000000000 -08005817 diff -Naur linux-2.6.18.3/arch/mips/tx4938/common/irq.c linux-mips-2.6.18.3/arch/mips/tx4938/common/irq.c 5818 --- linux-2.6.18.3/arch/mips/tx4938/common/irq.c 2006-11-18 19:28:22.000000000 -0800 5819 +++ linux-mips-2.6.18.3/arch/mips/tx4938/common/irq.c 2006-11-20 10:09:08.000000000 -0800 3565 5820 @@ -30,6 +30,7 @@ 3566 5821 #include <asm/irq.h> … … 3571 5826 3572 5827 /**********************************************************************************/ 3573 diff -Naur linux-2.6.18. 2/arch/mips/tx4938/common/setup.c linux-mips-2.6.18.2/arch/mips/tx4938/common/setup.c3574 --- linux-2.6.18. 2/arch/mips/tx4938/common/setup.c 2006-11-03 17:33:58.000000000 -08003575 +++ linux-mips-2.6.18. 2/arch/mips/tx4938/common/setup.c 2006-11-04 14:51:12.000000000 -08005828 diff -Naur linux-2.6.18.3/arch/mips/tx4938/common/setup.c linux-mips-2.6.18.3/arch/mips/tx4938/common/setup.c 5829 --- linux-2.6.18.3/arch/mips/tx4938/common/setup.c 2006-11-18 19:28:22.000000000 -0800 5830 +++ linux-mips-2.6.18.3/arch/mips/tx4938/common/setup.c 2006-11-20 10:09:08.000000000 -0800 3576 5831 @@ -41,29 +41,10 @@ 3577 5832 void __init tx4938_time_init(void); … … 3604 5859 } 3605 5860 3606 diff -Naur linux-2.6.18. 2/arch/mips/tx4938/toshiba_rbtx4938/irq.c linux-mips-2.6.18.2/arch/mips/tx4938/toshiba_rbtx4938/irq.c3607 --- linux-2.6.18. 2/arch/mips/tx4938/toshiba_rbtx4938/irq.c 2006-11-03 17:33:58.000000000 -08003608 +++ linux-mips-2.6.18. 2/arch/mips/tx4938/toshiba_rbtx4938/irq.c 2006-11-04 14:51:12.000000000 -08005861 diff -Naur linux-2.6.18.3/arch/mips/tx4938/toshiba_rbtx4938/irq.c linux-mips-2.6.18.3/arch/mips/tx4938/toshiba_rbtx4938/irq.c 5862 --- linux-2.6.18.3/arch/mips/tx4938/toshiba_rbtx4938/irq.c 2006-11-18 19:28:22.000000000 -0800 5863 +++ linux-mips-2.6.18.3/arch/mips/tx4938/toshiba_rbtx4938/irq.c 2006-11-20 10:09:08.000000000 -0800 3609 5864 @@ -84,6 +84,7 @@ 3610 5865 #include <asm/ptrace.h> … … 3615 5870 #include <asm/tx4938/rbtx4938.h> 3616 5871 3617 diff -Naur linux-2.6.18. 2/drivers/char/Kconfig linux-mips-2.6.18.2/drivers/char/Kconfig3618 --- linux-2.6.18. 2/drivers/char/Kconfig 2006-11-03 17:33:58.000000000 -08003619 +++ linux-mips-2.6.18. 2/drivers/char/Kconfig 2006-11-04 14:51:12.000000000 -08005872 diff -Naur linux-2.6.18.3/drivers/char/Kconfig linux-mips-2.6.18.3/drivers/char/Kconfig 5873 --- linux-2.6.18.3/drivers/char/Kconfig 2006-11-18 19:28:22.000000000 -0800 5874 +++ linux-mips-2.6.18.3/drivers/char/Kconfig 2006-11-20 10:09:08.000000000 -0800 3620 5875 @@ -357,23 +357,68 @@ 3621 5876 To compile this driver as a module, choose M here: the … … 3728 5983 tristate "Commodore A2232 serial support (EXPERIMENTAL)" 3729 5984 depends on EXPERIMENTAL && ZORRO && BROKEN_ON_SMP 3730 diff -Naur linux-2.6.18. 2/drivers/char/Makefile linux-mips-2.6.18.2/drivers/char/Makefile3731 --- linux-2.6.18. 2/drivers/char/Makefile 2006-11-03 17:33:58.000000000 -08003732 +++ linux-mips-2.6.18. 2/drivers/char/Makefile 2006-11-04 14:51:12.000000000 -08005985 diff -Naur linux-2.6.18.3/drivers/char/Makefile linux-mips-2.6.18.3/drivers/char/Makefile 5986 --- linux-2.6.18.3/drivers/char/Makefile 2006-11-18 19:28:22.000000000 -0800 5987 +++ linux-mips-2.6.18.3/drivers/char/Makefile 2006-11-20 10:09:08.000000000 -0800 3733 5988 @@ -31,6 +31,7 @@ 3734 5989 obj-$(CONFIG_A2232) += ser_a2232.o generic_serial.o … … 3758 6013 obj-$(CONFIG_NWBUTTON) += nwbutton.o 3759 6014 obj-$(CONFIG_NWFLASH) += nwflash.o 3760 diff -Naur linux-2.6.18. 2/drivers/char/au1000_gpio.c linux-mips-2.6.18.2/drivers/char/au1000_gpio.c3761 --- linux-2.6.18. 2/drivers/char/au1000_gpio.c 1969-12-31 16:00:00.000000000 -08003762 +++ linux-mips-2.6.18. 2/drivers/char/au1000_gpio.c 2006-11-04 14:51:12.000000000 -08006015 diff -Naur linux-2.6.18.3/drivers/char/au1000_gpio.c linux-mips-2.6.18.3/drivers/char/au1000_gpio.c 6016 --- linux-2.6.18.3/drivers/char/au1000_gpio.c 1969-12-31 16:00:00.000000000 -0800 6017 +++ linux-mips-2.6.18.3/drivers/char/au1000_gpio.c 2006-11-20 10:09:08.000000000 -0800 3763 6018 @@ -0,0 +1,266 @@ 3764 6019 +/* … … 4028 6283 +module_init(au1000gpio_init); 4029 6284 +module_exit(au1000gpio_exit); 4030 diff -Naur linux-2.6.18. 2/drivers/char/au1000_ts.c linux-mips-2.6.18.2/drivers/char/au1000_ts.c4031 --- linux-2.6.18. 2/drivers/char/au1000_ts.c 1969-12-31 16:00:00.000000000 -08004032 +++ linux-mips-2.6.18. 2/drivers/char/au1000_ts.c 2006-11-04 14:51:12.000000000 -08006285 diff -Naur linux-2.6.18.3/drivers/char/au1000_ts.c linux-mips-2.6.18.3/drivers/char/au1000_ts.c 6286 --- linux-2.6.18.3/drivers/char/au1000_ts.c 1969-12-31 16:00:00.000000000 -0800 6287 +++ linux-mips-2.6.18.3/drivers/char/au1000_ts.c 2006-11-20 10:09:08.000000000 -0800 4033 6288 @@ -0,0 +1,677 @@ 4034 6289 +/* … … 4709 6964 +module_init(au1000ts_init_module); 4710 6965 +module_exit(au1000ts_cleanup_module); 4711 diff -Naur linux-2.6.18. 2/drivers/char/au1000_usbraw.c linux-mips-2.6.18.2/drivers/char/au1000_usbraw.c4712 --- linux-2.6.18. 2/drivers/char/au1000_usbraw.c 1969-12-31 16:00:00.000000000 -08004713 +++ linux-mips-2.6.18. 2/drivers/char/au1000_usbraw.c 2006-11-04 14:51:12.000000000 -08006966 diff -Naur linux-2.6.18.3/drivers/char/au1000_usbraw.c linux-mips-2.6.18.3/drivers/char/au1000_usbraw.c 6967 --- linux-2.6.18.3/drivers/char/au1000_usbraw.c 1969-12-31 16:00:00.000000000 -0800 6968 +++ linux-mips-2.6.18.3/drivers/char/au1000_usbraw.c 2006-11-20 10:09:08.000000000 -0800 4714 6969 @@ -0,0 +1,573 @@ 4715 6970 +/* … … 5286 7541 +module_init(usbfn_raw_init); 5287 7542 +module_exit(usbfn_raw_exit); 5288 diff -Naur linux-2.6.18. 2/drivers/char/au1000_usbtty.c linux-mips-2.6.18.2/drivers/char/au1000_usbtty.c5289 --- linux-2.6.18. 2/drivers/char/au1000_usbtty.c 1969-12-31 16:00:00.000000000 -08005290 +++ linux-mips-2.6.18. 2/drivers/char/au1000_usbtty.c 2006-11-04 14:51:12.000000000 -08007543 diff -Naur linux-2.6.18.3/drivers/char/au1000_usbtty.c linux-mips-2.6.18.3/drivers/char/au1000_usbtty.c 7544 --- linux-2.6.18.3/drivers/char/au1000_usbtty.c 1969-12-31 16:00:00.000000000 -0800 7545 +++ linux-mips-2.6.18.3/drivers/char/au1000_usbtty.c 2006-11-20 10:09:08.000000000 -0800 5291 7546 @@ -0,0 +1,761 @@ 5292 7547 +/* … … 6051 8306 +module_init(usbfn_tty_init); 6052 8307 +module_exit(usbfn_tty_exit); 6053 diff -Naur linux-2.6.18. 2/drivers/char/decserial.c linux-mips-2.6.18.2/drivers/char/decserial.c6054 --- linux-2.6.18. 2/drivers/char/decserial.c 2006-11-03 17:33:58.000000000 -08006055 +++ linux-mips-2.6.18. 2/drivers/char/decserial.c 2006-11-04 14:51:12.000000000 -08008308 diff -Naur linux-2.6.18.3/drivers/char/decserial.c linux-mips-2.6.18.3/drivers/char/decserial.c 8309 --- linux-2.6.18.3/drivers/char/decserial.c 2006-11-18 19:28:22.000000000 -0800 8310 +++ linux-mips-2.6.18.3/drivers/char/decserial.c 2006-11-20 10:09:08.000000000 -0800 6056 8311 @@ -14,86 +14,84 @@ 6057 8312 * device. Added support for PROM console in drivers/char/tty_io.c … … 6187 8442 6188 8443 #endif 6189 diff -Naur linux-2.6.18. 2/drivers/char/qtronix.c linux-mips-2.6.18.2/drivers/char/qtronix.c6190 --- linux-2.6.18. 2/drivers/char/qtronix.c 2006-11-03 17:33:58.000000000 -08006191 +++ linux-mips-2.6.18. 2/drivers/char/qtronix.c 2006-11-04 14:51:12.000000000 -08008444 diff -Naur linux-2.6.18.3/drivers/char/qtronix.c linux-mips-2.6.18.3/drivers/char/qtronix.c 8445 --- linux-2.6.18.3/drivers/char/qtronix.c 2006-11-18 19:28:22.000000000 -0800 8446 +++ linux-mips-2.6.18.3/drivers/char/qtronix.c 2006-11-20 10:09:08.000000000 -0800 6192 8447 @@ -534,8 +534,7 @@ 6193 8448 i--; … … 6200 8455 } 6201 8456 if (signal_pending(current)) 6202 diff -Naur linux-2.6.18. 2/drivers/char/rtc.c linux-mips-2.6.18.2/drivers/char/rtc.c6203 --- linux-2.6.18. 2/drivers/char/rtc.c 2006-11-03 17:33:58.000000000 -08006204 +++ linux-mips-2.6.18. 2/drivers/char/rtc.c 2006-11-04 14:51:12.000000000 -08008457 diff -Naur linux-2.6.18.3/drivers/char/rtc.c linux-mips-2.6.18.3/drivers/char/rtc.c 8458 --- linux-2.6.18.3/drivers/char/rtc.c 2006-11-18 19:28:22.000000000 -0800 8459 +++ linux-mips-2.6.18.3/drivers/char/rtc.c 2006-11-20 10:09:08.000000000 -0800 6205 8460 @@ -35,16 +35,16 @@ 6206 8461 * 1.09a Pete Zaitcev: Sun SPARC … … 6223 8478 * 1.12a Maciej W. Rozycki: Handle memory-mapped chips properly. 6224 8479 * 1.12ac Alan Cox: Allow read access to the day of week register 6225 diff -Naur linux-2.6.18. 2/drivers/char/sb1250_duart.c linux-mips-2.6.18.2/drivers/char/sb1250_duart.c6226 --- linux-2.6.18. 2/drivers/char/sb1250_duart.c 1969-12-31 16:00:00.000000000 -08006227 +++ linux-mips-2.6.18. 2/drivers/char/sb1250_duart.c 2006-11-04 14:51:12.000000000 -08008480 diff -Naur linux-2.6.18.3/drivers/char/sb1250_duart.c linux-mips-2.6.18.3/drivers/char/sb1250_duart.c 8481 --- linux-2.6.18.3/drivers/char/sb1250_duart.c 1969-12-31 16:00:00.000000000 -0800 8482 +++ linux-mips-2.6.18.3/drivers/char/sb1250_duart.c 2006-11-20 10:09:08.000000000 -0800 6228 8483 @@ -0,0 +1,910 @@ 6229 8484 +/* … … 7137 9392 + 7138 9393 +#endif /* CONFIG_SIBYTE_SB1250_DUART_CONSOLE */ 7139 diff -Naur linux-2.6.18. 2/drivers/ide/mips/Makefile linux-mips-2.6.18.2/drivers/ide/mips/Makefile7140 --- linux-2.6.18. 2/drivers/ide/mips/Makefile 2006-11-03 17:33:58.000000000 -08007141 +++ linux-mips-2.6.18. 2/drivers/ide/mips/Makefile 2006-11-04 14:51:12.000000000 -08009394 diff -Naur linux-2.6.18.3/drivers/ide/mips/Makefile linux-mips-2.6.18.3/drivers/ide/mips/Makefile 9395 --- linux-2.6.18.3/drivers/ide/mips/Makefile 2006-11-18 19:28:22.000000000 -0800 9396 +++ linux-mips-2.6.18.3/drivers/ide/mips/Makefile 2006-11-20 10:09:08.000000000 -0800 7142 9397 @@ -1,4 +1,4 @@ 7143 9398 obj-$(CONFIG_BLK_DEV_IDE_SWARM) += swarm.o … … 7146 9401 -EXTRA_CFLAGS := -Idrivers/ide 7147 9402 +CFLAGS_au1xxx-ide.o := -Idrivers/ide 7148 diff -Naur linux-2.6.18.2/drivers/mtd/devices/docprobe.c linux-mips-2.6.18.2/drivers/mtd/devices/docprobe.c 7149 --- linux-2.6.18.2/drivers/mtd/devices/docprobe.c 2006-11-03 17:33:58.000000000 -0800 7150 +++ linux-mips-2.6.18.2/drivers/mtd/devices/docprobe.c 2006-11-04 14:51:12.000000000 -0800 9403 diff -Naur linux-2.6.18.3/drivers/ide/mips/swarm.c linux-mips-2.6.18.3/drivers/ide/mips/swarm.c 9404 --- linux-2.6.18.3/drivers/ide/mips/swarm.c 2006-11-18 19:28:22.000000000 -0800 9405 +++ linux-mips-2.6.18.3/drivers/ide/mips/swarm.c 2006-11-20 10:09:08.000000000 -0800 9406 @@ -4,6 +4,7 @@ 9407 * Author: Manish Lachwani, mlachwani@mvista.com 9408 * Copyright (C) 2004 MIPS Technologies, Inc. All rights reserved. 9409 * Author: Maciej W. Rozycki <macro@mips.com> 9410 + * Copyright (c) 2006 Maciej W. Rozycki 9411 * 9412 * This program is free software; you can redistribute it and/or 9413 * modify it under the terms of the GNU General Public License 9414 @@ -127,6 +128,7 @@ 9415 memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports)); 9416 hwif->irq = hwif->hw.irq; 9417 9418 + probe_hwif_init(hwif); 9419 dev_set_drvdata(dev, hwif); 9420 9421 return 0; 9422 diff -Naur linux-2.6.18.3/drivers/mtd/devices/docprobe.c linux-mips-2.6.18.3/drivers/mtd/devices/docprobe.c 9423 --- linux-2.6.18.3/drivers/mtd/devices/docprobe.c 2006-11-18 19:28:22.000000000 -0800 9424 +++ linux-mips-2.6.18.3/drivers/mtd/devices/docprobe.c 2006-11-20 10:09:08.000000000 -0800 7151 9425 @@ -83,10 +83,10 @@ 7152 9426 0xe4000000, … … 7163 9437 #endif 7164 9438 0xffffffff }; 7165 diff -Naur linux-2.6.18. 2/drivers/mtd/maps/Kconfig linux-mips-2.6.18.2/drivers/mtd/maps/Kconfig7166 --- linux-2.6.18. 2/drivers/mtd/maps/Kconfig 2006-11-03 17:33:58.000000000 -08007167 +++ linux-mips-2.6.18. 2/drivers/mtd/maps/Kconfig 2006-11-04 14:51:12.000000000 -08009439 diff -Naur linux-2.6.18.3/drivers/mtd/maps/Kconfig linux-mips-2.6.18.3/drivers/mtd/maps/Kconfig 9440 --- linux-2.6.18.3/drivers/mtd/maps/Kconfig 2006-11-18 19:28:22.000000000 -0800 9441 +++ linux-mips-2.6.18.3/drivers/mtd/maps/Kconfig 2006-11-20 10:09:08.000000000 -0800 7168 9442 @@ -299,6 +299,18 @@ 7169 9443 Mapping for the Flaga digital module. If you don't have one, ignore … … 7185 9459 tristate "CFI Flash device mapped on IBM 405LP Beech" 7186 9460 depends on MTD_CFI && BEECH 7187 diff -Naur linux-2.6.18. 2/drivers/mtd/maps/lasat.c linux-mips-2.6.18.2/drivers/mtd/maps/lasat.c7188 --- linux-2.6.18. 2/drivers/mtd/maps/lasat.c 2006-11-03 17:33:58.000000000 -08007189 +++ linux-mips-2.6.18. 2/drivers/mtd/maps/lasat.c 2006-11-04 14:51:12.000000000 -08009461 diff -Naur linux-2.6.18.3/drivers/mtd/maps/lasat.c linux-mips-2.6.18.3/drivers/mtd/maps/lasat.c 9462 --- linux-2.6.18.3/drivers/mtd/maps/lasat.c 2006-11-18 19:28:22.000000000 -0800 9463 +++ linux-mips-2.6.18.3/drivers/mtd/maps/lasat.c 2006-11-20 10:09:08.000000000 -0800 7190 9464 @@ -7,7 +7,7 @@ 7191 9465 * modify it under the terms of the GNU General Public License version … … 7206 9480 lasat_map.size = lasat_board_info.li_flash_size; 7207 9481 7208 diff -Naur linux-2.6.18. 2/drivers/net/Kconfig linux-mips-2.6.18.2/drivers/net/Kconfig7209 --- linux-2.6.18. 2/drivers/net/Kconfig 2006-11-03 17:33:58.000000000 -08007210 +++ linux-mips-2.6.18. 2/drivers/net/Kconfig 2006-11-04 14:51:12.000000000 -08009482 diff -Naur linux-2.6.18.3/drivers/net/Kconfig linux-mips-2.6.18.3/drivers/net/Kconfig 9483 --- linux-2.6.18.3/drivers/net/Kconfig 2006-11-18 19:28:22.000000000 -0800 9484 +++ linux-mips-2.6.18.3/drivers/net/Kconfig 2006-11-20 10:09:08.000000000 -0800 7211 9485 @@ -438,6 +438,14 @@ 7212 9486 This is the driver for the onboard card of MIPS Magnum 4000, … … 7310 9584 7311 9585 # 7312 diff -Naur linux-2.6.18. 2/drivers/net/Makefile linux-mips-2.6.18.2/drivers/net/Makefile7313 --- linux-2.6.18. 2/drivers/net/Makefile 2006-11-03 17:33:58.000000000 -08007314 +++ linux-mips-2.6.18. 2/drivers/net/Makefile 2006-11-04 14:51:12.000000000 -08009586 diff -Naur linux-2.6.18.3/drivers/net/Makefile linux-mips-2.6.18.3/drivers/net/Makefile 9587 --- linux-2.6.18.3/drivers/net/Makefile 2006-11-18 19:28:22.000000000 -0800 9588 +++ linux-mips-2.6.18.3/drivers/net/Makefile 2006-11-20 10:09:08.000000000 -0800 7315 9589 @@ -114,6 +114,11 @@ 7316 9590 … … 7325 9599 obj-$(CONFIG_PPP_ASYNC) += ppp_async.o 7326 9600 obj-$(CONFIG_PPP_SYNC_TTY) += ppp_synctty.o 7327 diff -Naur linux-2.6.18. 2/drivers/net/big_sur_ge.c linux-mips-2.6.18.2/drivers/net/big_sur_ge.c7328 --- linux-2.6.18. 2/drivers/net/big_sur_ge.c 1969-12-31 16:00:00.000000000 -08007329 +++ linux-mips-2.6.18. 2/drivers/net/big_sur_ge.c 2006-11-04 14:51:12.000000000 -08009601 diff -Naur linux-2.6.18.3/drivers/net/big_sur_ge.c linux-mips-2.6.18.3/drivers/net/big_sur_ge.c 9602 --- linux-2.6.18.3/drivers/net/big_sur_ge.c 1969-12-31 16:00:00.000000000 -0800 9603 +++ linux-mips-2.6.18.3/drivers/net/big_sur_ge.c 2006-11-20 10:09:08.000000000 -0800 7330 9604 @@ -0,0 +1,2005 @@ 7331 9605 +/* … … 9334 11608 +MODULE_DESCRIPTION("PMC-Sierra Big Sur Ethernet MAC Driver"); 9335 11609 +MODULE_LICENSE("GPL"); 9336 diff -Naur linux-2.6.18. 2/drivers/net/big_sur_ge.h linux-mips-2.6.18.2/drivers/net/big_sur_ge.h9337 --- linux-2.6.18. 2/drivers/net/big_sur_ge.h 1969-12-31 16:00:00.000000000 -08009338 +++ linux-mips-2.6.18. 2/drivers/net/big_sur_ge.h 2006-11-04 14:51:12.000000000 -080011610 diff -Naur linux-2.6.18.3/drivers/net/big_sur_ge.h linux-mips-2.6.18.3/drivers/net/big_sur_ge.h 11611 --- linux-2.6.18.3/drivers/net/big_sur_ge.h 1969-12-31 16:00:00.000000000 -0800 11612 +++ linux-mips-2.6.18.3/drivers/net/big_sur_ge.h 2006-11-20 10:09:08.000000000 -0800 9339 11613 @@ -0,0 +1,713 @@ 9340 11614 +/* … … 10051 12325 + 10052 12326 +#endif 10053 diff -Naur linux-2.6.18. 2/drivers/net/gt64240eth.c linux-mips-2.6.18.2/drivers/net/gt64240eth.c10054 --- linux-2.6.18. 2/drivers/net/gt64240eth.c 1969-12-31 16:00:00.000000000 -080010055 +++ linux-mips-2.6.18. 2/drivers/net/gt64240eth.c 2006-11-04 14:51:12.000000000 -080012327 diff -Naur linux-2.6.18.3/drivers/net/gt64240eth.c linux-mips-2.6.18.3/drivers/net/gt64240eth.c 12328 --- linux-2.6.18.3/drivers/net/gt64240eth.c 1969-12-31 16:00:00.000000000 -0800 12329 +++ linux-mips-2.6.18.3/drivers/net/gt64240eth.c 2006-11-20 10:09:08.000000000 -0800 10056 12330 @@ -0,0 +1,1672 @@ 10057 12331 +/* … … 11727 14001 + return &gp->stats; 11728 14002 +} 11729 diff -Naur linux-2.6.18. 2/drivers/net/gt64240eth.h linux-mips-2.6.18.2/drivers/net/gt64240eth.h11730 --- linux-2.6.18. 2/drivers/net/gt64240eth.h 2006-11-03 17:33:58.000000000 -080011731 +++ linux-mips-2.6.18. 2/drivers/net/gt64240eth.h 2006-11-04 14:51:12.000000000 -080014003 diff -Naur linux-2.6.18.3/drivers/net/gt64240eth.h linux-mips-2.6.18.3/drivers/net/gt64240eth.h 14004 --- linux-2.6.18.3/drivers/net/gt64240eth.h 2006-11-18 19:28:22.000000000 -0800 14005 +++ linux-mips-2.6.18.3/drivers/net/gt64240eth.h 2006-11-20 10:09:08.000000000 -0800 11732 14006 @@ -9,6 +9,7 @@ 11733 14007 * Copyright 2000 MontaVista Software Inc. … … 11770 14044 /* Bit definitions of the SMI Reg */ 11771 14045 enum { 11772 diff -Naur linux-2.6.18. 2/drivers/net/ioc3-eth.c linux-mips-2.6.18.2/drivers/net/ioc3-eth.c11773 --- linux-2.6.18. 2/drivers/net/ioc3-eth.c 2006-11-03 17:33:58.000000000 -080011774 +++ linux-mips-2.6.18. 2/drivers/net/ioc3-eth.c 2006-11-04 14:51:12.000000000 -080014046 diff -Naur linux-2.6.18.3/drivers/net/ioc3-eth.c linux-mips-2.6.18.3/drivers/net/ioc3-eth.c 14047 --- linux-2.6.18.3/drivers/net/ioc3-eth.c 2006-11-18 19:28:22.000000000 -0800 14048 +++ linux-mips-2.6.18.3/drivers/net/ioc3-eth.c 2006-11-20 10:09:08.000000000 -0800 11775 14049 @@ -5,7 +5,7 @@ 11776 14050 * … … 11899 14173 11900 14174 static int ioc3_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 11901 diff -Naur linux-2.6.18. 2/drivers/net/titan_ge.c linux-mips-2.6.18.2/drivers/net/titan_ge.c11902 --- linux-2.6.18. 2/drivers/net/titan_ge.c 1969-12-31 16:00:00.000000000 -080011903 +++ linux-mips-2.6.18. 2/drivers/net/titan_ge.c 2006-11-04 14:51:12.000000000 -080014175 diff -Naur linux-2.6.18.3/drivers/net/titan_ge.c linux-mips-2.6.18.3/drivers/net/titan_ge.c 14176 --- linux-2.6.18.3/drivers/net/titan_ge.c 1969-12-31 16:00:00.000000000 -0800 14177 +++ linux-mips-2.6.18.3/drivers/net/titan_ge.c 2006-11-20 10:09:08.000000000 -0800 11904 14178 @@ -0,0 +1,2071 @@ 11905 14179 +/* … … 13974 16248 +module_init(titan_ge_init_module); 13975 16249 +module_exit(titan_ge_cleanup_module); 13976 diff -Naur linux-2.6.18. 2/drivers/net/titan_ge.h linux-mips-2.6.18.2/drivers/net/titan_ge.h13977 --- linux-2.6.18. 2/drivers/net/titan_ge.h 1969-12-31 16:00:00.000000000 -080013978 +++ linux-mips-2.6.18. 2/drivers/net/titan_ge.h 2006-11-04 14:51:12.000000000 -080016250 diff -Naur linux-2.6.18.3/drivers/net/titan_ge.h linux-mips-2.6.18.3/drivers/net/titan_ge.h 16251 --- linux-2.6.18.3/drivers/net/titan_ge.h 1969-12-31 16:00:00.000000000 -0800 16252 +++ linux-mips-2.6.18.3/drivers/net/titan_ge.h 2006-11-20 10:09:08.000000000 -0800 13979 16253 @@ -0,0 +1,417 @@ 13980 16254 +#ifndef _TITAN_GE_H_ … … 14395 16669 +#endif /* _TITAN_GE_H_ */ 14396 16670 + 14397 diff -Naur linux-2.6.18. 2/drivers/net/titan_mdio.c linux-mips-2.6.18.2/drivers/net/titan_mdio.c14398 --- linux-2.6.18. 2/drivers/net/titan_mdio.c 1969-12-31 16:00:00.000000000 -080014399 +++ linux-mips-2.6.18. 2/drivers/net/titan_mdio.c 2006-11-04 14:51:12.000000000 -080016671 diff -Naur linux-2.6.18.3/drivers/net/titan_mdio.c linux-mips-2.6.18.3/drivers/net/titan_mdio.c 16672 --- linux-2.6.18.3/drivers/net/titan_mdio.c 1969-12-31 16:00:00.000000000 -0800 16673 +++ linux-mips-2.6.18.3/drivers/net/titan_mdio.c 2006-11-20 10:09:08.000000000 -0800 14400 16674 @@ -0,0 +1,217 @@ 14401 16675 +/* … … 14616 16890 +} 14617 16891 + 14618 diff -Naur linux-2.6.18. 2/drivers/net/titan_mdio.h linux-mips-2.6.18.2/drivers/net/titan_mdio.h14619 --- linux-2.6.18. 2/drivers/net/titan_mdio.h 1969-12-31 16:00:00.000000000 -080014620 +++ linux-mips-2.6.18. 2/drivers/net/titan_mdio.h 2006-11-04 14:51:12.000000000 -080016892 diff -Naur linux-2.6.18.3/drivers/net/titan_mdio.h linux-mips-2.6.18.3/drivers/net/titan_mdio.h 16893 --- linux-2.6.18.3/drivers/net/titan_mdio.h 1969-12-31 16:00:00.000000000 -0800 16894 +++ linux-mips-2.6.18.3/drivers/net/titan_mdio.h 2006-11-20 10:09:08.000000000 -0800 14621 16895 @@ -0,0 +1,56 @@ 14622 16896 +/* … … 14676 16950 + 14677 16951 +#endif /* _TITAN_MDIO_H */ 14678 diff -Naur linux-2.6.18. 2/drivers/scsi/NCR53C9x.h linux-mips-2.6.18.2/drivers/scsi/NCR53C9x.h14679 --- linux-2.6.18. 2/drivers/scsi/NCR53C9x.h 2006-11-03 17:33:58.000000000 -080014680 +++ linux-mips-2.6.18. 2/drivers/scsi/NCR53C9x.h 2006-11-04 14:51:12.000000000 -080016952 diff -Naur linux-2.6.18.3/drivers/scsi/NCR53C9x.h linux-mips-2.6.18.3/drivers/scsi/NCR53C9x.h 16953 --- linux-2.6.18.3/drivers/scsi/NCR53C9x.h 2006-11-18 19:28:22.000000000 -0800 16954 +++ linux-mips-2.6.18.3/drivers/scsi/NCR53C9x.h 2006-11-20 10:09:08.000000000 -0800 14681 16955 @@ -144,12 +144,7 @@ 14682 16956 … … 14693 16967 14694 16968 struct ESP_regs { 14695 diff -Naur linux-2.6.18. 2/drivers/scsi/dec_esp.c linux-mips-2.6.18.2/drivers/scsi/dec_esp.c14696 --- linux-2.6.18. 2/drivers/scsi/dec_esp.c 2006-11-03 17:33:58.000000000 -080014697 +++ linux-mips-2.6.18. 2/drivers/scsi/dec_esp.c 2006-11-04 14:51:12.000000000 -080016969 diff -Naur linux-2.6.18.3/drivers/scsi/dec_esp.c linux-mips-2.6.18.3/drivers/scsi/dec_esp.c 16970 --- linux-2.6.18.3/drivers/scsi/dec_esp.c 2006-11-18 19:28:22.000000000 -0800 16971 +++ linux-mips-2.6.18.3/drivers/scsi/dec_esp.c 2006-11-20 10:09:08.000000000 -0800 14698 16972 @@ -55,7 +55,7 @@ 14699 16973 … … 14714 16988 esp->dregs = 0; 14715 16989 esp->eregs = (void *)CKSEG1ADDR(mem_start + 14716 diff -Naur linux-2.6.18. 2/drivers/scsi/sgiwd93.c linux-mips-2.6.18.2/drivers/scsi/sgiwd93.c14717 --- linux-2.6.18. 2/drivers/scsi/sgiwd93.c 2006-11-03 17:33:58.000000000 -080014718 +++ linux-mips-2.6.18. 2/drivers/scsi/sgiwd93.c 2006-11-04 14:51:12.000000000 -080016990 diff -Naur linux-2.6.18.3/drivers/scsi/sgiwd93.c linux-mips-2.6.18.3/drivers/scsi/sgiwd93.c 16991 --- linux-2.6.18.3/drivers/scsi/sgiwd93.c 2006-11-18 19:28:22.000000000 -0800 16992 +++ linux-mips-2.6.18.3/drivers/scsi/sgiwd93.c 2006-11-20 10:09:08.000000000 -0800 14719 16993 @@ -14,6 +14,7 @@ 14720 16994 #include <linux/interrupt.h> … … 14733 17007 static inline void init_hpc_chain(struct hpc_data *hd) 14734 17008 { 14735 diff -Naur linux-2.6.18. 2/drivers/serial/Kconfig linux-mips-2.6.18.2/drivers/serial/Kconfig14736 --- linux-2.6.18. 2/drivers/serial/Kconfig 2006-11-03 17:33:58.000000000 -080014737 +++ linux-mips-2.6.18. 2/drivers/serial/Kconfig 2006-11-04 14:51:12.000000000 -080017009 diff -Naur linux-2.6.18.3/drivers/serial/Kconfig linux-mips-2.6.18.3/drivers/serial/Kconfig 17010 --- linux-2.6.18.3/drivers/serial/Kconfig 2006-11-18 19:28:22.000000000 -0800 17011 +++ linux-mips-2.6.18.3/drivers/serial/Kconfig 2006-11-20 10:09:08.000000000 -0800 14738 17012 @@ -651,6 +651,25 @@ 14739 17013 depends on SERIAL_SH_SCI=y … … 14762 17036 tristate 14763 17037 14764 diff -Naur linux-2.6.18. 2/drivers/serial/Makefile linux-mips-2.6.18.2/drivers/serial/Makefile14765 --- linux-2.6.18. 2/drivers/serial/Makefile 2006-11-03 17:33:58.000000000 -080014766 +++ linux-mips-2.6.18. 2/drivers/serial/Makefile 2006-11-04 14:51:12.000000000 -080017038 diff -Naur linux-2.6.18.3/drivers/serial/Makefile linux-mips-2.6.18.3/drivers/serial/Makefile 17039 --- linux-2.6.18.3/drivers/serial/Makefile 2006-11-18 19:28:22.000000000 -0800 17040 +++ linux-mips-2.6.18.3/drivers/serial/Makefile 2006-11-20 10:09:08.000000000 -0800 14767 17041 @@ -39,6 +39,7 @@ 14768 17042 obj-$(CONFIG_V850E_UART) += v850e_uart.o … … 14773 17047 obj-$(CONFIG_SERIAL_SH_SCI) += sh-sci.o 14774 17048 obj-$(CONFIG_SERIAL_SGI_L1_CONSOLE) += sn_console.o 14775 diff -Naur linux-2.6.18. 2/drivers/serial/ip22zilog.c linux-mips-2.6.18.2/drivers/serial/ip22zilog.c14776 --- linux-2.6.18. 2/drivers/serial/ip22zilog.c 2006-11-03 17:33:58.000000000 -080014777 +++ linux-mips-2.6.18. 2/drivers/serial/ip22zilog.c 2006-11-04 14:51:12.000000000 -080017049 diff -Naur linux-2.6.18.3/drivers/serial/ip22zilog.c linux-mips-2.6.18.3/drivers/serial/ip22zilog.c 17050 --- linux-2.6.18.3/drivers/serial/ip22zilog.c 2006-11-18 19:28:22.000000000 -0800 17051 +++ linux-mips-2.6.18.3/drivers/serial/ip22zilog.c 2006-11-20 10:09:08.000000000 -0800 14778 17052 @@ -865,6 +865,7 @@ 14779 17053 up->cflag = termios->c_cflag; … … 14793 17067 14794 17068 static int __init ip22zilog_console_setup(struct console *con, char *options) 14795 diff -Naur linux-2.6.18. 2/drivers/serial/ip3106_uart.c linux-mips-2.6.18.2/drivers/serial/ip3106_uart.c14796 --- linux-2.6.18. 2/drivers/serial/ip3106_uart.c 1969-12-31 16:00:00.000000000 -080014797 +++ linux-mips-2.6.18. 2/drivers/serial/ip3106_uart.c 2006-11-04 14:51:12.000000000 -080017069 diff -Naur linux-2.6.18.3/drivers/serial/ip3106_uart.c linux-mips-2.6.18.3/drivers/serial/ip3106_uart.c 17070 --- linux-2.6.18.3/drivers/serial/ip3106_uart.c 1969-12-31 16:00:00.000000000 -0800 17071 +++ linux-mips-2.6.18.3/drivers/serial/ip3106_uart.c 2006-11-20 10:09:08.000000000 -0800 14798 17072 @@ -0,0 +1,912 @@ 14799 17073 +/* … … 15709 17983 +MODULE_LICENSE("GPL"); 15710 17984 +MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_IP3106_MAJOR); 15711 diff -Naur linux-2.6.18. 2/drivers/usb/gadget/net2280.c linux-mips-2.6.18.2/drivers/usb/gadget/net2280.c15712 --- linux-2.6.18. 2/drivers/usb/gadget/net2280.c 2006-11-03 17:33:58.000000000 -080015713 +++ linux-mips-2.6.18. 2/drivers/usb/gadget/net2280.c 2006-11-04 14:51:12.000000000 -080017985 diff -Naur linux-2.6.18.3/drivers/usb/gadget/net2280.c linux-mips-2.6.18.3/drivers/usb/gadget/net2280.c 17986 --- linux-2.6.18.3/drivers/usb/gadget/net2280.c 2006-11-18 19:28:22.000000000 -0800 17987 +++ linux-mips-2.6.18.3/drivers/usb/gadget/net2280.c 2006-11-20 10:09:08.000000000 -0800 15714 17988 @@ -467,7 +467,8 @@ 15715 17989 #elif defined(CONFIG_PPC) && !defined(CONFIG_NOT_COHERENT_CACHE) … … 15722 17996 15723 17997 /* FIXME there are other cases, including an x86-64 one ... */ 15724 diff -Naur linux-2.6.18. 2/drivers/usb/host/ohci-hcd.c linux-mips-2.6.18.2/drivers/usb/host/ohci-hcd.c15725 --- linux-2.6.18. 2/drivers/usb/host/ohci-hcd.c 2006-11-03 17:33:58.000000000 -080015726 +++ linux-mips-2.6.18. 2/drivers/usb/host/ohci-hcd.c 2006-11-04 14:51:12.000000000 -080017998 diff -Naur linux-2.6.18.3/drivers/usb/host/ohci-hcd.c linux-mips-2.6.18.3/drivers/usb/host/ohci-hcd.c 17999 --- linux-2.6.18.3/drivers/usb/host/ohci-hcd.c 2006-11-18 19:28:22.000000000 -0800 18000 +++ linux-mips-2.6.18.3/drivers/usb/host/ohci-hcd.c 2006-11-20 10:09:08.000000000 -0800 15727 18001 @@ -909,6 +909,10 @@ 15728 18002 #include "ohci-au1xxx.c" … … 15736 18010 #include "ohci-ppc-soc.c" 15737 18011 #endif 15738 diff -Naur linux-2.6.18. 2/drivers/usb/host/ohci-pnx8550.c linux-mips-2.6.18.2/drivers/usb/host/ohci-pnx8550.c15739 --- linux-2.6.18. 2/drivers/usb/host/ohci-pnx8550.c 1969-12-31 16:00:00.000000000 -080015740 +++ linux-mips-2.6.18. 2/drivers/usb/host/ohci-pnx8550.c 2006-11-04 14:51:12.000000000 -080018012 diff -Naur linux-2.6.18.3/drivers/usb/host/ohci-pnx8550.c linux-mips-2.6.18.3/drivers/usb/host/ohci-pnx8550.c 18013 --- linux-2.6.18.3/drivers/usb/host/ohci-pnx8550.c 1969-12-31 16:00:00.000000000 -0800 18014 +++ linux-mips-2.6.18.3/drivers/usb/host/ohci-pnx8550.c 2006-11-20 10:09:08.000000000 -0800 15741 18015 @@ -0,0 +1,277 @@ 15742 18016 +/* … … 16017 18291 +module_init (ohci_hcd_pnx8550_init); 16018 18292 +module_exit (ohci_hcd_pnx8550_cleanup); 16019 diff -Naur linux-2.6.18. 2/drivers/video/Kconfig linux-mips-2.6.18.2/drivers/video/Kconfig16020 --- linux-2.6.18. 2/drivers/video/Kconfig 2006-11-03 17:33:58.000000000 -080016021 +++ linux-mips-2.6.18. 2/drivers/video/Kconfig 2006-11-04 14:51:12.000000000 -080018293 diff -Naur linux-2.6.18.3/drivers/video/Kconfig linux-mips-2.6.18.3/drivers/video/Kconfig 18294 --- linux-2.6.18.3/drivers/video/Kconfig 2006-11-18 19:28:22.000000000 -0800 18295 +++ linux-mips-2.6.18.3/drivers/video/Kconfig 2006-11-20 10:09:08.000000000 -0800 16022 18296 @@ -1250,6 +1250,17 @@ 16023 18297 Please read the <file:Documentation/fb/README-sstfb.txt> for supported … … 16076 18350 config FB_MAXINE 16077 18351 bool "Maxine (Personal DECstation) onboard framebuffer support" 16078 diff -Naur linux-2.6.18. 2/drivers/video/Makefile linux-mips-2.6.18.2/drivers/video/Makefile16079 --- linux-2.6.18. 2/drivers/video/Makefile 2006-11-03 17:33:58.000000000 -080016080 +++ linux-mips-2.6.18. 2/drivers/video/Makefile 2006-11-04 14:51:12.000000000 -080018352 diff -Naur linux-2.6.18.3/drivers/video/Makefile linux-mips-2.6.18.3/drivers/video/Makefile 18353 --- linux-2.6.18.3/drivers/video/Makefile 2006-11-18 19:28:22.000000000 -0800 18354 +++ linux-mips-2.6.18.3/drivers/video/Makefile 2006-11-20 10:09:08.000000000 -0800 16081 18355 @@ -95,6 +95,7 @@ 16082 18356 obj-$(CONFIG_FB_TX3912) += tx3912fb.o … … 16087 18361 obj-$(CONFIG_FB_PNX4008_DUM) += pnx4008/ 16088 18362 obj-$(CONFIG_FB_PNX4008_DUM_RGB) += pnx4008/ 16089 diff -Naur linux-2.6.18. 2/drivers/video/au1100fb.c linux-mips-2.6.18.2/drivers/video/au1100fb.c16090 --- linux-2.6.18. 2/drivers/video/au1100fb.c 2006-11-03 17:33:58.000000000 -080016091 +++ linux-mips-2.6.18. 2/drivers/video/au1100fb.c 2006-11-04 14:51:12.000000000 -080018363 diff -Naur linux-2.6.18.3/drivers/video/au1100fb.c linux-mips-2.6.18.3/drivers/video/au1100fb.c 18364 --- linux-2.6.18.3/drivers/video/au1100fb.c 2006-11-18 19:28:22.000000000 -0800 18365 +++ linux-mips-2.6.18.3/drivers/video/au1100fb.c 2006-11-20 10:09:08.000000000 -0800 16092 18366 @@ -40,6 +40,7 @@ 16093 18367 * with this program; if not, write to the Free Software Foundation, Inc., … … 16098 18372 #include <linux/kernel.h> 16099 18373 #include <linux/errno.h> 16100 diff -Naur linux-2.6.18. 2/drivers/video/smivgxfb.c linux-mips-2.6.18.2/drivers/video/smivgxfb.c16101 --- linux-2.6.18. 2/drivers/video/smivgxfb.c 1969-12-31 16:00:00.000000000 -080016102 +++ linux-mips-2.6.18. 2/drivers/video/smivgxfb.c 2006-11-04 14:51:12.000000000 -080018374 diff -Naur linux-2.6.18.3/drivers/video/smivgxfb.c linux-mips-2.6.18.3/drivers/video/smivgxfb.c 18375 --- linux-2.6.18.3/drivers/video/smivgxfb.c 1969-12-31 16:00:00.000000000 -0800 18376 +++ linux-mips-2.6.18.3/drivers/video/smivgxfb.c 2006-11-20 10:09:08.000000000 -0800 16103 18377 @@ -0,0 +1,387 @@ 16104 18378 +/*************************************************************************** … … 16489 18763 +MODULE_DESCRIPTION("Framebuffer driver for SMI Voyager"); 16490 18764 +MODULE_LICENSE("GPL"); 16491 diff -Naur linux-2.6.18. 2/include/asm-mips/Kbuild linux-mips-2.6.18.2/include/asm-mips/Kbuild16492 --- linux-2.6.18. 2/include/asm-mips/Kbuild 2006-11-03 17:33:58.000000000 -080016493 +++ linux-mips-2.6.18. 2/include/asm-mips/Kbuild 2006-11-04 14:51:12.000000000 -080018765 diff -Naur linux-2.6.18.3/include/asm-mips/Kbuild linux-mips-2.6.18.3/include/asm-mips/Kbuild 18766 --- linux-2.6.18.3/include/asm-mips/Kbuild 2006-11-18 19:28:22.000000000 -0800 18767 +++ linux-mips-2.6.18.3/include/asm-mips/Kbuild 2006-11-20 10:09:08.000000000 -0800 16494 18768 @@ -1 +1,3 @@ 16495 18769 include include/asm-generic/Kbuild.asm 16496 18770 + 16497 18771 +header-y += cachectl.h sgidefs.h sysmips.h 16498 diff -Naur linux-2.6.18. 2/include/asm-mips/asm.h linux-mips-2.6.18.2/include/asm-mips/asm.h16499 --- linux-2.6.18. 2/include/asm-mips/asm.h 2006-11-03 17:33:58.000000000 -080016500 +++ linux-mips-2.6.18. 2/include/asm-mips/asm.h 2006-11-04 14:51:12.000000000 -080018772 diff -Naur linux-2.6.18.3/include/asm-mips/asm.h linux-mips-2.6.18.3/include/asm-mips/asm.h 18773 --- linux-2.6.18.3/include/asm-mips/asm.h 2006-11-18 19:28:22.000000000 -0800 18774 +++ linux-mips-2.6.18.3/include/asm-mips/asm.h 2006-11-20 10:09:08.000000000 -0800 16501 18775 @@ -344,6 +344,7 @@ 16502 18776 #define PTR_L lw … … 16515 18789 #define PTR_SLLV dsllv 16516 18790 #define PTR_SRL dsrl 16517 diff -Naur linux-2.6.18. 2/include/asm-mips/cacheflush.h linux-mips-2.6.18.2/include/asm-mips/cacheflush.h16518 --- linux-2.6.18. 2/include/asm-mips/cacheflush.h 2006-11-03 17:33:58.000000000 -080016519 +++ linux-mips-2.6.18. 2/include/asm-mips/cacheflush.h 2006-11-04 14:51:12.000000000 -080018791 diff -Naur linux-2.6.18.3/include/asm-mips/cacheflush.h linux-mips-2.6.18.3/include/asm-mips/cacheflush.h 18792 --- linux-2.6.18.3/include/asm-mips/cacheflush.h 2006-11-18 19:28:22.000000000 -0800 18793 +++ linux-mips-2.6.18.3/include/asm-mips/cacheflush.h 2006-11-20 10:09:08.000000000 -0800 16520 18794 @@ -21,7 +21,6 @@ 16521 18795 * - flush_cache_range(vma, start, end) flushes a range of pages … … 16576 18850 extern void (*flush_cache_sigtramp)(unsigned long addr); 16577 18851 extern void (*flush_icache_all)(void); 16578 diff -Naur linux-2.6.18.2/include/asm-mips/fixmap.h linux-mips-2.6.18.2/include/asm-mips/fixmap.h 16579 --- linux-2.6.18.2/include/asm-mips/fixmap.h 2006-11-03 17:33:58.000000000 -0800 16580 +++ linux-mips-2.6.18.2/include/asm-mips/fixmap.h 2006-11-04 14:51:12.000000000 -0800 18852 diff -Naur linux-2.6.18.3/include/asm-mips/compat.h linux-mips-2.6.18.3/include/asm-mips/compat.h 18853 --- linux-2.6.18.3/include/asm-mips/compat.h 2006-11-18 19:28:22.000000000 -0800 18854 +++ linux-mips-2.6.18.3/include/asm-mips/compat.h 2006-11-20 10:09:08.000000000 -0800 18855 @@ -32,6 +32,7 @@ 18856 s32 val[2]; 18857 } compat_fsid_t; 18858 typedef s32 compat_timer_t; 18859 +typedef s32 compat_key_t; 18860 18861 typedef s32 compat_int_t; 18862 typedef s32 compat_long_t; 18863 @@ -146,4 +147,71 @@ 18864 return (void __user *) (regs->regs[29] - len); 18865 } 18866 18867 +struct compat_ipc64_perm { 18868 + compat_key_t key; 18869 + __compat_uid32_t uid; 18870 + __compat_gid32_t gid; 18871 + __compat_uid32_t cuid; 18872 + __compat_gid32_t cgid; 18873 + compat_mode_t mode; 18874 + unsigned short seq; 18875 + unsigned short __pad2; 18876 + compat_ulong_t __unused1; 18877 + compat_ulong_t __unused2; 18878 +}; 18879 + 18880 +struct compat_semid64_ds { 18881 + struct compat_ipc64_perm sem_perm; 18882 + compat_time_t sem_otime; 18883 + compat_time_t sem_ctime; 18884 + compat_ulong_t sem_nsems; 18885 + compat_ulong_t __unused1; 18886 + compat_ulong_t __unused2; 18887 +}; 18888 + 18889 +struct compat_msqid64_ds { 18890 + struct compat_ipc64_perm msg_perm; 18891 +#ifndef CONFIG_CPU_LITTLE_ENDIAN 18892 + compat_ulong_t __unused1; 18893 +#endif 18894 + compat_time_t msg_stime; 18895 +#ifdef CONFIG_CPU_LITTLE_ENDIAN 18896 + compat_ulong_t __unused1; 18897 +#endif 18898 +#ifndef CONFIG_CPU_LITTLE_ENDIAN 18899 + compat_ulong_t __unused2; 18900 +#endif 18901 + compat_time_t msg_rtime; 18902 +#ifdef CONFIG_CPU_LITTLE_ENDIAN 18903 + compat_ulong_t __unused2; 18904 +#endif 18905 +#ifndef CONFIG_CPU_LITTLE_ENDIAN 18906 + compat_ulong_t __unused3; 18907 +#endif 18908 + compat_time_t msg_ctime; 18909 +#ifdef CONFIG_CPU_LITTLE_ENDIAN 18910 + compat_ulong_t __unused3; 18911 +#endif 18912 + compat_ulong_t msg_cbytes; 18913 + compat_ulong_t msg_qnum; 18914 + compat_ulong_t msg_qbytes; 18915 + compat_pid_t msg_lspid; 18916 + compat_pid_t msg_lrpid; 18917 + compat_ulong_t __unused4; 18918 + compat_ulong_t __unused5; 18919 +}; 18920 + 18921 +struct compat_shmid64_ds { 18922 + struct compat_ipc64_perm shm_perm; 18923 + compat_size_t shm_segsz; 18924 + compat_time_t shm_atime; 18925 + compat_time_t shm_dtime; 18926 + compat_time_t shm_ctime; 18927 + compat_pid_t shm_cpid; 18928 + compat_pid_t shm_lpid; 18929 + compat_ulong_t shm_nattch; 18930 + compat_ulong_t __unused1; 18931 + compat_ulong_t __unused2; 18932 +}; 18933 + 18934 #endif /* _ASM_COMPAT_H */ 18935 diff -Naur linux-2.6.18.3/include/asm-mips/fixmap.h linux-mips-2.6.18.3/include/asm-mips/fixmap.h 18936 --- linux-2.6.18.3/include/asm-mips/fixmap.h 2006-11-18 19:28:22.000000000 -0800 18937 +++ linux-mips-2.6.18.3/include/asm-mips/fixmap.h 2006-11-20 10:09:08.000000000 -0800 16581 18938 @@ -45,8 +45,16 @@ 16582 18939 * fix-mapped? … … 16609 18966 #define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT) 16610 18967 #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) 16611 diff -Naur linux-2.6.18. 2/include/asm-mips/fpu.h linux-mips-2.6.18.2/include/asm-mips/fpu.h16612 --- linux-2.6.18. 2/include/asm-mips/fpu.h 2006-11-03 17:33:58.000000000 -080016613 +++ linux-mips-2.6.18. 2/include/asm-mips/fpu.h 2006-11-04 14:51:12.000000000 -080018968 diff -Naur linux-2.6.18.3/include/asm-mips/fpu.h linux-mips-2.6.18.3/include/asm-mips/fpu.h 18969 --- linux-2.6.18.3/include/asm-mips/fpu.h 2006-11-18 19:28:22.000000000 -0800 18970 +++ linux-mips-2.6.18.3/include/asm-mips/fpu.h 2006-11-20 10:09:08.000000000 -0800 16614 18971 @@ -134,9 +134,11 @@ 16615 18972 … … 16626 18983 16627 18984 return tsk->thread.fpu.fpr; 16628 diff -Naur linux-2.6.18. 2/include/asm-mips/io.h linux-mips-2.6.18.2/include/asm-mips/io.h16629 --- linux-2.6.18. 2/include/asm-mips/io.h 2006-11-03 17:33:58.000000000 -080016630 +++ linux-mips-2.6.18. 2/include/asm-mips/io.h 2006-11-04 14:51:12.000000000 -080018985 diff -Naur linux-2.6.18.3/include/asm-mips/io.h linux-mips-2.6.18.3/include/asm-mips/io.h 18986 --- linux-2.6.18.3/include/asm-mips/io.h 2006-11-18 19:28:22.000000000 -0800 18987 +++ linux-mips-2.6.18.3/include/asm-mips/io.h 2006-11-20 10:09:08.000000000 -0800 16631 18988 @@ -172,7 +172,7 @@ 16632 18989 #define page_to_phys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT) … … 16682 19039 * to explicitly ioremap() it. The fact that the ISA IO space is mapped 16683 19040 * to PAGE_OFFSET is pure coincidence - it does not mean ISA values 16684 diff -Naur linux-2.6.18. 2/include/asm-mips/irq.h linux-mips-2.6.18.2/include/asm-mips/irq.h16685 --- linux-2.6.18. 2/include/asm-mips/irq.h 2006-11-03 17:33:58.000000000 -080016686 +++ linux-mips-2.6.18. 2/include/asm-mips/irq.h 2006-11-04 14:51:12.000000000 -080016687 @@ -76,8 +76, 4@@19041 diff -Naur linux-2.6.18.3/include/asm-mips/irq.h linux-mips-2.6.18.3/include/asm-mips/irq.h 19042 --- linux-2.6.18.3/include/asm-mips/irq.h 2006-11-18 19:28:22.000000000 -0800 19043 +++ linux-mips-2.6.18.3/include/asm-mips/irq.h 2006-11-20 10:09:08.000000000 -0800 19044 @@ -76,8 +76,8 @@ 16688 19045 unsigned long hwmask); 16689 19046 #endif /* CONFIG_MIPS_MT_SMTC */ … … 16692 19049 -#define ARCH_HAS_IRQ_PER_CPU 16693 19050 -#endif 16694 - 19051 +extern int allocate_irqno(void); 19052 +extern void alloc_legacy_irqno(void); 19053 +extern void free_irqno(unsigned int irq); 19054 16695 19055 #endif /* _ASM_IRQ_H */ 16696 diff -Naur linux-2.6.18. 2/include/asm-mips/mach-atlas/mc146818rtc.h linux-mips-2.6.18.2/include/asm-mips/mach-atlas/mc146818rtc.h16697 --- linux-2.6.18. 2/include/asm-mips/mach-atlas/mc146818rtc.h 2006-11-03 17:33:58.000000000 -080016698 +++ linux-mips-2.6.18. 2/include/asm-mips/mach-atlas/mc146818rtc.h 2006-11-04 14:51:12.000000000 -080019056 diff -Naur linux-2.6.18.3/include/asm-mips/mach-atlas/mc146818rtc.h linux-mips-2.6.18.3/include/asm-mips/mach-atlas/mc146818rtc.h 19057 --- linux-2.6.18.3/include/asm-mips/mach-atlas/mc146818rtc.h 2006-11-18 19:28:22.000000000 -0800 19058 +++ linux-mips-2.6.18.3/include/asm-mips/mach-atlas/mc146818rtc.h 2006-11-20 10:09:08.000000000 -0800 16699 19059 @@ -28,10 +28,12 @@ 16700 19060 #include <asm/mips-boards/atlas.h> … … 16711 19071 static inline unsigned char CMOS_READ(unsigned long addr) 16712 19072 { 16713 diff -Naur linux-2.6.18.2/include/asm-mips/mach-au1x00/au1xxx_ide.h linux-mips-2.6.18.2/include/asm-mips/mach-au1x00/au1xxx_ide.h 16714 --- linux-2.6.18.2/include/asm-mips/mach-au1x00/au1xxx_ide.h 2006-11-03 17:33:58.000000000 -0800 16715 +++ linux-mips-2.6.18.2/include/asm-mips/mach-au1x00/au1xxx_ide.h 2006-11-04 14:51:12.000000000 -0800 19073 diff -Naur linux-2.6.18.3/include/asm-mips/mach-au1x00/au1000.h linux-mips-2.6.18.3/include/asm-mips/mach-au1x00/au1000.h 19074 --- linux-2.6.18.3/include/asm-mips/mach-au1x00/au1000.h 2006-11-18 19:28:22.000000000 -0800 19075 +++ linux-mips-2.6.18.3/include/asm-mips/mach-au1x00/au1000.h 2006-11-20 10:09:08.000000000 -0800 19076 @@ -39,6 +39,7 @@ 19077 #ifndef _LANGUAGE_ASSEMBLY 19078 19079 #include <linux/delay.h> 19080 +#include <linux/types.h> 19081 #include <asm/io.h> 19082 19083 /* cpu pipeline flush */ 19084 @@ -1664,12 +1665,12 @@ 19085 * addresses. For PCI IO, it's simpler because we get to do the ioremap 19086 * ourselves and then adjust the device's resources. 19087 */ 19088 -#define Au1500_EXT_CFG 0x600000000ULL 19089 -#define Au1500_EXT_CFG_TYPE1 0x680000000ULL 19090 -#define Au1500_PCI_IO_START 0x500000000ULL 19091 -#define Au1500_PCI_IO_END 0x5000FFFFFULL 19092 -#define Au1500_PCI_MEM_START 0x440000000ULL 19093 -#define Au1500_PCI_MEM_END 0x44FFFFFFFULL 19094 +#define Au1500_EXT_CFG ((resource_size_t) 0x600000000ULL) 19095 +#define Au1500_EXT_CFG_TYPE1 ((resource_size_t) 0x680000000ULL) 19096 +#define Au1500_PCI_IO_START ((resource_size_t) 0x500000000ULL) 19097 +#define Au1500_PCI_IO_END ((resource_size_t) 0x5000FFFFFULL) 19098 +#define Au1500_PCI_MEM_START ((resource_size_t) 0x440000000ULL) 19099 +#define Au1500_PCI_MEM_END ((resource_size_t) 0x44FFFFFFFULL) 19100 19101 #define PCI_IO_START (Au1500_PCI_IO_START + 0x1000) 19102 #define PCI_IO_END (Au1500_PCI_IO_END) 19103 diff -Naur linux-2.6.18.3/include/asm-mips/mach-au1x00/au1xxx_ide.h linux-mips-2.6.18.3/include/asm-mips/mach-au1x00/au1xxx_ide.h 19104 --- linux-2.6.18.3/include/asm-mips/mach-au1x00/au1xxx_ide.h 2006-11-18 19:28:22.000000000 -0800 19105 +++ linux-mips-2.6.18.3/include/asm-mips/mach-au1x00/au1xxx_ide.h 2006-11-20 10:09:08.000000000 -0800 16716 19106 @@ -83,6 +83,7 @@ 16717 19107 } _auide_hwif; … … 16722 19112 static const struct drive_list_entry dma_white_list [] = { 16723 19113 /* 16724 diff -Naur linux-2.6.18. 2/include/asm-mips/mips-boards/atlasint.h linux-mips-2.6.18.2/include/asm-mips/mips-boards/atlasint.h16725 --- linux-2.6.18. 2/include/asm-mips/mips-boards/atlasint.h 2006-11-03 17:33:58.000000000 -080016726 +++ linux-mips-2.6.18. 2/include/asm-mips/mips-boards/atlasint.h 2006-11-04 14:51:12.000000000 -080019114 diff -Naur linux-2.6.18.3/include/asm-mips/mips-boards/atlasint.h linux-mips-2.6.18.3/include/asm-mips/mips-boards/atlasint.h 19115 --- linux-2.6.18.3/include/asm-mips/mips-boards/atlasint.h 2006-11-18 19:28:22.000000000 -0800 19116 +++ linux-mips-2.6.18.3/include/asm-mips/mips-boards/atlasint.h 2006-11-20 10:09:08.000000000 -0800 16727 19117 @@ -1,6 +1,7 @@ 16728 19118 /* … … 16860 19250 16861 19251 #endif /* !(_MIPS_ATLASINT_H) */ 16862 diff -Naur linux-2.6.18. 2/include/asm-mips/page.h linux-mips-2.6.18.2/include/asm-mips/page.h16863 --- linux-2.6.18. 2/include/asm-mips/page.h 2006-11-03 17:33:58.000000000 -080016864 +++ linux-mips-2.6.18. 2/include/asm-mips/page.h 2006-11-04 14:51:12.000000000 -080019252 diff -Naur linux-2.6.18.3/include/asm-mips/page.h linux-mips-2.6.18.3/include/asm-mips/page.h 19253 --- linux-2.6.18.3/include/asm-mips/page.h 2006-11-18 19:28:22.000000000 -0800 19254 +++ linux-mips-2.6.18.3/include/asm-mips/page.h 2006-11-20 10:09:08.000000000 -0800 16865 19255 @@ -53,19 +53,17 @@ 16866 19256 extern void (*flush_data_cache_page)(unsigned long addr); … … 16909 19299 /* 16910 19300 * For 3-level pagetables we defines these ourselves, for 2-level the 16911 diff -Naur linux-2.6.18. 2/include/asm-mips/pgalloc.h linux-mips-2.6.18.2/include/asm-mips/pgalloc.h16912 --- linux-2.6.18. 2/include/asm-mips/pgalloc.h 2006-11-03 17:33:58.000000000 -080016913 +++ linux-mips-2.6.18. 2/include/asm-mips/pgalloc.h 2006-11-04 14:51:12.000000000 -080019301 diff -Naur linux-2.6.18.3/include/asm-mips/pgalloc.h linux-mips-2.6.18.3/include/asm-mips/pgalloc.h 19302 --- linux-2.6.18.3/include/asm-mips/pgalloc.h 2006-11-18 19:28:22.000000000 -0800 19303 +++ linux-mips-2.6.18.3/include/asm-mips/pgalloc.h 2006-11-20 10:09:08.000000000 -0800 16914 19304 @@ -48,7 +48,7 @@ 16915 19305 … … 16921 19311 memcpy(ret + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD, 16922 19312 (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t)); 16923 diff -Naur linux-2.6.18. 2/include/asm-mips/pgtable-64.h linux-mips-2.6.18.2/include/asm-mips/pgtable-64.h16924 --- linux-2.6.18. 2/include/asm-mips/pgtable-64.h 2006-11-03 17:33:58.000000000 -080016925 +++ linux-mips-2.6.18. 2/include/asm-mips/pgtable-64.h 2006-11-04 14:51:12.000000000 -080019313 diff -Naur linux-2.6.18.3/include/asm-mips/pgtable-64.h linux-mips-2.6.18.3/include/asm-mips/pgtable-64.h 19314 --- linux-2.6.18.3/include/asm-mips/pgtable-64.h 2006-11-18 19:28:22.000000000 -0800 19315 +++ linux-mips-2.6.18.3/include/asm-mips/pgtable-64.h 2006-11-20 10:09:08.000000000 -0800 16926 19316 @@ -170,7 +170,7 @@ 16927 19317 #define __pmd_offset(address) pmd_index(address) … … 16933 19323 #define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1)) 16934 19324 #define pmd_index(address) (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1)) 16935 diff -Naur linux-2.6.18. 2/include/asm-mips/ptrace.h linux-mips-2.6.18.2/include/asm-mips/ptrace.h16936 --- linux-2.6.18. 2/include/asm-mips/ptrace.h 2006-11-03 17:33:58.000000000 -080016937 +++ linux-mips-2.6.18. 2/include/asm-mips/ptrace.h 2006-11-04 14:51:12.000000000 -080019325 diff -Naur linux-2.6.18.3/include/asm-mips/ptrace.h linux-mips-2.6.18.3/include/asm-mips/ptrace.h 19326 --- linux-2.6.18.3/include/asm-mips/ptrace.h 2006-11-18 19:28:22.000000000 -0800 19327 +++ linux-mips-2.6.18.3/include/asm-mips/ptrace.h 2006-11-20 10:09:08.000000000 -0800 16938 19328 @@ -10,8 +10,6 @@ 16939 19329 #define _ASM_PTRACE_H … … 16953 19343 /* 16954 19344 * Does the process account for user or for system time? 16955 diff -Naur linux-2.6.18. 2/include/asm-mips/spinlock.h linux-mips-2.6.18.2/include/asm-mips/spinlock.h16956 --- linux-2.6.18. 2/include/asm-mips/spinlock.h 2006-11-03 17:33:58.000000000 -080016957 +++ linux-mips-2.6.18. 2/include/asm-mips/spinlock.h 2006-11-04 14:51:12.000000000 -080019345 diff -Naur linux-2.6.18.3/include/asm-mips/spinlock.h linux-mips-2.6.18.3/include/asm-mips/spinlock.h 19346 --- linux-2.6.18.3/include/asm-mips/spinlock.h 2006-11-18 19:28:22.000000000 -0800 19347 +++ linux-mips-2.6.18.3/include/asm-mips/spinlock.h 2006-11-20 10:09:08.000000000 -0800 16958 19348 @@ -239,7 +239,51 @@ 16959 19349 : "memory"); … … 17015 19405 + 17016 19406 #endif /* _ASM_SPINLOCK_H */ 17017 diff -Naur linux-2.6.18. 2/include/asm-mips/system.h linux-mips-2.6.18.2/include/asm-mips/system.h17018 --- linux-2.6.18. 2/include/asm-mips/system.h 2006-11-03 17:33:58.000000000 -080017019 +++ linux-mips-2.6.18. 2/include/asm-mips/system.h 2006-11-04 14:51:12.000000000 -080019407 diff -Naur linux-2.6.18.3/include/asm-mips/system.h linux-mips-2.6.18.3/include/asm-mips/system.h 19408 --- linux-2.6.18.3/include/asm-mips/system.h 2006-11-18 19:28:22.000000000 -0800 19409 +++ linux-mips-2.6.18.3/include/asm-mips/system.h 2006-11-20 10:09:08.000000000 -0800 17020 19410 @@ -392,7 +392,7 @@ 17021 19411 { … … 17027 19417 " .set push \n" 17028 19418 " .set noat \n" 17029 diff -Naur linux-2.6.18. 2/include/asm-mips/timex.h linux-mips-2.6.18.2/include/asm-mips/timex.h17030 --- linux-2.6.18. 2/include/asm-mips/timex.h 2006-11-03 17:33:58.000000000 -080017031 +++ linux-mips-2.6.18. 2/include/asm-mips/timex.h 2006-11-04 14:51:12.000000000 -080019419 diff -Naur linux-2.6.18.3/include/asm-mips/timex.h linux-mips-2.6.18.3/include/asm-mips/timex.h 19420 --- linux-2.6.18.3/include/asm-mips/timex.h 2006-11-18 19:28:22.000000000 -0800 19421 +++ linux-mips-2.6.18.3/include/asm-mips/timex.h 2006-11-20 10:09:08.000000000 -0800 17032 19422 @@ -8,6 +8,8 @@ 17033 19423 #ifndef _ASM_TIMEX_H … … 17046 19436 + 17047 19437 #endif /* _ASM_TIMEX_H */ 17048 diff -Naur linux-2.6.18. 2/include/asm-mips/unistd.h linux-mips-2.6.18.2/include/asm-mips/unistd.h17049 --- linux-2.6.18. 2/include/asm-mips/unistd.h 2006-11-03 17:33:58.000000000 -080017050 +++ linux-mips-2.6.18. 2/include/asm-mips/unistd.h 2006-11-04 14:51:12.000000000 -080019438 diff -Naur linux-2.6.18.3/include/asm-mips/unistd.h linux-mips-2.6.18.3/include/asm-mips/unistd.h 19439 --- linux-2.6.18.3/include/asm-mips/unistd.h 2006-11-18 19:28:22.000000000 -0800 19440 +++ linux-mips-2.6.18.3/include/asm-mips/unistd.h 2006-11-20 10:09:08.000000000 -0800 17051 19441 @@ -313,7 +313,7 @@ 17052 19442 #define __NR_mknodat (__NR_Linux + 290) … … 17139 19529 #ifdef __KERNEL__ 17140 19530 17141 diff -Naur linux-2.6.18. 2/include/asm-mips/user.h linux-mips-2.6.18.2/include/asm-mips/user.h17142 --- linux-2.6.18. 2/include/asm-mips/user.h 2006-11-03 17:33:58.000000000 -080017143 +++ linux-mips-2.6.18. 2/include/asm-mips/user.h 2006-11-04 14:51:12.000000000 -080019531 diff -Naur linux-2.6.18.3/include/asm-mips/user.h linux-mips-2.6.18.3/include/asm-mips/user.h 19532 --- linux-2.6.18.3/include/asm-mips/user.h 2006-11-18 19:28:22.000000000 -0800 19533 +++ linux-mips-2.6.18.3/include/asm-mips/user.h 2006-11-20 10:09:08.000000000 -0800 17144 19534 @@ -8,6 +8,8 @@ 17145 19535 #ifndef _ASM_USER_H … … 17158 19548 + 17159 19549 #endif /* _ASM_USER_H */ 17160 diff -Naur linux-2.6.18. 2/include/linux/highmem.h linux-mips-2.6.18.2/include/linux/highmem.h17161 --- linux-2.6.18. 2/include/linux/highmem.h 2006-11-03 17:33:58.000000000 -080017162 +++ linux-mips-2.6.18. 2/include/linux/highmem.h 2006-11-04 14:51:12.000000000 -080019550 diff -Naur linux-2.6.18.3/include/linux/highmem.h linux-mips-2.6.18.3/include/linux/highmem.h 19551 --- linux-2.6.18.3/include/linux/highmem.h 2006-11-18 19:28:22.000000000 -0800 19552 +++ linux-mips-2.6.18.3/include/linux/highmem.h 2006-11-20 10:09:08.000000000 -0800 17163 19553 @@ -89,7 +89,10 @@ 17164 19554 kunmap_atomic(kaddr, KM_USER0); … … 17182 19572 { 17183 19573 char *vfrom, *vto; 17184 diff -Naur linux-2.6.18. 2/include/linux/pci_ids.h linux-mips-2.6.18.2/include/linux/pci_ids.h17185 --- linux-2.6.18. 2/include/linux/pci_ids.h 2006-11-03 17:33:58.000000000 -080017186 +++ linux-mips-2.6.18. 2/include/linux/pci_ids.h 2006-11-04 14:51:12.000000000 -080019574 diff -Naur linux-2.6.18.3/include/linux/pci_ids.h linux-mips-2.6.18.3/include/linux/pci_ids.h 19575 --- linux-2.6.18.3/include/linux/pci_ids.h 2006-11-18 19:28:22.000000000 -0800 19576 +++ linux-mips-2.6.18.3/include/linux/pci_ids.h 2006-11-20 10:09:08.000000000 -0800 17187 19577 @@ -1603,6 +1603,9 @@ 17188 19578 #define PCI_VENDOR_ID_SATSAGEM 0x1267 … … 17195 19585 #define PCI_VENDOR_ID_ENSONIQ 0x1274 17196 19586 #define PCI_DEVICE_ID_ENSONIQ_CT5880 0x5880 17197 diff -Naur linux-2.6.18. 2/include/linux/serial.h linux-mips-2.6.18.2/include/linux/serial.h17198 --- linux-2.6.18. 2/include/linux/serial.h 2006-11-03 17:33:58.000000000 -080017199 +++ linux-mips-2.6.18. 2/include/linux/serial.h 2006-11-04 14:51:12.000000000 -080019587 diff -Naur linux-2.6.18.3/include/linux/serial.h linux-mips-2.6.18.3/include/linux/serial.h 19588 --- linux-2.6.18.3/include/linux/serial.h 2006-11-18 19:28:22.000000000 -0800 19589 +++ linux-mips-2.6.18.3/include/linux/serial.h 2006-11-20 10:09:08.000000000 -0800 17200 19590 @@ -76,7 +76,8 @@ 17201 19591 #define PORT_16654 11 … … 17208 19598 #define SERIAL_IO_PORT 0 17209 19599 #define SERIAL_IO_HUB6 1 17210 diff -Naur linux-2.6.18. 2/include/linux/serial_ip3106.h linux-mips-2.6.18.2/include/linux/serial_ip3106.h17211 --- linux-2.6.18. 2/include/linux/serial_ip3106.h 2006-11-03 17:33:58.000000000 -080017212 +++ linux-mips-2.6.18. 2/include/linux/serial_ip3106.h 2006-11-04 14:51:12.000000000 -080019600 diff -Naur linux-2.6.18.3/include/linux/serial_ip3106.h linux-mips-2.6.18.3/include/linux/serial_ip3106.h 19601 --- linux-2.6.18.3/include/linux/serial_ip3106.h 2006-11-18 19:28:22.000000000 -0800 19602 +++ linux-mips-2.6.18.3/include/linux/serial_ip3106.h 2006-11-20 10:09:08.000000000 -0800 17213 19603 @@ -78,4 +78,16 @@ 17214 19604 #define IP3106_UART_FIFO_RXFIFO 0x00001F00 … … 17228 19618 + 17229 19619 #endif 17230 diff -Naur linux-2.6.18. 2/mm/memory.c linux-mips-2.6.18.2/mm/memory.c17231 --- linux-2.6.18. 2/mm/memory.c 2006-11-03 17:33:58.000000000 -080017232 +++ linux-mips-2.6.18. 2/mm/memory.c 2006-11-04 14:51:12.000000000 -080019620 diff -Naur linux-2.6.18.3/mm/memory.c linux-mips-2.6.18.3/mm/memory.c 19621 --- linux-2.6.18.3/mm/memory.c 2006-11-18 19:28:22.000000000 -0800 19622 +++ linux-mips-2.6.18.3/mm/memory.c 2006-11-20 10:09:08.000000000 -0800 17233 19623 @@ -1407,7 +1407,7 @@ 17234 19624 return pte; … … 17270 19660 new_page = page; 17271 19661 anon = 1; 17272 diff -Naur linux-2.6.18. 2/sound/oss/Kconfig linux-mips-2.6.18.2/sound/oss/Kconfig17273 --- linux-2.6.18. 2/sound/oss/Kconfig 2006-11-03 17:33:58.000000000 -080017274 +++ linux-mips-2.6.18. 2/sound/oss/Kconfig 2006-11-04 14:51:12.000000000 -080019662 diff -Naur linux-2.6.18.3/sound/oss/Kconfig linux-mips-2.6.18.3/sound/oss/Kconfig 19663 --- linux-2.6.18.3/sound/oss/Kconfig 2006-11-18 19:28:22.000000000 -0800 19664 +++ linux-mips-2.6.18.3/sound/oss/Kconfig 2006-11-20 10:09:08.000000000 -0800 17275 19665 @@ -132,6 +132,13 @@ 17276 19666 select SND_AC97_CODEC … … 17287 19677 tristate "Trident 4DWave DX/NX, SiS 7018 or ALi 5451 PCI Audio Core" 17288 19678 depends on SOUND_PRIME && PCI 17289 diff -Naur linux-2.6.18. 2/sound/oss/Makefile linux-mips-2.6.18.2/sound/oss/Makefile17290 --- linux-2.6.18. 2/sound/oss/Makefile 2006-11-03 17:33:58.000000000 -080017291 +++ linux-mips-2.6.18. 2/sound/oss/Makefile 2006-11-04 14:51:12.000000000 -080019679 diff -Naur linux-2.6.18.3/sound/oss/Makefile linux-mips-2.6.18.3/sound/oss/Makefile 19680 --- linux-2.6.18.3/sound/oss/Makefile 2006-11-18 19:28:22.000000000 -0800 19681 +++ linux-mips-2.6.18.3/sound/oss/Makefile 2006-11-20 10:09:08.000000000 -0800 17292 19682 @@ -66,6 +66,7 @@ 17293 19683 obj-$(CONFIG_SOUND_VRC5477) += nec_vrc5477.o ac97_codec.o … … 17298 19688 obj-$(CONFIG_SOUND_FUSION) += cs46xx.o ac97_codec.o 17299 19689 obj-$(CONFIG_SOUND_MAESTRO) += maestro.o 17300 diff -Naur linux-2.6.18. 2/sound/oss/au1550_i2s.c linux-mips-2.6.18.2/sound/oss/au1550_i2s.c17301 --- linux-2.6.18. 2/sound/oss/au1550_i2s.c 1969-12-31 16:00:00.000000000 -080017302 +++ linux-mips-2.6.18. 2/sound/oss/au1550_i2s.c 2006-11-04 14:51:12.000000000 -080019690 diff -Naur linux-2.6.18.3/sound/oss/au1550_i2s.c linux-mips-2.6.18.3/sound/oss/au1550_i2s.c 19691 --- linux-2.6.18.3/sound/oss/au1550_i2s.c 1969-12-31 16:00:00.000000000 -0800 19692 +++ linux-mips-2.6.18.3/sound/oss/au1550_i2s.c 2006-11-20 10:09:08.000000000 -0800 17303 19693 @@ -0,0 +1,2029 @@ 17304 19694 +/*
Note:
See TracChangeset
for help on using the changeset viewer.