Changeset 715c21d for patches


Ignore:
Timestamp:
Nov 20, 2006, 10:18:42 PM (18 years ago)
Author:
Jim Gifford <clfs@…>
Branches:
clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
Children:
5d65b1a
Parents:
d080051
Message:

Added: Linux 2.6.18.3 Patches

Location:
patches
Files:
1 added
4 moved

Legend:

Unmodified
Added
Removed
  • patches/linux-2.6.18.3-mips-1.patch

    rd080051 r715c21d  
    11Submitted By: Jim Gifford (patches at jg555 dot com)
    2 Date: 2006-11-05
    3 Initial Package Version: 2.6.18.2
     2Date: 2006-11-20
     3Initial Package Version: 2.6.18.3
    44Origin: Linux-MIPS
    55Upstream Status: http://www.linux-mips.org/pub/linux/mips/kernel/v2.6/
    66
    7 diff -Naur linux-2.6.18.2/Documentation/mips/time.README linux-mips-2.6.18.2/Documentation/mips/time.README
    8 --- linux-2.6.18.2/Documentation/mips/time.README       2006-11-03 17:33:58.000000000 -0800
    9 +++ linux-mips-2.6.18.2/Documentation/mips/time.README  2006-11-04 14:51:12.000000000 -0800
     7diff -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
    1010@@ -63,7 +63,7 @@
    1111   a) board_time_init - a function pointer.  Invoked at the beginnig of
     
    4444             or use cpu counter as timer interrupt source)
    4545 
    46 diff -Naur linux-2.6.18.2/Makefile linux-mips-2.6.18.2/Makefile
    47 --- linux-2.6.18.2/Makefile     2006-11-03 17:33:58.000000000 -0800
    48 +++ linux-mips-2.6.18.2/Makefile        2006-11-04 14:51:12.000000000 -0800
     46diff -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
    4949@@ -149,10 +149,7 @@
    5050 # then ARCH is assigned, getting whatever value it gets normally, and
     
    5959 # Cross compiling and selecting different set of gcc/bin-utils
    6060 # ---------------------------------------------------------------------------
    61 diff -Naur linux-2.6.18.2/arch/mips/Kconfig linux-mips-2.6.18.2/arch/mips/Kconfig
    62 --- linux-2.6.18.2/arch/mips/Kconfig    2006-11-03 17:33:58.000000000 -0800
    63 +++ linux-mips-2.6.18.2/arch/mips/Kconfig       2006-11-04 14:51:12.000000000 -0800
     61diff -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
    6464@@ -126,7 +126,6 @@
    6565        select IRQ_CPU
     
    7070        select SYS_SUPPORTS_32BIT_KERNEL
    7171        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
    7375        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
    7578        select SYS_SUPPORTS_BIG_ENDIAN
    7679-       select ARCH_SPARSEMEM_ENABLE
     
    148151          This enables support for systems with more than one CPU. If you have
    149152          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
     165diff -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
    153168@@ -63,7 +63,9 @@
    154169 ifdef CONFIG_BUILD_ELF64
     
    190205 
    191206 #
    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
     207diff -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 
     235diff -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 
     267diff -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
    195270@@ -6,4 +6,3 @@
    196271 # Makefile for the Alchemy Semiconductor Db1x00 board.
     
    198273 lib-y := init.o board_setup.o irqmap.o
    199274-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.c
    201 --- linux-2.6.18.2/arch/mips/au1000/db1x00/mirage_ts.c  2006-11-03 17:33:58.000000000 -0800
    202 +++ linux-mips-2.6.18.2/arch/mips/au1000/db1x00/mirage_ts.c     1969-12-31 16:00:00.000000000 -0800
     275diff -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
    203278@@ -1,260 +0,0 @@
    204279-/*
     
    462537-module_exit(ts_mirage_exit);
    463538-
    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
     539diff -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 }
     658diff -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
    467661@@ -51,8 +51,8 @@
    468662 
     
    476670        /* Enable timer */
    477671        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_defconfig
    479 --- linux-2.6.18.2/arch/mips/configs/e55_defconfig      2006-11-03 17:33:58.000000000 -0800
    480 +++ linux-mips-2.6.18.2/arch/mips/configs/e55_defconfig 2006-11-04 14:51:12.000000000 -0800
     672diff -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
    481675@@ -1,7 +1,7 @@
    482676 #
     
    530724 #
    531725 # 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_defconfig
    533 --- linux-2.6.18.2/arch/mips/configs/mpc30x_defconfig   2006-11-03 17:33:58.000000000 -0800
    534 +++ linux-mips-2.6.18.2/arch/mips/configs/mpc30x_defconfig      2006-11-04 14:51:12.000000000 -0800
     726diff -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
    535729@@ -1,7 +1,7 @@
    536730 #
     
    593787 #
    594788 # 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_defconfig
    596 --- linux-2.6.18.2/arch/mips/configs/workpad_defconfig  2006-11-03 17:33:58.000000000 -0800
    597 +++ linux-mips-2.6.18.2/arch/mips/configs/workpad_defconfig     2006-11-04 14:51:12.000000000 -0800
     789diff -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
    598792@@ -1,7 +1,7 @@
    599793 #
     
    647841 #
    648842 # 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
     843diff -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
     863diff -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 
     882diff -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;
     902diff -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
    652905@@ -22,7 +22,7 @@
    653906 #define offset(string, ptr, member) \
     
    659912        __asm__("\n@@@" string "%0" : : "i" (sizeof(size)))
    660913 #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.c
    662 --- linux-2.6.18.2/arch/mips/kernel/cpu-probe.c 2006-11-03 17:33:58.000000000 -0800
    663 +++ linux-mips-2.6.18.2/arch/mips/kernel/cpu-probe.c    2006-11-04 14:51:12.000000000 -0800
     914diff -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
    664917@@ -38,15 +38,40 @@
    665918 
     
    7721025                printk(" unavailable.\n");
    7731026                break;
    774 diff -Naur linux-2.6.18.2/arch/mips/kernel/head.S linux-mips-2.6.18.2/arch/mips/kernel/head.S
    775 --- linux-2.6.18.2/arch/mips/kernel/head.S      2006-11-03 17:33:58.000000000 -0800
    776 +++ linux-mips-2.6.18.2/arch/mips/kernel/head.S 2006-11-04 14:51:12.000000000 -0800
     1027diff -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
    7771030@@ -189,7 +189,8 @@
    7781031 
     
    7851038        PTR_SUBU        sp, 4 * SZREG           # init stack pointer
    7861039 
    787 diff -Naur linux-2.6.18.2/arch/mips/kernel/irixsig.c linux-mips-2.6.18.2/arch/mips/kernel/irixsig.c
    788 --- linux-2.6.18.2/arch/mips/kernel/irixsig.c   2006-11-03 17:33:58.000000000 -0800
    789 +++ linux-mips-2.6.18.2/arch/mips/kernel/irixsig.c      2006-11-04 14:51:12.000000000 -0800
     1040diff -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
    7901043@@ -17,6 +17,7 @@
    7911044 
     
    9041157 
    9051158 /* 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 @@
     1159diff -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.
     1211diff -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 @@
    9101838 asmlinkage int sys32_personality(unsigned long personality)
    9111839 {
     
    9181846        ret = sys_personality(personality);
    9191847        if (ret == PER_LINUX32)
    920 @@ -1296,9 +1298,3 @@
     1848@@ -1296,9 +766,3 @@
    9211849        return do_fork(clone_flags, newsp, &regs, 0,
    9221850                       parent_tidptr, child_tidptr);
     
    9281856-       sys_set_thread_area(AA(addr));
    9291857-}
    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.c
    931 --- linux-2.6.18.2/arch/mips/kernel/mips-mt.c   2006-11-03 17:33:58.000000000 -0800
    932 +++ linux-mips-2.6.18.2/arch/mips/kernel/mips-mt.c      2006-11-04 14:51:12.000000000 -0800
     1858diff -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
    9331861@@ -96,6 +96,10 @@
    9341862                goto out_unlock;
     
    9541882        cpus_and(mask, p->thread.user_cpus_allowed, cpu_possible_map);
    9551883 
    956 diff -Naur linux-2.6.18.2/arch/mips/kernel/proc.c linux-mips-2.6.18.2/arch/mips/kernel/proc.c
    957 --- linux-2.6.18.2/arch/mips/kernel/proc.c      2006-11-03 17:33:58.000000000 -0800
    958 +++ linux-mips-2.6.18.2/arch/mips/kernel/proc.c 2006-11-04 14:51:12.000000000 -0800
     1884diff -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
    9591887@@ -89,9 +89,9 @@
    9601888 
     
    9911919                      cpu_has_divec ? "yes" : "no");
    9921920        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.c
    994 --- linux-2.6.18.2/arch/mips/kernel/process.c   2006-11-03 17:33:58.000000000 -0800
    995 +++ linux-mips-2.6.18.2/arch/mips/kernel/process.c      2006-11-04 14:51:12.000000000 -0800
     1921diff -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
    9961924@@ -114,7 +114,7 @@
    9971925        status |= KU_USER;
     
    11882116+}
    11892117+#endif
    1190 diff -Naur linux-2.6.18.2/arch/mips/kernel/ptrace.c linux-mips-2.6.18.2/arch/mips/kernel/ptrace.c
    1191 --- linux-2.6.18.2/arch/mips/kernel/ptrace.c    2006-11-03 17:33:58.000000000 -0800
    1192 +++ linux-mips-2.6.18.2/arch/mips/kernel/ptrace.c       2006-11-04 14:51:12.000000000 -0800
     2118diff -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
    11932121@@ -20,12 +20,12 @@
    11942122 #include <linux/mm.h>
     
    12992227+                                   regs->regs[6], regs->regs[7]);
    13002228 }
    1301 diff -Naur linux-2.6.18.2/arch/mips/kernel/ptrace32.c linux-mips-2.6.18.2/arch/mips/kernel/ptrace32.c
    1302 --- linux-2.6.18.2/arch/mips/kernel/ptrace32.c  2006-11-03 17:33:58.000000000 -0800
    1303 +++ linux-mips-2.6.18.2/arch/mips/kernel/ptrace32.c     2006-11-04 14:51:12.000000000 -0800
     2229diff -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
    13042232@@ -175,7 +175,9 @@
    13052233                        unsigned int mtflags;
     
    13202248                                unsigned int vpflags = dvpe();
    13212249                                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.S
    1323 --- linux-2.6.18.2/arch/mips/kernel/r4k_switch.S        2006-11-03 17:33:58.000000000 -0800
    1324 +++ linux-mips-2.6.18.2/arch/mips/kernel/r4k_switch.S   2006-11-04 14:51:12.000000000 -0800
     2250diff -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
    13252253@@ -85,7 +85,12 @@
    13262254        move    $28, a2
     
    13362264 #ifdef CONFIG_MIPS_MT_SMTC
    13372265        /* 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.S
    1339 --- linux-2.6.18.2/arch/mips/kernel/scall32-o32.S       2006-11-03 17:33:58.000000000 -0800
    1340 +++ linux-mips-2.6.18.2/arch/mips/kernel/scall32-o32.S  2006-11-04 14:51:12.000000000 -0800
     2266diff -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
    13412269@@ -662,6 +662,8 @@
    13422270        sys     sys_tee                 4
     
    13482276 
    13492277        /* 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.S
    1351 --- linux-2.6.18.2/arch/mips/kernel/scall64-64.S        2006-11-03 17:33:58.000000000 -0800
    1352 +++ linux-mips-2.6.18.2/arch/mips/kernel/scall64-64.S   2006-11-04 14:51:12.000000000 -0800
     2278diff -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
    13532281@@ -466,3 +466,5 @@
    13542282        PTR     sys_tee                         /* 5265 */
     
    13572285+       PTR     sys_set_robust_list
    13582286+       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
     2287diff -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
    13622318@@ -247,7 +247,7 @@
    13632319        PTR     sys_capset
     
    13782334        PTR     sys_swapon
    13792335        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
    13802345@@ -390,5 +390,7 @@
    13812346        PTR     sys_splice
     
    13872352+       PTR     compat_sys_set_robust_list
    13882353+       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.S
    1390 --- linux-2.6.18.2/arch/mips/kernel/scall64-o32.S       2006-11-03 17:33:58.000000000 -0800
    1391 +++ linux-mips-2.6.18.2/arch/mips/kernel/scall64-o32.S  2006-11-04 14:51:12.000000000 -0800
     2354diff -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
    13922357@@ -226,7 +226,7 @@
    13932358        PTR     sys_ni_syscall                  /* was sys_stat */
     
    14152380+       PTR     compat_sys_get_robust_list      /* 4310 */
    14162381        .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.c
    1418 --- linux-2.6.18.2/arch/mips/kernel/signal.c    2006-11-03 17:33:58.000000000 -0800
    1419 +++ linux-mips-2.6.18.2/arch/mips/kernel/signal.c       2006-11-04 14:51:12.000000000 -0800
     2382diff -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
    14202385@@ -424,15 +424,11 @@
    14212386        if (!user_mode(regs))
     
    14542419 
    14552420        /*
    1456 diff -Naur linux-2.6.18.2/arch/mips/kernel/signal32.c linux-mips-2.6.18.2/arch/mips/kernel/signal32.c
    1457 --- linux-2.6.18.2/arch/mips/kernel/signal32.c  2006-11-03 17:33:58.000000000 -0800
    1458 +++ linux-mips-2.6.18.2/arch/mips/kernel/signal32.c     2006-11-04 14:51:12.000000000 -0800
     2421diff -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
    14592424@@ -815,9 +815,6 @@
    14602425        if (!user_mode(regs))
     
    14872452 
    14882453        /*
    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.c
    1490 --- linux-2.6.18.2/arch/mips/kernel/smp-mt.c    2006-11-03 17:33:58.000000000 -0800
    1491 +++ linux-mips-2.6.18.2/arch/mips/kernel/smp-mt.c       2006-11-04 14:51:12.000000000 -0800
     2454diff -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
    14922457@@ -203,7 +203,7 @@
    14932458                                write_vpe_c0_config( read_c0_config());
     
    14992464                                /* Propagate Config7 */
    15002465                                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.c
    1502 --- linux-2.6.18.2/arch/mips/kernel/smp.c       2006-11-03 17:33:58.000000000 -0800
    1503 +++ linux-mips-2.6.18.2/arch/mips/kernel/smp.c  2006-11-04 14:51:12.000000000 -0800
     2466diff -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
    15042469@@ -467,14 +467,18 @@
    15052470 
     
    15262491 
    15272492        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.S
    1529 --- linux-2.6.18.2/arch/mips/kernel/smtc-asm.S  2006-11-03 17:33:58.000000000 -0800
    1530 +++ linux-mips-2.6.18.2/arch/mips/kernel/smtc-asm.S     2006-11-04 14:51:12.000000000 -0800
     2493diff -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
    15312496@@ -8,7 +8,7 @@
    15322497 #include <asm/regdef.h>
     
    15382503 /*
    15392504  * "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.c
    1541 --- linux-2.6.18.2/arch/mips/kernel/syscall.c   2006-11-03 17:33:58.000000000 -0800
    1542 +++ linux-mips-2.6.18.2/arch/mips/kernel/syscall.c      2006-11-04 14:51:12.000000000 -0800
     2505diff -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
    15432508@@ -263,7 +263,7 @@
    15442509        return error;
     
    15592524 
    15602525 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.c
    1562 --- linux-2.6.18.2/arch/mips/kernel/traps.c     2006-11-03 17:33:58.000000000 -0800
    1563 +++ linux-mips-2.6.18.2/arch/mips/kernel/traps.c        2006-11-04 14:51:12.000000000 -0800
     2526diff -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
    15642529@@ -20,6 +20,7 @@
    15652530 #include <linux/spinlock.h>
     
    18032768                                force_sig(sig, current);
    18042769 #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.S
    1806 --- linux-2.6.18.2/arch/mips/kernel/vmlinux.lds.S       2006-11-03 17:33:58.000000000 -0800
    1807 +++ linux-mips-2.6.18.2/arch/mips/kernel/vmlinux.lds.S  2006-11-04 14:51:12.000000000 -0800
     2770diff -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
    18082773@@ -50,6 +50,16 @@
    18092774   /* writeable */
     
    18232788 
    18242789     *(.data)
    1825 diff -Naur linux-2.6.18.2/arch/mips/kernel/vpe.c linux-mips-2.6.18.2/arch/mips/kernel/vpe.c
    1826 --- linux-2.6.18.2/arch/mips/kernel/vpe.c       2006-11-03 17:33:58.000000000 -0800
    1827 +++ linux-mips-2.6.18.2/arch/mips/kernel/vpe.c  2006-11-04 14:51:12.000000000 -0800
     2790diff -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
    18282793@@ -768,10 +768,16 @@
    18292794         */
     
    18432808         write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() | VPECONF0_VPA);
    18442809 
    1845 diff -Naur linux-2.6.18.2/arch/mips/lib/Makefile linux-mips-2.6.18.2/arch/mips/lib/Makefile
    1846 --- linux-2.6.18.2/arch/mips/lib/Makefile       2006-11-03 17:33:58.000000000 -0800
    1847 +++ linux-mips-2.6.18.2/arch/mips/lib/Makefile  2006-11-04 14:51:12.000000000 -0800
     2810diff -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
    18482813@@ -5,8 +5,6 @@
    18492814 lib-y  += csum_partial_copy.o memcpy.o promlib.o strlen_user.o strncpy_user.o \
     
    18552820 lib-y += ashldi3.o ashrdi3.o lshrdi3.o
    18562821 
    1857 diff -Naur linux-2.6.18.2/arch/mips/lib/iomap.c linux-mips-2.6.18.2/arch/mips/lib/iomap.c
    1858 --- linux-2.6.18.2/arch/mips/lib/iomap.c        2006-11-03 17:33:58.000000000 -0800
    1859 +++ linux-mips-2.6.18.2/arch/mips/lib/iomap.c   1969-12-31 16:00:00.000000000 -0800
     2822diff -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
    18602825@@ -1,78 +0,0 @@
    18612826-/*
     
    19372902-EXPORT_SYMBOL(pci_iomap);
    19382903-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.c
    1940 --- linux-2.6.18.2/arch/mips/lib-32/dump_tlb.c  2006-11-03 17:33:58.000000000 -0800
    1941 +++ linux-mips-2.6.18.2/arch/mips/lib-32/dump_tlb.c     2006-11-04 14:51:12.000000000 -0800
     2904diff -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
    19422907@@ -40,8 +40,6 @@
    19432908                return "256Mb";
     
    19492914 
    19502915 #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.c
    1952 --- linux-2.6.18.2/arch/mips/lib-64/dump_tlb.c  2006-11-03 17:33:58.000000000 -0800
    1953 +++ linux-mips-2.6.18.2/arch/mips/lib-64/dump_tlb.c     2006-11-04 14:51:12.000000000 -0800
     2916diff -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
    19542919@@ -31,8 +31,6 @@
    19552920        case PM_256M:   return "256Mb";
     
    19862951        addr = (unsigned long) address;
    19872952        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.c
    1989 --- linux-2.6.18.2/arch/mips/math-emu/cp1emu.c  2006-11-03 17:33:58.000000000 -0800
    1990 +++ linux-mips-2.6.18.2/arch/mips/math-emu/cp1emu.c     2006-11-04 14:51:12.000000000 -0800
     2953diff -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
    19912956@@ -38,8 +38,6 @@
    19922957 
     
    20172982                if (sig)
    20182983                        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.c
    2020 --- linux-2.6.18.2/arch/mips/mips-boards/atlas/atlas_int.c      2006-11-03 17:33:58.000000000 -0800
    2021 +++ linux-mips-2.6.18.2/arch/mips/mips-boards/atlas/atlas_int.c 2006-11-04 14:51:12.000000000 -0800
     2984diff -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
    20222987@@ -1,6 +1,8 @@
    20232988 /*
     
    22063171+               setup_irq(MIPSCPU_INT_BASE + MIPSCPU_INT_ATLAS, &atlasirq);
    22073172+}
    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.c
    2209 --- linux-2.6.18.2/arch/mips/mips-boards/atlas/atlas_setup.c    2006-11-03 17:33:58.000000000 -0800
    2210 +++ linux-mips-2.6.18.2/arch/mips/mips-boards/atlas/atlas_setup.c       2006-11-04 14:51:12.000000000 -0800
     3173diff -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
    22113176@@ -77,7 +77,7 @@
    22123177 #else
     
    22183183        s.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_AUTO_IRQ;
    22193184        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.c
    2221 --- linux-2.6.18.2/arch/mips/mips-boards/generic/memory.c       2006-11-03 17:33:58.000000000 -0800
    2222 +++ linux-mips-2.6.18.2/arch/mips/mips-boards/generic/memory.c  2006-11-04 14:51:12.000000000 -0800
     3185diff -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
    22233188@@ -176,7 +176,7 @@
    22243189                if (boot_mem_map.map[i].type != BOOT_MEM_ROM_DATA)
     
    22303195                              + boot_mem_map.map[i].size) {
    22313196                        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.c
    2233 --- linux-2.6.18.2/arch/mips/mips-boards/generic/time.c 2006-11-03 17:33:58.000000000 -0800
    2234 +++ linux-mips-2.6.18.2/arch/mips/mips-boards/generic/time.c    2006-11-04 14:51:12.000000000 -0800
     3197diff -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
    22353200@@ -41,8 +41,13 @@
    22363201 
     
    23413306 static unsigned int __init estimate_cpu_frequency(void)
    23423307 {
    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.c
    2344 --- linux-2.6.18.2/arch/mips/mips-boards/malta/malta_int.c      2006-11-03 17:33:58.000000000 -0800
    2345 +++ linux-mips-2.6.18.2/arch/mips/mips-boards/malta/malta_int.c 2006-11-04 14:51:12.000000000 -0800
     3308diff -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
    23463311@@ -208,23 +208,23 @@
    23473312        unsigned int a0 = 7;
     
    23743339        return a0;
    23753340 #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.c
    2377 --- linux-2.6.18.2/arch/mips/mips-boards/sim/sim_time.c 2006-11-03 17:33:58.000000000 -0800
    2378 +++ linux-mips-2.6.18.2/arch/mips/mips-boards/sim/sim_time.c    2006-11-04 14:51:12.000000000 -0800
     3341diff -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
    23793344@@ -103,7 +103,7 @@
    23803345 
     
    23863351 static unsigned int __init estimate_cpu_frequency(void)
    23873352 {
    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.c
    2389 --- linux-2.6.18.2/arch/mips/mm/c-r3k.c 2006-11-03 17:33:58.000000000 -0800
    2390 +++ linux-mips-2.6.18.2/arch/mips/mm/c-r3k.c    2006-11-04 14:51:12.000000000 -0800
     3353diff -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
    23913356@@ -335,7 +335,7 @@
    23923357        flush_cache_mm = r3k_flush_cache_mm;
     
    23983363 
    23993364        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.c
    2401 --- linux-2.6.18.2/arch/mips/mm/c-r4k.c 2006-11-03 17:33:58.000000000 -0800
    2402 +++ linux-mips-2.6.18.2/arch/mips/mm/c-r4k.c    2006-11-04 14:51:12.000000000 -0800
     3365diff -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
    24033368@@ -475,7 +475,7 @@
    24043369                }
     
    24373402 
    24383403        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 @@
     3404diff -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 @@
    24433416 }
    24443417 
     
    24673440  * dcache first, then invalidate the icache.  If the page isn't
    24683441  * executable, nothing is required.
    2469 @@ -173,8 +193,11 @@
     3442@@ -173,8 +194,11 @@
    24703443        /*
    24713444         * Bumping the ASID is probably cheaper than the flush ...
     
    24813454 
    24823455 #ifdef CONFIG_SMP
    2483 @@ -210,26 +233,6 @@
     3456@@ -210,26 +234,25 @@
    24843457        __attribute__((alias("local_sb1_flush_cache_page")));
    24853458 #endif
     
    24933466-static inline void __sb1_flush_icache_range(unsigned long start,
    24943467-       unsigned long end)
    2495 -{
     3468+#ifdef CONFIG_SMP
     3469+static void sb1_flush_cache_data_page_ipi(void *info)
     3470 {
    24963471-       start &= ~(icache_line_size - 1);
    24973472-       end = (end + icache_line_size - 1) & ~(icache_line_size - 1);
    2498 -
     3473+       unsigned long start = (unsigned long)info;
     3474 
    24993475-       while (start != end) {
    25003476-               cache_set_op(Index_Invalidate_I, start & icache_index_mask);
     
    25033479-       mispredict();
    25043480-       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
    25073495 
    25083496 /*
    25093497  * Invalidate all caches on this CPU
    2510 @@ -326,9 +329,12 @@
     3498@@ -326,9 +349,12 @@
    25113499         * If there's a context, bump the ASID (cheaper than a flush,
    25123500         * since we don't know VAs!)
     
    25243512 
    25253513 #ifdef CONFIG_SMP
    2526 @@ -520,7 +526,7 @@
     3514@@ -520,7 +546,7 @@
    25273515 
    25283516        /* These routines are for Icache coherence with the Dcache */
     
    25333521 
    25343522        /* 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 }
     3539diff -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
    25383542@@ -382,7 +382,7 @@
    25393543                flush_cache_mm          = (void *) tx39h_flush_icache_all;
     
    25543558 
    25553559                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.c
    2557 --- linux-2.6.18.2/arch/mips/mm/cache.c 2006-11-03 17:33:58.000000000 -0800
    2558 +++ linux-mips-2.6.18.2/arch/mips/mm/cache.c    2006-11-04 14:51:12.000000000 -0800
     3560diff -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
    25593563@@ -25,7 +25,7 @@
    25603564 void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page,
     
    25993603        }
    26003604 }
    2601 diff -Naur linux-2.6.18.2/arch/mips/mm/fault.c linux-mips-2.6.18.2/arch/mips/mm/fault.c
    2602 --- linux-2.6.18.2/arch/mips/mm/fault.c 2006-11-03 17:33:58.000000000 -0800
    2603 +++ linux-mips-2.6.18.2/arch/mips/mm/fault.c    2006-11-04 14:51:12.000000000 -0800
     3605diff -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
    26043608@@ -89,7 +89,7 @@
    26053609                if (!(vma->vm_flags & VM_WRITE))
     
    26113615        }
    26123616 
    2613 diff -Naur linux-2.6.18.2/arch/mips/mm/init.c linux-mips-2.6.18.2/arch/mips/mm/init.c
    2614 --- linux-2.6.18.2/arch/mips/mm/init.c  2006-11-03 17:33:58.000000000 -0800
    2615 +++ linux-mips-2.6.18.2/arch/mips/mm/init.c     2006-11-04 14:51:12.000000000 -0800
     3617diff -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
    26163620@@ -30,11 +30,39 @@
    26173621 #include <asm/cachectl.h>
     
    28843888        max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;
    28853889        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.c
    2887 --- linux-2.6.18.2/arch/mips/mm/ioremap.c       2006-11-03 17:33:58.000000000 -0800
    2888 +++ linux-mips-2.6.18.2/arch/mips/mm/ioremap.c  2006-11-04 14:51:12.000000000 -0800
     3890diff -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
    28893893@@ -176,7 +176,7 @@
    28903894 
     
    28963900        struct vm_struct *p;
    28973901 
    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.c
    2899 --- linux-2.6.18.2/arch/mips/mm/pg-r4k.c        2006-11-03 17:33:58.000000000 -0800
    2900 +++ linux-mips-2.6.18.2/arch/mips/mm/pg-r4k.c   2006-11-04 14:51:12.000000000 -0800
     3902diff -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
    29013905@@ -270,6 +270,20 @@
    29023906        emit_instruction(mi);
     
    29623966        if (R4600_V2_HIT_CACHEOP_WAR && cpu_is_r4600_v2_x())
    29633967                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.c
    2965 --- linux-2.6.18.2/arch/mips/mm/pgtable-32.c    2006-11-03 17:33:58.000000000 -0800
    2966 +++ linux-mips-2.6.18.2/arch/mips/mm/pgtable-32.c       2006-11-04 14:51:12.000000000 -0800
     3968diff -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
    29673971@@ -31,9 +31,10 @@
    29683972 
     
    29943998         * Permanent kmaps:
    29953999         */
    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.c
    2997 --- linux-2.6.18.2/arch/mips/mm/pgtable-64.c    2006-11-03 17:33:58.000000000 -0800
    2998 +++ linux-mips-2.6.18.2/arch/mips/mm/pgtable-64.c       2006-11-04 14:51:12.000000000 -0800
     4000diff -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
    29994003@@ -8,6 +8,7 @@
    30004004  */
     
    30234027+       fixrange_init(vaddr, 0, pgd_base);
    30244028 }
    3025 diff -Naur linux-2.6.18.2/arch/mips/mm/tlbex.c linux-mips-2.6.18.2/arch/mips/mm/tlbex.c
    3026 --- linux-2.6.18.2/arch/mips/mm/tlbex.c 2006-11-03 17:33:58.000000000 -0800
    3027 +++ linux-mips-2.6.18.2/arch/mips/mm/tlbex.c    2006-11-04 14:51:12.000000000 -0800
     4029diff -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
    30284032@@ -102,7 +102,7 @@
    30294033        insn_addu, insn_addiu, insn_and, insn_andi, insn_beq,
     
    30744078 
    30754079        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
     4080diff -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
     4092diff -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
     4107diff -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 = &eth0_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 = &eth1_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 = &eth2_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+       &eth0_device,
     4255+#endif
     4256+#ifdef CONFIG_MV643XX_ETH_1
     4257+       &eth1_device,
     4258+#endif
     4259+#ifdef CONFIG_MV643XX_ETH_2
     4260+       &eth2_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) */
     4346diff -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)
     4418diff -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
     4427diff -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
     4442diff -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 = &eth0_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 = &eth1_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 = &eth2_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+       &eth0_device,
     4590+#endif
     4591+#ifdef CONFIG_MV643XX_ETH_1
     4592+       &eth1_device,
     4593+#endif
     4594+#ifdef CONFIG_MV643XX_ETH_2
     4595+       &eth2_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) */
     4681diff -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
     4761diff -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
     4773diff -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
     4785diff -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
     4800diff -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 = &eth0_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 = &eth1_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+       &eth0_device,
     4919+#endif
     4920+#ifdef CONFIG_MV643XX_ETH_1
     4921+       &eth1_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) */
     5005diff -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
     5089diff -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
     5149diff -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 }
     5186diff -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__ */
     5201diff -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);
     5223diff -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
    30795226@@ -30,16 +30,18 @@
    30805227 #define M_COUNTER_OVERFLOW             (1UL      << 31)
     
    31175264                return counters >> 1;
    31185265 #endif
    3119 diff -Naur linux-2.6.18.2/arch/mips/pci/Makefile linux-mips-2.6.18.2/arch/mips/pci/Makefile
    3120 --- linux-2.6.18.2/arch/mips/pci/Makefile       2006-11-03 17:33:58.000000000 -0800
    3121 +++ linux-mips-2.6.18.2/arch/mips/pci/Makefile  2006-11-04 14:51:12.000000000 -0800
     5266diff -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
    31225269@@ -28,7 +28,7 @@
    31235270 obj-$(CONFIG_LASAT)            += pci-lasat.o
     
    31255272 obj-$(CONFIG_MIPS_COBALT)      += fixup-cobalt.o
    31265273-obj-$(CONFIG_MIPS_EV96100)     += fixup-ev64120.o
    3127 +obj-$(CONFIG_MIPS_EV64120)     += fixup-ev64120.o
     5274+obj-$(CONFIG_MIPS_EV64120)     += pci-ev64120.o
    31285275 obj-$(CONFIG_MIPS_EV96100)     += fixup-ev96100.o pci-ev96100.o
    31295276 obj-$(CONFIG_MIPS_ITE8172)     += fixup-ite8172g.o
    31305277 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.c
    3132 --- linux-2.6.18.2/arch/mips/pci/fixup-atlas.c  2006-11-03 17:33:58.000000000 -0800
    3133 +++ linux-mips-2.6.18.2/arch/mips/pci/fixup-atlas.c     2006-11-04 14:51:12.000000000 -0800
     5278diff -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
    31345281@@ -21,16 +21,16 @@
    31355282 
     
    31595306 static char irq_tab[][5] __initdata = {
    31605307        /*      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
     5308diff -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-}
     5346diff -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
    31645349@@ -2,7 +2,7 @@
    31655350  *  fixup-tb0219.c, The TANBAC TB0219 specific PCI fixups.
     
    31715356  *  This program is free software; you can redistribute it and/or modify
    31725357  *  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.c
    3174 --- linux-2.6.18.2/arch/mips/pci/ops-au1000.c   2006-11-03 17:33:58.000000000 -0800
    3175 +++ linux-mips-2.6.18.2/arch/mips/pci/ops-au1000.c      2006-11-04 14:51:12.000000000 -0800
     5358diff -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
    31765361@@ -110,7 +110,7 @@
    31775362        if (first_cfg) {
     
    31835368                        panic (KERN_ERR "PCI unable to get vm area\n");
    31845369                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
     5370diff -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+}
     5395diff -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
    31885398@@ -4,4 +4,5 @@
    31895399 
     
    31925402+obj-$(CONFIG_VT) += q-vga.o
    31935403 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.c
    3195 --- linux-2.6.18.2/arch/mips/qemu/q-setup.c     2006-11-03 17:33:58.000000000 -0800
    3196 +++ linux-mips-2.6.18.2/arch/mips/qemu/q-setup.c        2006-11-04 14:51:12.000000000 -0800
     5404diff -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
    31975407@@ -2,6 +2,7 @@
    31985408 #include <asm/io.h>
     
    32135423        qemu_reboot_setup();
    32145424 }
    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.c
    3216 --- linux-2.6.18.2/arch/mips/qemu/q-vga.c       1969-12-31 16:00:00.000000000 -0800
    3217 +++ linux-mips-2.6.18.2/arch/mips/qemu/q-vga.c  2006-11-04 14:51:12.000000000 -0800
     5425diff -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
    32185428@@ -0,0 +1,189 @@
    32195429+/*
     
    34065616+#endif
    34075617+}
    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
     5618diff -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;
     5651diff -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();
     5663diff -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
    34115666@@ -469,21 +469,6 @@
    34125667 
     
    34525707        }
    34535708 }
    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.c
    3455 --- linux-2.6.18.2/arch/mips/sibyte/bcm1480/smp.c       2006-11-03 17:33:58.000000000 -0800
    3456 +++ linux-mips-2.6.18.2/arch/mips/sibyte/bcm1480/smp.c  2006-11-04 14:51:12.000000000 -0800
     5709diff -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
    34575712@@ -34,21 +34,21 @@
    34585713  * independent of board/firmware
     
    34805735        IOADDR(A_BCM1480_IMR_CPU1_BASE + R_BCM1480_IMR_MAILBOX_0_CPU),
    34815736        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.c
    3483 --- linux-2.6.18.2/arch/mips/sibyte/sb1250/irq.c        2006-11-03 17:33:58.000000000 -0800
    3484 +++ linux-mips-2.6.18.2/arch/mips/sibyte/sb1250/irq.c   2006-11-04 14:51:12.000000000 -0800
     5737diff -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
    34855740@@ -419,21 +419,6 @@
    34865741 
     
    35265781+               spurious_interrupt(regs);
    35275782 }
    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.c
    3529 --- linux-2.6.18.2/arch/mips/tx4927/common/tx4927_setup.c       2006-11-03 17:33:58.000000000 -0800
    3530 +++ linux-mips-2.6.18.2/arch/mips/tx4927/common/tx4927_setup.c  2006-11-04 14:51:12.000000000 -0800
     5783diff -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
    35315786@@ -53,19 +53,9 @@
    35325787 void dump_cp0(char *key);
     
    35495804 #ifdef CONFIG_TOSHIBA_RBTX4927
    35505805        {
    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.c
    3552 --- linux-2.6.18.2/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c     2006-11-03 17:33:58.000000000 -0800
    3553 +++ linux-mips-2.6.18.2/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c        2006-11-04 14:51:12.000000000 -0800
     5806diff -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
    35545809@@ -130,6 +130,7 @@
    35555810 #include <asm/ptrace.h>
     
    35605815 #include <linux/blkdev.h>
    35615816 #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.c
    3563 --- linux-2.6.18.2/arch/mips/tx4938/common/irq.c        2006-11-03 17:33:58.000000000 -0800
    3564 +++ linux-mips-2.6.18.2/arch/mips/tx4938/common/irq.c   2006-11-04 14:51:12.000000000 -0800
     5817diff -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
    35655820@@ -30,6 +30,7 @@
    35665821 #include <asm/irq.h>
     
    35715826 
    35725827 /**********************************************************************************/
    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.c
    3574 --- linux-2.6.18.2/arch/mips/tx4938/common/setup.c      2006-11-03 17:33:58.000000000 -0800
    3575 +++ linux-mips-2.6.18.2/arch/mips/tx4938/common/setup.c 2006-11-04 14:51:12.000000000 -0800
     5828diff -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
    35765831@@ -41,29 +41,10 @@
    35775832 void __init tx4938_time_init(void);
     
    36045859 }
    36055860 
    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.c
    3607 --- linux-2.6.18.2/arch/mips/tx4938/toshiba_rbtx4938/irq.c      2006-11-03 17:33:58.000000000 -0800
    3608 +++ linux-mips-2.6.18.2/arch/mips/tx4938/toshiba_rbtx4938/irq.c 2006-11-04 14:51:12.000000000 -0800
     5861diff -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
    36095864@@ -84,6 +84,7 @@
    36105865 #include <asm/ptrace.h>
     
    36155870 #include <asm/tx4938/rbtx4938.h>
    36165871 
    3617 diff -Naur linux-2.6.18.2/drivers/char/Kconfig linux-mips-2.6.18.2/drivers/char/Kconfig
    3618 --- linux-2.6.18.2/drivers/char/Kconfig 2006-11-03 17:33:58.000000000 -0800
    3619 +++ linux-mips-2.6.18.2/drivers/char/Kconfig    2006-11-04 14:51:12.000000000 -0800
     5872diff -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
    36205875@@ -357,23 +357,68 @@
    36215876          To compile this driver as a module, choose M here: the
     
    37285983        tristate "Commodore A2232 serial support (EXPERIMENTAL)"
    37295984        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/Makefile
    3731 --- linux-2.6.18.2/drivers/char/Makefile        2006-11-03 17:33:58.000000000 -0800
    3732 +++ linux-mips-2.6.18.2/drivers/char/Makefile   2006-11-04 14:51:12.000000000 -0800
     5985diff -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
    37335988@@ -31,6 +31,7 @@
    37345989 obj-$(CONFIG_A2232)            += ser_a2232.o generic_serial.o
     
    37586013 obj-$(CONFIG_NWBUTTON)         += nwbutton.o
    37596014 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.c
    3761 --- linux-2.6.18.2/drivers/char/au1000_gpio.c   1969-12-31 16:00:00.000000000 -0800
    3762 +++ linux-mips-2.6.18.2/drivers/char/au1000_gpio.c      2006-11-04 14:51:12.000000000 -0800
     6015diff -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
    37636018@@ -0,0 +1,266 @@
    37646019+/*
     
    40286283+module_init(au1000gpio_init);
    40296284+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.c
    4031 --- linux-2.6.18.2/drivers/char/au1000_ts.c     1969-12-31 16:00:00.000000000 -0800
    4032 +++ linux-mips-2.6.18.2/drivers/char/au1000_ts.c        2006-11-04 14:51:12.000000000 -0800
     6285diff -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
    40336288@@ -0,0 +1,677 @@
    40346289+/*
     
    47096964+module_init(au1000ts_init_module);
    47106965+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.c
    4712 --- linux-2.6.18.2/drivers/char/au1000_usbraw.c 1969-12-31 16:00:00.000000000 -0800
    4713 +++ linux-mips-2.6.18.2/drivers/char/au1000_usbraw.c    2006-11-04 14:51:12.000000000 -0800
     6966diff -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
    47146969@@ -0,0 +1,573 @@
    47156970+/*
     
    52867541+module_init(usbfn_raw_init);
    52877542+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.c
    5289 --- linux-2.6.18.2/drivers/char/au1000_usbtty.c 1969-12-31 16:00:00.000000000 -0800
    5290 +++ linux-mips-2.6.18.2/drivers/char/au1000_usbtty.c    2006-11-04 14:51:12.000000000 -0800
     7543diff -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
    52917546@@ -0,0 +1,761 @@
    52927547+/*
     
    60518306+module_init(usbfn_tty_init);
    60528307+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.c
    6054 --- linux-2.6.18.2/drivers/char/decserial.c     2006-11-03 17:33:58.000000000 -0800
    6055 +++ linux-mips-2.6.18.2/drivers/char/decserial.c        2006-11-04 14:51:12.000000000 -0800
     8308diff -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
    60568311@@ -14,86 +14,84 @@
    60578312  *      device. Added support for PROM console in drivers/char/tty_io.c
     
    61878442 
    61888443 #endif
    6189 diff -Naur linux-2.6.18.2/drivers/char/qtronix.c linux-mips-2.6.18.2/drivers/char/qtronix.c
    6190 --- linux-2.6.18.2/drivers/char/qtronix.c       2006-11-03 17:33:58.000000000 -0800
    6191 +++ linux-mips-2.6.18.2/drivers/char/qtronix.c  2006-11-04 14:51:12.000000000 -0800
     8444diff -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
    61928447@@ -534,8 +534,7 @@
    61938448                i--;
     
    62008455        }
    62018456        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.c
    6203 --- linux-2.6.18.2/drivers/char/rtc.c   2006-11-03 17:33:58.000000000 -0800
    6204 +++ linux-mips-2.6.18.2/drivers/char/rtc.c      2006-11-04 14:51:12.000000000 -0800
     8457diff -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
    62058460@@ -35,16 +35,16 @@
    62068461  *     1.09a   Pete Zaitcev: Sun SPARC
     
    62238478  *     1.12a   Maciej W. Rozycki: Handle memory-mapped chips properly.
    62248479  *     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.c
    6226 --- linux-2.6.18.2/drivers/char/sb1250_duart.c  1969-12-31 16:00:00.000000000 -0800
    6227 +++ linux-mips-2.6.18.2/drivers/char/sb1250_duart.c     2006-11-04 14:51:12.000000000 -0800
     8480diff -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
    62288483@@ -0,0 +1,910 @@
    62298484+/*
     
    71379392+
    71389393+#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/Makefile
    7140 --- linux-2.6.18.2/drivers/ide/mips/Makefile    2006-11-03 17:33:58.000000000 -0800
    7141 +++ linux-mips-2.6.18.2/drivers/ide/mips/Makefile       2006-11-04 14:51:12.000000000 -0800
     9394diff -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
    71429397@@ -1,4 +1,4 @@
    71439398 obj-$(CONFIG_BLK_DEV_IDE_SWARM)                += swarm.o
     
    71469401-EXTRA_CFLAGS    := -Idrivers/ide
    71479402+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
     9403diff -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;
     9422diff -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
    71519425@@ -83,10 +83,10 @@
    71529426        0xe4000000,
     
    71639437 #endif
    71649438        0xffffffff };
    7165 diff -Naur linux-2.6.18.2/drivers/mtd/maps/Kconfig linux-mips-2.6.18.2/drivers/mtd/maps/Kconfig
    7166 --- linux-2.6.18.2/drivers/mtd/maps/Kconfig     2006-11-03 17:33:58.000000000 -0800
    7167 +++ linux-mips-2.6.18.2/drivers/mtd/maps/Kconfig        2006-11-04 14:51:12.000000000 -0800
     9439diff -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
    71689442@@ -299,6 +299,18 @@
    71699443          Mapping for the Flaga digital module. If you don't have one, ignore
     
    71859459        tristate "CFI Flash device mapped on IBM 405LP Beech"
    71869460        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.c
    7188 --- linux-2.6.18.2/drivers/mtd/maps/lasat.c     2006-11-03 17:33:58.000000000 -0800
    7189 +++ linux-mips-2.6.18.2/drivers/mtd/maps/lasat.c        2006-11-04 14:51:12.000000000 -0800
     9461diff -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
    71909464@@ -7,7 +7,7 @@
    71919465  * modify it under the terms of the GNU General Public License version
     
    72069480        lasat_map.size = lasat_board_info.li_flash_size;
    72079481 
    7208 diff -Naur linux-2.6.18.2/drivers/net/Kconfig linux-mips-2.6.18.2/drivers/net/Kconfig
    7209 --- linux-2.6.18.2/drivers/net/Kconfig  2006-11-03 17:33:58.000000000 -0800
    7210 +++ linux-mips-2.6.18.2/drivers/net/Kconfig     2006-11-04 14:51:12.000000000 -0800
     9482diff -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
    72119485@@ -438,6 +438,14 @@
    72129486          This is the driver for the onboard card of MIPS Magnum 4000,
     
    73109584 
    73119585 #
    7312 diff -Naur linux-2.6.18.2/drivers/net/Makefile linux-mips-2.6.18.2/drivers/net/Makefile
    7313 --- linux-2.6.18.2/drivers/net/Makefile 2006-11-03 17:33:58.000000000 -0800
    7314 +++ linux-mips-2.6.18.2/drivers/net/Makefile    2006-11-04 14:51:12.000000000 -0800
     9586diff -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
    73159589@@ -114,6 +114,11 @@
    73169590 
     
    73259599 obj-$(CONFIG_PPP_ASYNC) += ppp_async.o
    73269600 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.c
    7328 --- linux-2.6.18.2/drivers/net/big_sur_ge.c     1969-12-31 16:00:00.000000000 -0800
    7329 +++ linux-mips-2.6.18.2/drivers/net/big_sur_ge.c        2006-11-04 14:51:12.000000000 -0800
     9601diff -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
    73309604@@ -0,0 +1,2005 @@
    73319605+/*
     
    933411608+MODULE_DESCRIPTION("PMC-Sierra Big Sur Ethernet MAC Driver");
    933511609+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.h
    9337 --- linux-2.6.18.2/drivers/net/big_sur_ge.h     1969-12-31 16:00:00.000000000 -0800
    9338 +++ linux-mips-2.6.18.2/drivers/net/big_sur_ge.h        2006-11-04 14:51:12.000000000 -0800
     11610diff -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
    933911613@@ -0,0 +1,713 @@
    934011614+/*
     
    1005112325+
    1005212326+#endif
    10053 diff -Naur linux-2.6.18.2/drivers/net/gt64240eth.c linux-mips-2.6.18.2/drivers/net/gt64240eth.c
    10054 --- linux-2.6.18.2/drivers/net/gt64240eth.c     1969-12-31 16:00:00.000000000 -0800
    10055 +++ linux-mips-2.6.18.2/drivers/net/gt64240eth.c        2006-11-04 14:51:12.000000000 -0800
     12327diff -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
    1005612330@@ -0,0 +1,1672 @@
    1005712331+/*
     
    1172714001+       return &gp->stats;
    1172814002+}
    11729 diff -Naur linux-2.6.18.2/drivers/net/gt64240eth.h linux-mips-2.6.18.2/drivers/net/gt64240eth.h
    11730 --- linux-2.6.18.2/drivers/net/gt64240eth.h     2006-11-03 17:33:58.000000000 -0800
    11731 +++ linux-mips-2.6.18.2/drivers/net/gt64240eth.h        2006-11-04 14:51:12.000000000 -0800
     14003diff -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
    1173214006@@ -9,6 +9,7 @@
    1173314007  * Copyright 2000 MontaVista Software Inc.
     
    1177014044 /* Bit definitions of the SMI Reg */
    1177114045 enum {
    11772 diff -Naur linux-2.6.18.2/drivers/net/ioc3-eth.c linux-mips-2.6.18.2/drivers/net/ioc3-eth.c
    11773 --- linux-2.6.18.2/drivers/net/ioc3-eth.c       2006-11-03 17:33:58.000000000 -0800
    11774 +++ linux-mips-2.6.18.2/drivers/net/ioc3-eth.c  2006-11-04 14:51:12.000000000 -0800
     14046diff -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
    1177514049@@ -5,7 +5,7 @@
    1177614050  *
     
    1189914173 
    1190014174 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.c
    11902 --- linux-2.6.18.2/drivers/net/titan_ge.c       1969-12-31 16:00:00.000000000 -0800
    11903 +++ linux-mips-2.6.18.2/drivers/net/titan_ge.c  2006-11-04 14:51:12.000000000 -0800
     14175diff -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
    1190414178@@ -0,0 +1,2071 @@
    1190514179+/*
     
    1397416248+module_init(titan_ge_init_module);
    1397516249+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.h
    13977 --- linux-2.6.18.2/drivers/net/titan_ge.h       1969-12-31 16:00:00.000000000 -0800
    13978 +++ linux-mips-2.6.18.2/drivers/net/titan_ge.h  2006-11-04 14:51:12.000000000 -0800
     16250diff -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
    1397916253@@ -0,0 +1,417 @@
    1398016254+#ifndef _TITAN_GE_H_
     
    1439516669+#endif                                 /* _TITAN_GE_H_ */
    1439616670+
    14397 diff -Naur linux-2.6.18.2/drivers/net/titan_mdio.c linux-mips-2.6.18.2/drivers/net/titan_mdio.c
    14398 --- linux-2.6.18.2/drivers/net/titan_mdio.c     1969-12-31 16:00:00.000000000 -0800
    14399 +++ linux-mips-2.6.18.2/drivers/net/titan_mdio.c        2006-11-04 14:51:12.000000000 -0800
     16671diff -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
    1440016674@@ -0,0 +1,217 @@
    1440116675+/*
     
    1461616890+}
    1461716891+
    14618 diff -Naur linux-2.6.18.2/drivers/net/titan_mdio.h linux-mips-2.6.18.2/drivers/net/titan_mdio.h
    14619 --- linux-2.6.18.2/drivers/net/titan_mdio.h     1969-12-31 16:00:00.000000000 -0800
    14620 +++ linux-mips-2.6.18.2/drivers/net/titan_mdio.h        2006-11-04 14:51:12.000000000 -0800
     16892diff -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
    1462116895@@ -0,0 +1,56 @@
    1462216896+/*
     
    1467616950+
    1467716951+#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.h
    14679 --- linux-2.6.18.2/drivers/scsi/NCR53C9x.h      2006-11-03 17:33:58.000000000 -0800
    14680 +++ linux-mips-2.6.18.2/drivers/scsi/NCR53C9x.h 2006-11-04 14:51:12.000000000 -0800
     16952diff -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
    1468116955@@ -144,12 +144,7 @@
    1468216956 
     
    1469316967 
    1469416968 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.c
    14696 --- linux-2.6.18.2/drivers/scsi/dec_esp.c       2006-11-03 17:33:58.000000000 -0800
    14697 +++ linux-mips-2.6.18.2/drivers/scsi/dec_esp.c  2006-11-04 14:51:12.000000000 -0800
     16969diff -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
    1469816972@@ -55,7 +55,7 @@
    1469916973 
     
    1471416988                        esp->dregs = 0;
    1471516989                        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.c
    14717 --- linux-2.6.18.2/drivers/scsi/sgiwd93.c       2006-11-03 17:33:58.000000000 -0800
    14718 +++ linux-mips-2.6.18.2/drivers/scsi/sgiwd93.c  2006-11-04 14:51:12.000000000 -0800
     16990diff -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
    1471916993@@ -14,6 +14,7 @@
    1472016994 #include <linux/interrupt.h>
     
    1473317007 static inline void init_hpc_chain(struct hpc_data *hd)
    1473417008 {
    14735 diff -Naur linux-2.6.18.2/drivers/serial/Kconfig linux-mips-2.6.18.2/drivers/serial/Kconfig
    14736 --- linux-2.6.18.2/drivers/serial/Kconfig       2006-11-03 17:33:58.000000000 -0800
    14737 +++ linux-mips-2.6.18.2/drivers/serial/Kconfig  2006-11-04 14:51:12.000000000 -0800
     17009diff -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
    1473817012@@ -651,6 +651,25 @@
    1473917013        depends on SERIAL_SH_SCI=y
     
    1476217036        tristate
    1476317037 
    14764 diff -Naur linux-2.6.18.2/drivers/serial/Makefile linux-mips-2.6.18.2/drivers/serial/Makefile
    14765 --- linux-2.6.18.2/drivers/serial/Makefile      2006-11-03 17:33:58.000000000 -0800
    14766 +++ linux-mips-2.6.18.2/drivers/serial/Makefile 2006-11-04 14:51:12.000000000 -0800
     17038diff -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
    1476717041@@ -39,6 +39,7 @@
    1476817042 obj-$(CONFIG_V850E_UART) += v850e_uart.o
     
    1477317047 obj-$(CONFIG_SERIAL_SH_SCI) += sh-sci.o
    1477417048 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.c
    14776 --- linux-2.6.18.2/drivers/serial/ip22zilog.c   2006-11-03 17:33:58.000000000 -0800
    14777 +++ linux-mips-2.6.18.2/drivers/serial/ip22zilog.c      2006-11-04 14:51:12.000000000 -0800
     17049diff -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
    1477817052@@ -865,6 +865,7 @@
    1477917053        up->cflag = termios->c_cflag;
     
    1479317067 
    1479417068 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.c
    14796 --- linux-2.6.18.2/drivers/serial/ip3106_uart.c 1969-12-31 16:00:00.000000000 -0800
    14797 +++ linux-mips-2.6.18.2/drivers/serial/ip3106_uart.c    2006-11-04 14:51:12.000000000 -0800
     17069diff -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
    1479817072@@ -0,0 +1,912 @@
    1479917073+/*
     
    1570917983+MODULE_LICENSE("GPL");
    1571017984+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.c
    15712 --- linux-2.6.18.2/drivers/usb/gadget/net2280.c 2006-11-03 17:33:58.000000000 -0800
    15713 +++ linux-mips-2.6.18.2/drivers/usb/gadget/net2280.c    2006-11-04 14:51:12.000000000 -0800
     17985diff -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
    1571417988@@ -467,7 +467,8 @@
    1571517989 #elif  defined(CONFIG_PPC) && !defined(CONFIG_NOT_COHERENT_CACHE)
     
    1572217996 
    1572317997 /* 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.c
    15725 --- linux-2.6.18.2/drivers/usb/host/ohci-hcd.c  2006-11-03 17:33:58.000000000 -0800
    15726 +++ linux-mips-2.6.18.2/drivers/usb/host/ohci-hcd.c     2006-11-04 14:51:12.000000000 -0800
     17998diff -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
    1572718001@@ -909,6 +909,10 @@
    1572818002 #include "ohci-au1xxx.c"
     
    1573618010 #include "ohci-ppc-soc.c"
    1573718011 #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.c
    15739 --- linux-2.6.18.2/drivers/usb/host/ohci-pnx8550.c      1969-12-31 16:00:00.000000000 -0800
    15740 +++ linux-mips-2.6.18.2/drivers/usb/host/ohci-pnx8550.c 2006-11-04 14:51:12.000000000 -0800
     18012diff -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
    1574118015@@ -0,0 +1,277 @@
    1574218016+/*
     
    1601718291+module_init (ohci_hcd_pnx8550_init);
    1601818292+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/Kconfig
    16020 --- linux-2.6.18.2/drivers/video/Kconfig        2006-11-03 17:33:58.000000000 -0800
    16021 +++ linux-mips-2.6.18.2/drivers/video/Kconfig   2006-11-04 14:51:12.000000000 -0800
     18293diff -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
    1602218296@@ -1250,6 +1250,17 @@
    1602318297          Please read the <file:Documentation/fb/README-sstfb.txt> for supported
     
    1607618350 config FB_MAXINE
    1607718351        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/Makefile
    16079 --- linux-2.6.18.2/drivers/video/Makefile       2006-11-03 17:33:58.000000000 -0800
    16080 +++ linux-mips-2.6.18.2/drivers/video/Makefile  2006-11-04 14:51:12.000000000 -0800
     18352diff -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
    1608118355@@ -95,6 +95,7 @@
    1608218356 obj-$(CONFIG_FB_TX3912)                  += tx3912fb.o
     
    1608718361 obj-$(CONFIG_FB_PNX4008_DUM)     += pnx4008/
    1608818362 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.c
    16090 --- linux-2.6.18.2/drivers/video/au1100fb.c     2006-11-03 17:33:58.000000000 -0800
    16091 +++ linux-mips-2.6.18.2/drivers/video/au1100fb.c        2006-11-04 14:51:12.000000000 -0800
     18363diff -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
    1609218366@@ -40,6 +40,7 @@
    1609318367  *  with this program; if not, write  to the Free Software Foundation, Inc.,
     
    1609818372 #include <linux/kernel.h>
    1609918373 #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.c
    16101 --- linux-2.6.18.2/drivers/video/smivgxfb.c     1969-12-31 16:00:00.000000000 -0800
    16102 +++ linux-mips-2.6.18.2/drivers/video/smivgxfb.c        2006-11-04 14:51:12.000000000 -0800
     18374diff -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
    1610318377@@ -0,0 +1,387 @@
    1610418378+/***************************************************************************
     
    1648918763+MODULE_DESCRIPTION("Framebuffer driver for SMI Voyager");
    1649018764+MODULE_LICENSE("GPL");
    16491 diff -Naur linux-2.6.18.2/include/asm-mips/Kbuild linux-mips-2.6.18.2/include/asm-mips/Kbuild
    16492 --- linux-2.6.18.2/include/asm-mips/Kbuild      2006-11-03 17:33:58.000000000 -0800
    16493 +++ linux-mips-2.6.18.2/include/asm-mips/Kbuild 2006-11-04 14:51:12.000000000 -0800
     18765diff -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
    1649418768@@ -1 +1,3 @@
    1649518769 include include/asm-generic/Kbuild.asm
    1649618770+
    1649718771+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.h
    16499 --- linux-2.6.18.2/include/asm-mips/asm.h       2006-11-03 17:33:58.000000000 -0800
    16500 +++ linux-mips-2.6.18.2/include/asm-mips/asm.h  2006-11-04 14:51:12.000000000 -0800
     18772diff -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
    1650118775@@ -344,6 +344,7 @@
    1650218776 #define PTR_L          lw
     
    1651518789 #define PTR_SLLV       dsllv
    1651618790 #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.h
    16518 --- linux-2.6.18.2/include/asm-mips/cacheflush.h        2006-11-03 17:33:58.000000000 -0800
    16519 +++ linux-mips-2.6.18.2/include/asm-mips/cacheflush.h   2006-11-04 14:51:12.000000000 -0800
     18791diff -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
    1652018794@@ -21,7 +21,6 @@
    1652118795  *  - flush_cache_range(vma, start, end) flushes a range of pages
     
    1657618850 extern void (*flush_cache_sigtramp)(unsigned long addr);
    1657718851 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
     18852diff -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 */
     18935diff -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
    1658118938@@ -45,8 +45,16 @@
    1658218939  * fix-mapped?
     
    1660918966 #define FIXADDR_SIZE   (__end_of_fixed_addresses << PAGE_SHIFT)
    1661018967 #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.h
    16612 --- linux-2.6.18.2/include/asm-mips/fpu.h       2006-11-03 17:33:58.000000000 -0800
    16613 +++ linux-mips-2.6.18.2/include/asm-mips/fpu.h  2006-11-04 14:51:12.000000000 -0800
     18968diff -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
    1661418971@@ -134,9 +134,11 @@
    1661518972 
     
    1662618983 
    1662718984        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.h
    16629 --- linux-2.6.18.2/include/asm-mips/io.h        2006-11-03 17:33:58.000000000 -0800
    16630 +++ linux-mips-2.6.18.2/include/asm-mips/io.h   2006-11-04 14:51:12.000000000 -0800
     18985diff -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
    1663118988@@ -172,7 +172,7 @@
    1663218989 #define page_to_phys(page)     ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)
     
    1668219039  * to explicitly ioremap() it. The fact that the ISA IO space is mapped
    1668319040  * 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.h
    16685 --- linux-2.6.18.2/include/asm-mips/irq.h       2006-11-03 17:33:58.000000000 -0800
    16686 +++ linux-mips-2.6.18.2/include/asm-mips/irq.h  2006-11-04 14:51:12.000000000 -0800
    16687 @@ -76,8 +76,4 @@
     19041diff -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 @@
    1668819045                           unsigned long hwmask);
    1668919046 #endif /* CONFIG_MIPS_MT_SMTC */
     
    1669219049-#define ARCH_HAS_IRQ_PER_CPU
    1669319050-#endif
    16694 -
     19051+extern int allocate_irqno(void);
     19052+extern void alloc_legacy_irqno(void);
     19053+extern void free_irqno(unsigned int irq);
     19054 
    1669519055 #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.h
    16697 --- linux-2.6.18.2/include/asm-mips/mach-atlas/mc146818rtc.h    2006-11-03 17:33:58.000000000 -0800
    16698 +++ linux-mips-2.6.18.2/include/asm-mips/mach-atlas/mc146818rtc.h       2006-11-04 14:51:12.000000000 -0800
     19056diff -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
    1669919059@@ -28,10 +28,12 @@
    1670019060 #include <asm/mips-boards/atlas.h>
     
    1671119071 static inline unsigned char CMOS_READ(unsigned long addr)
    1671219072 {
    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
     19073diff -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)
     19103diff -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
    1671619106@@ -83,6 +83,7 @@
    1671719107 } _auide_hwif;
     
    1672219112 static const struct drive_list_entry dma_white_list [] = {
    1672319113 /*
    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.h
    16725 --- linux-2.6.18.2/include/asm-mips/mips-boards/atlasint.h      2006-11-03 17:33:58.000000000 -0800
    16726 +++ linux-mips-2.6.18.2/include/asm-mips/mips-boards/atlasint.h 2006-11-04 14:51:12.000000000 -0800
     19114diff -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
    1672719117@@ -1,6 +1,7 @@
    1672819118 /*
     
    1686019250 
    1686119251 #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.h
    16863 --- linux-2.6.18.2/include/asm-mips/page.h      2006-11-03 17:33:58.000000000 -0800
    16864 +++ linux-mips-2.6.18.2/include/asm-mips/page.h 2006-11-04 14:51:12.000000000 -0800
     19252diff -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
    1686519255@@ -53,19 +53,17 @@
    1686619256        extern void (*flush_data_cache_page)(unsigned long addr);
     
    1690919299 /*
    1691019300  * 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.h
    16912 --- linux-2.6.18.2/include/asm-mips/pgalloc.h   2006-11-03 17:33:58.000000000 -0800
    16913 +++ linux-mips-2.6.18.2/include/asm-mips/pgalloc.h      2006-11-04 14:51:12.000000000 -0800
     19301diff -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
    1691419304@@ -48,7 +48,7 @@
    1691519305 
     
    1692119311                memcpy(ret + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD,
    1692219312                       (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.h
    16924 --- linux-2.6.18.2/include/asm-mips/pgtable-64.h        2006-11-03 17:33:58.000000000 -0800
    16925 +++ linux-mips-2.6.18.2/include/asm-mips/pgtable-64.h   2006-11-04 14:51:12.000000000 -0800
     19313diff -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
    1692619316@@ -170,7 +170,7 @@
    1692719317 #define __pmd_offset(address)  pmd_index(address)
     
    1693319323 #define pgd_index(address)     (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
    1693419324 #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.h
    16936 --- linux-2.6.18.2/include/asm-mips/ptrace.h    2006-11-03 17:33:58.000000000 -0800
    16937 +++ linux-mips-2.6.18.2/include/asm-mips/ptrace.h       2006-11-04 14:51:12.000000000 -0800
     19325diff -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
    1693819328@@ -10,8 +10,6 @@
    1693919329 #define _ASM_PTRACE_H
     
    1695319343 /*
    1695419344  * 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.h
    16956 --- linux-2.6.18.2/include/asm-mips/spinlock.h  2006-11-03 17:33:58.000000000 -0800
    16957 +++ linux-mips-2.6.18.2/include/asm-mips/spinlock.h     2006-11-04 14:51:12.000000000 -0800
     19345diff -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
    1695819348@@ -239,7 +239,51 @@
    1695919349        : "memory");
     
    1701519405+
    1701619406 #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.h
    17018 --- linux-2.6.18.2/include/asm-mips/system.h    2006-11-03 17:33:58.000000000 -0800
    17019 +++ linux-mips-2.6.18.2/include/asm-mips/system.h       2006-11-04 14:51:12.000000000 -0800
     19407diff -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
    1702019410@@ -392,7 +392,7 @@
    1702119411 {
     
    1702719417                "       .set    push                                    \n"
    1702819418                "       .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.h
    17030 --- linux-2.6.18.2/include/asm-mips/timex.h     2006-11-03 17:33:58.000000000 -0800
    17031 +++ linux-mips-2.6.18.2/include/asm-mips/timex.h        2006-11-04 14:51:12.000000000 -0800
     19419diff -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
    1703219422@@ -8,6 +8,8 @@
    1703319423 #ifndef _ASM_TIMEX_H
     
    1704619436+
    1704719437 #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.h
    17049 --- linux-2.6.18.2/include/asm-mips/unistd.h    2006-11-03 17:33:58.000000000 -0800
    17050 +++ linux-mips-2.6.18.2/include/asm-mips/unistd.h       2006-11-04 14:51:12.000000000 -0800
     19438diff -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
    1705119441@@ -313,7 +313,7 @@
    1705219442 #define __NR_mknodat                   (__NR_Linux + 290)
     
    1713919529 #ifdef __KERNEL__
    1714019530 
    17141 diff -Naur linux-2.6.18.2/include/asm-mips/user.h linux-mips-2.6.18.2/include/asm-mips/user.h
    17142 --- linux-2.6.18.2/include/asm-mips/user.h      2006-11-03 17:33:58.000000000 -0800
    17143 +++ linux-mips-2.6.18.2/include/asm-mips/user.h 2006-11-04 14:51:12.000000000 -0800
     19531diff -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
    1714419534@@ -8,6 +8,8 @@
    1714519535 #ifndef _ASM_USER_H
     
    1715819548+
    1715919549 #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.h
    17161 --- linux-2.6.18.2/include/linux/highmem.h      2006-11-03 17:33:58.000000000 -0800
    17162 +++ linux-mips-2.6.18.2/include/linux/highmem.h 2006-11-04 14:51:12.000000000 -0800
     19550diff -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
    1716319553@@ -89,7 +89,10 @@
    1716419554        kunmap_atomic(kaddr, KM_USER0);
     
    1718219572 {
    1718319573        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.h
    17185 --- linux-2.6.18.2/include/linux/pci_ids.h      2006-11-03 17:33:58.000000000 -0800
    17186 +++ linux-mips-2.6.18.2/include/linux/pci_ids.h 2006-11-04 14:51:12.000000000 -0800
     19574diff -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
    1718719577@@ -1603,6 +1603,9 @@
    1718819578 #define PCI_VENDOR_ID_SATSAGEM         0x1267
     
    1719519585 #define PCI_VENDOR_ID_ENSONIQ          0x1274
    1719619586 #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.h
    17198 --- linux-2.6.18.2/include/linux/serial.h       2006-11-03 17:33:58.000000000 -0800
    17199 +++ linux-mips-2.6.18.2/include/linux/serial.h  2006-11-04 14:51:12.000000000 -0800
     19587diff -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
    1720019590@@ -76,7 +76,8 @@
    1720119591 #define PORT_16654     11
     
    1720819598 #define SERIAL_IO_PORT 0
    1720919599 #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.h
    17211 --- linux-2.6.18.2/include/linux/serial_ip3106.h        2006-11-03 17:33:58.000000000 -0800
    17212 +++ linux-mips-2.6.18.2/include/linux/serial_ip3106.h   2006-11-04 14:51:12.000000000 -0800
     19600diff -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
    1721319603@@ -78,4 +78,16 @@
    1721419604 #define IP3106_UART_FIFO_RXFIFO                0x00001F00
     
    1722819618+
    1722919619 #endif
    17230 diff -Naur linux-2.6.18.2/mm/memory.c linux-mips-2.6.18.2/mm/memory.c
    17231 --- linux-2.6.18.2/mm/memory.c  2006-11-03 17:33:58.000000000 -0800
    17232 +++ linux-mips-2.6.18.2/mm/memory.c     2006-11-04 14:51:12.000000000 -0800
     19620diff -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
    1723319623@@ -1407,7 +1407,7 @@
    1723419624        return pte;
     
    1727019660                        new_page = page;
    1727119661                        anon = 1;
    17272 diff -Naur linux-2.6.18.2/sound/oss/Kconfig linux-mips-2.6.18.2/sound/oss/Kconfig
    17273 --- linux-2.6.18.2/sound/oss/Kconfig    2006-11-03 17:33:58.000000000 -0800
    17274 +++ linux-mips-2.6.18.2/sound/oss/Kconfig       2006-11-04 14:51:12.000000000 -0800
     19662diff -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
    1727519665@@ -132,6 +132,13 @@
    1727619666        select SND_AC97_CODEC
     
    1728719677        tristate "Trident 4DWave DX/NX, SiS 7018 or ALi 5451 PCI Audio Core"
    1728819678        depends on SOUND_PRIME && PCI
    17289 diff -Naur linux-2.6.18.2/sound/oss/Makefile linux-mips-2.6.18.2/sound/oss/Makefile
    17290 --- linux-2.6.18.2/sound/oss/Makefile   2006-11-03 17:33:58.000000000 -0800
    17291 +++ linux-mips-2.6.18.2/sound/oss/Makefile      2006-11-04 14:51:12.000000000 -0800
     19679diff -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
    1729219682@@ -66,6 +66,7 @@
    1729319683 obj-$(CONFIG_SOUND_VRC5477)    += nec_vrc5477.o ac97_codec.o
     
    1729819688 obj-$(CONFIG_SOUND_FUSION)     += cs46xx.o ac97_codec.o
    1729919689 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.c
    17301 --- linux-2.6.18.2/sound/oss/au1550_i2s.c       1969-12-31 16:00:00.000000000 -0800
    17302 +++ linux-mips-2.6.18.2/sound/oss/au1550_i2s.c  2006-11-04 14:51:12.000000000 -0800
     19690diff -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
    1730319693@@ -0,0 +1,2029 @@
    1730419694+/*
Note: See TracChangeset for help on using the changeset viewer.