[kernel] refresh 2.6.26 patches
[openwrt.git] / target / linux / orion / patches / 000-orion_git_sync.patch
index 4daef75..283ec05 100644 (file)
@@ -1,6 +1,6 @@
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -2691,12 +2691,10 @@
+@@ -2691,12 +2691,10 @@ L:     libertas-dev@lists.infradead.org
  S:    Maintained
  
  MARVELL MV643XX ETHERNET DRIVER
@@ -18,7 +18,7 @@
  P:    Petr Vandrovec
 --- a/arch/arm/Kconfig
 +++ b/arch/arm/Kconfig
-@@ -84,6 +84,11 @@
+@@ -84,6 +84,11 @@ config STACKTRACE_SUPPORT
        bool
        default y
  
@@ -30,7 +30,7 @@
  config LOCKDEP_SUPPORT
        bool
        default y
-@@ -347,6 +352,16 @@
+@@ -347,6 +352,16 @@ config ARCH_L7200
          If you have any questions or comments about the Linux kernel port
          to this board, send e-mail to <sjhill@cotw.com>.
  
@@ -47,7 +47,7 @@
  config ARCH_KS8695
        bool "Micrel/Kendin KS8695"
        select GENERIC_GPIO
-@@ -365,6 +380,24 @@
+@@ -365,6 +380,24 @@ config ARCH_NS9XXX
  
          <http://www.digi.com/products/microprocessors/index.jsp>
  
@@ -72,7 +72,7 @@
  config ARCH_MXC
        bool "Freescale MXC/iMX-based"
        select ARCH_MTD_XIP
-@@ -381,7 +414,8 @@
+@@ -381,7 +414,8 @@ config ARCH_ORION5X
        select PLAT_ORION
        help
          Support for the following Marvell Orion 5x series SoCs:
@@ -82,7 +82,7 @@
  
  config ARCH_PNX4008
        bool "Philips Nexperia PNX4008 Mobile"
-@@ -502,6 +536,10 @@
+@@ -502,6 +536,10 @@ source "arch/arm/mach-ixp2000/Kconfig"
  
  source "arch/arm/mach-ixp23xx/Kconfig"
  
@@ -93,7 +93,7 @@
  source "arch/arm/mach-pxa/Kconfig"
  
  source "arch/arm/mach-sa1100/Kconfig"
-@@ -514,6 +552,8 @@
+@@ -514,6 +552,8 @@ source "arch/arm/mach-omap2/Kconfig"
  
  source "arch/arm/mach-orion5x/Kconfig"
  
  
 --- a/arch/arm/Makefile
 +++ b/arch/arm/Makefile
-@@ -135,11 +135,14 @@
+@@ -135,11 +135,14 @@ endif
   machine-$(CONFIG_ARCH_NETX)     := netx
   machine-$(CONFIG_ARCH_NS9XXX)           := ns9xxx
   machine-$(CONFIG_ARCH_DAVINCI)          := davinci
  # This is what happens if you forget the IOCS16 line.
 --- a/arch/arm/boot/compressed/head.S
 +++ b/arch/arm/boot/compressed/head.S
-@@ -623,8 +623,8 @@
+@@ -623,8 +623,8 @@ proc_types:
                b       __armv4_mmu_cache_off
                b       __armv4_mmu_cache_flush
  
  #
  CONFIG_ARM=y
  CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-@@ -21,6 +21,7 @@
+@@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
  # CONFIG_ARCH_HAS_ILOG2_U64 is not set
  CONFIG_GENERIC_HWEIGHT=y
  CONFIG_GENERIC_CALIBRATE_DELAY=y
  CONFIG_ZONE_DMA=y
  CONFIG_VECTORS_BASE=0xffff0000
  CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-@@ -40,24 +41,24 @@
+@@ -40,24 +41,24 @@ CONFIG_SYSVIPC_SYSCTL=y
  # CONFIG_POSIX_MQUEUE is not set
  # CONFIG_BSD_PROCESS_ACCT is not set
  # CONFIG_TASKSTATS is not set
  # CONFIG_KALLSYMS_EXTRA_PASS is not set
  CONFIG_HOTPLUG=y
  CONFIG_PRINTK=y
-@@ -73,20 +74,25 @@
+@@ -73,20 +74,25 @@ CONFIG_TIMERFD=y
  CONFIG_EVENTFD=y
  CONFIG_SHMEM=y
  CONFIG_VM_EVENT_COUNTERS=y
  CONFIG_MODULE_UNLOAD=y
  # CONFIG_MODULE_FORCE_UNLOAD is not set
  # CONFIG_MODVERSIONS is not set
-@@ -111,7 +117,6 @@
+@@ -111,7 +117,6 @@ CONFIG_DEFAULT_CFQ=y
  # CONFIG_DEFAULT_NOOP is not set
  CONFIG_DEFAULT_IOSCHED="cfq"
  CONFIG_CLASSIC_RCU=y
  
  #
  # System Type
-@@ -160,6 +165,7 @@
+@@ -160,6 +165,7 @@ CONFIG_MACH_RD88F5182=y
  CONFIG_MACH_KUROBOX_PRO=y
  CONFIG_MACH_DNS323=y
  CONFIG_MACH_TS209=y
  
  #
  # Boot options
-@@ -168,6 +174,7 @@
+@@ -168,6 +174,7 @@ CONFIG_MACH_TS209=y
  #
  # Power management
  #
  
  #
  # Processor Type
-@@ -177,8 +184,9 @@
+@@ -177,8 +184,9 @@ CONFIG_CPU_FEROCEON=y
  CONFIG_CPU_FEROCEON_OLD_ID=y
  CONFIG_CPU_32v5=y
  CONFIG_CPU_ABRT_EV5T=y
  CONFIG_CPU_TLB_V4WBI=y
  CONFIG_CPU_CP15=y
  CONFIG_CPU_CP15_MMU=y
-@@ -189,7 +197,6 @@
+@@ -189,7 +197,6 @@ CONFIG_CPU_CP15_MMU=y
  CONFIG_ARM_THUMB=y
  # CONFIG_CPU_ICACHE_DISABLE is not set
  # CONFIG_CPU_DCACHE_DISABLE is not set
  # CONFIG_OUTER_CACHE is not set
  
  #
-@@ -199,6 +206,7 @@
+@@ -199,6 +206,7 @@ CONFIG_PCI=y
  CONFIG_PCI_SYSCALL=y
  # CONFIG_ARCH_SUPPORTS_MSI is not set
  CONFIG_PCI_LEGACY=y
  # CONFIG_PCCARD is not set
  
  #
-@@ -221,6 +229,7 @@
+@@ -221,6 +229,7 @@ CONFIG_FLATMEM=y
  CONFIG_FLAT_NODE_MEM_MAP=y
  # CONFIG_SPARSEMEM_STATIC is not set
  # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
  CONFIG_SPLIT_PTLOCK_CPUS=4096
  # CONFIG_RESOURCES_64BIT is not set
  CONFIG_ZONE_DMA_FLAG=1
-@@ -238,7 +247,6 @@
+@@ -238,7 +247,6 @@ CONFIG_ZBOOT_ROM_BSS=0x0
  CONFIG_CMDLINE=""
  # CONFIG_XIP_KERNEL is not set
  # CONFIG_KEXEC is not set
  
  #
  # Floating point emulation
-@@ -311,8 +319,6 @@
+@@ -311,8 +319,6 @@ CONFIG_TCP_CONG_CUBIC=y
  CONFIG_DEFAULT_TCP_CONG="cubic"
  # CONFIG_TCP_MD5SIG is not set
  # CONFIG_IPV6 is not set
  # CONFIG_NETWORK_SECMARK is not set
  # CONFIG_NETFILTER is not set
  # CONFIG_IP_DCCP is not set
-@@ -335,6 +341,7 @@
+@@ -335,6 +341,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
  # Network testing
  #
  CONFIG_NET_PKTGEN=m
  # CONFIG_HAMRADIO is not set
  # CONFIG_CAN is not set
  # CONFIG_IRDA is not set
-@@ -362,6 +369,8 @@
+@@ -362,6 +369,8 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug
  CONFIG_STANDALONE=y
  CONFIG_PREVENT_FIRMWARE_BUILD=y
  CONFIG_FW_LOADER=y
  # CONFIG_SYS_HYPERVISOR is not set
  # CONFIG_CONNECTOR is not set
  CONFIG_MTD=y
-@@ -371,6 +380,7 @@
+@@ -371,6 +380,7 @@ CONFIG_MTD_PARTITIONS=y
  # CONFIG_MTD_REDBOOT_PARTS is not set
  CONFIG_MTD_CMDLINE_PARTS=y
  # CONFIG_MTD_AFS_PARTS is not set
  
  #
  # User Modules And Translation Layers
-@@ -378,9 +388,8 @@
+@@ -378,9 +388,8 @@ CONFIG_MTD_CMDLINE_PARTS=y
  CONFIG_MTD_CHAR=y
  CONFIG_MTD_BLKDEVS=y
  CONFIG_MTD_BLOCK=y
  # CONFIG_INFTL is not set
  # CONFIG_RFD_FTL is not set
  # CONFIG_SSFDC is not set
-@@ -405,12 +414,12 @@
+@@ -405,12 +414,12 @@ CONFIG_MTD_MAP_BANK_WIDTH_4=y
  # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
  CONFIG_MTD_CFI_I1=y
  CONFIG_MTD_CFI_I2=y
  CONFIG_MTD_CFI_UTIL=y
  # CONFIG_MTD_RAM is not set
  # CONFIG_MTD_ROM is not set
-@@ -481,6 +490,9 @@
+@@ -481,6 +490,9 @@ CONFIG_MISC_DEVICES=y
  # CONFIG_EEPROM_93CX6 is not set
  # CONFIG_SGI_IOC4 is not set
  # CONFIG_TIFM_CORE is not set
  
  #
  # SCSI device support
-@@ -542,6 +554,7 @@
+@@ -542,6 +554,7 @@ CONFIG_SCSI_LOWLEVEL=y
  # CONFIG_SCSI_IPS is not set
  # CONFIG_SCSI_INITIO is not set
  # CONFIG_SCSI_INIA100 is not set
  # CONFIG_SCSI_STEX is not set
  # CONFIG_SCSI_SYM53C8XX_2 is not set
  # CONFIG_SCSI_IPR is not set
-@@ -556,7 +569,10 @@
+@@ -556,7 +569,10 @@ CONFIG_SCSI_LOWLEVEL=y
  # CONFIG_SCSI_SRP is not set
  CONFIG_ATA=y
  # CONFIG_ATA_NONSTANDARD is not set
  # CONFIG_SATA_SVW is not set
  # CONFIG_ATA_PIIX is not set
  CONFIG_SATA_MV=y
-@@ -566,7 +582,6 @@
+@@ -566,7 +582,6 @@ CONFIG_SATA_MV=y
  # CONFIG_SATA_PROMISE is not set
  # CONFIG_SATA_SX4 is not set
  # CONFIG_SATA_SIL is not set
  # CONFIG_SATA_SIS is not set
  # CONFIG_SATA_ULI is not set
  # CONFIG_SATA_VIA is not set
-@@ -611,6 +626,7 @@
+@@ -611,6 +626,7 @@ CONFIG_SATA_MV=y
  # CONFIG_PATA_VIA is not set
  # CONFIG_PATA_WINBOND is not set
  # CONFIG_PATA_PLATFORM is not set
  # CONFIG_MD is not set
  # CONFIG_FUSION is not set
  
-@@ -652,7 +668,7 @@
+@@ -652,7 +668,7 @@ CONFIG_NET_PCI=y
  # CONFIG_B44 is not set
  # CONFIG_FORCEDETH is not set
  # CONFIG_EEPRO100 is not set
  # CONFIG_FEALNX is not set
  # CONFIG_NATSEMI is not set
  # CONFIG_NE2K_PCI is not set
-@@ -668,9 +684,7 @@
+@@ -668,9 +684,7 @@ CONFIG_E100=y
  CONFIG_NETDEV_1000=y
  # CONFIG_ACENIC is not set
  # CONFIG_DL2K is not set
  # CONFIG_E1000E is not set
  # CONFIG_E1000E_ENABLED is not set
  # CONFIG_IP1000 is not set
-@@ -680,27 +694,15 @@
+@@ -680,27 +694,15 @@ CONFIG_E1000_NAPI=y
  # CONFIG_YELLOWFIN is not set
  # CONFIG_R8169 is not set
  # CONFIG_SIS190 is not set
  # CONFIG_TR is not set
  
  #
-@@ -708,6 +710,7 @@
+@@ -708,6 +710,7 @@ CONFIG_NETDEV_10000=y
  #
  # CONFIG_WLAN_PRE80211 is not set
  # CONFIG_WLAN_80211 is not set
  
  #
  # USB Network Adapters
-@@ -738,12 +741,9 @@
+@@ -738,12 +741,9 @@ CONFIG_INPUT=y
  #
  # Userland interfaces
  #
  # CONFIG_INPUT_EVBUG is not set
  
  #
-@@ -765,10 +765,8 @@
+@@ -765,10 +765,8 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
  #
  # Character devices
  #
  # CONFIG_SERIAL_NONSTANDARD is not set
  # CONFIG_NOZOMI is not set
  
-@@ -777,7 +775,7 @@
+@@ -777,7 +775,7 @@ CONFIG_HW_CONSOLE=y
  #
  CONFIG_SERIAL_8250=y
  CONFIG_SERIAL_8250_CONSOLE=y
  CONFIG_SERIAL_8250_NR_UARTS=4
  CONFIG_SERIAL_8250_RUNTIME_UARTS=2
  # CONFIG_SERIAL_8250_EXTENDED is not set
-@@ -792,7 +790,7 @@
+@@ -792,7 +790,7 @@ CONFIG_UNIX98_PTYS=y
  CONFIG_LEGACY_PTYS=y
  CONFIG_LEGACY_PTY_COUNT=16
  # CONFIG_IPMI_HANDLER is not set
  # CONFIG_NVRAM is not set
  # CONFIG_R3964 is not set
  # CONFIG_APPLICOM is not set
-@@ -804,13 +802,6 @@
+@@ -804,13 +802,6 @@ CONFIG_I2C_BOARDINFO=y
  CONFIG_I2C_CHARDEV=y
  
  #
  # I2C Hardware Bus support
  #
  # CONFIG_I2C_ALI1535 is not set
-@@ -837,6 +828,7 @@
+@@ -837,6 +828,7 @@ CONFIG_I2C_CHARDEV=y
  # CONFIG_I2C_VIA is not set
  # CONFIG_I2C_VIAPRO is not set
  # CONFIG_I2C_VOODOO3 is not set
  CONFIG_I2C_MV64XXX=y
  
  #
-@@ -847,19 +839,13 @@
+@@ -847,19 +839,13 @@ CONFIG_I2C_MV64XXX=y
  # CONFIG_SENSORS_PCF8574 is not set
  # CONFIG_PCF8575 is not set
  # CONFIG_SENSORS_PCF8591 is not set
  # CONFIG_W1 is not set
  # CONFIG_POWER_SUPPLY is not set
  CONFIG_HWMON=y
-@@ -872,6 +858,7 @@
+@@ -872,6 +858,7 @@ CONFIG_HWMON=y
  # CONFIG_SENSORS_ADM1031 is not set
  # CONFIG_SENSORS_ADM9240 is not set
  # CONFIG_SENSORS_ADT7470 is not set
  # CONFIG_SENSORS_ATXP1 is not set
  # CONFIG_SENSORS_DS1621 is not set
  # CONFIG_SENSORS_I5K_AMB is not set
-@@ -901,6 +888,7 @@
+@@ -901,6 +888,7 @@ CONFIG_HWMON=y
  # CONFIG_SENSORS_SMSC47M1 is not set
  # CONFIG_SENSORS_SMSC47M192 is not set
  # CONFIG_SENSORS_SMSC47B397 is not set
  # CONFIG_SENSORS_THMC50 is not set
  # CONFIG_SENSORS_VIA686A is not set
  # CONFIG_SENSORS_VT1211 is not set
-@@ -910,6 +898,7 @@
+@@ -910,6 +898,7 @@ CONFIG_HWMON=y
  # CONFIG_SENSORS_W83792D is not set
  # CONFIG_SENSORS_W83793 is not set
  # CONFIG_SENSORS_W83L785TS is not set
  # CONFIG_SENSORS_W83627HF is not set
  # CONFIG_SENSORS_W83627EHF is not set
  # CONFIG_HWMON_DEBUG_CHIP is not set
-@@ -925,14 +914,24 @@
+@@ -925,14 +914,24 @@ CONFIG_SSB_POSSIBLE=y
  # Multifunction device drivers
  #
  # CONFIG_MFD_SM501 is not set
  
  #
  # Graphics support
-@@ -949,12 +948,6 @@
+@@ -949,12 +948,6 @@ CONFIG_DAB=y
  # CONFIG_DISPLAY_SUPPORT is not set
  
  #
  # Sound
  #
  # CONFIG_SOUND is not set
-@@ -985,14 +978,18 @@
+@@ -985,14 +978,18 @@ CONFIG_USB_DEVICEFS=y
  CONFIG_USB_DEVICE_CLASS=y
  # CONFIG_USB_DYNAMIC_MINORS is not set
  # CONFIG_USB_OTG is not set
  # CONFIG_USB_OHCI_HCD is not set
  # CONFIG_USB_UHCI_HCD is not set
  # CONFIG_USB_SL811_HCD is not set
-@@ -1003,6 +1000,7 @@
+@@ -1003,6 +1000,7 @@ CONFIG_USB_EHCI_TT_NEWSCHED=y
  #
  # CONFIG_USB_ACM is not set
  CONFIG_USB_PRINTER=y
  
  #
  # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-@@ -1022,7 +1020,9 @@
+@@ -1022,7 +1020,9 @@ CONFIG_USB_STORAGE_SDDR09=y
  CONFIG_USB_STORAGE_SDDR55=y
  CONFIG_USB_STORAGE_JUMPSHOT=y
  # CONFIG_USB_STORAGE_ALAUDA is not set
  # CONFIG_USB_LIBUSUAL is not set
  
  #
-@@ -1060,6 +1060,7 @@
+@@ -1060,6 +1060,7 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
  # CONFIG_USB_TRANCEVIBRATOR is not set
  # CONFIG_USB_IOWARRIOR is not set
  # CONFIG_USB_TEST is not set
  # CONFIG_USB_GADGET is not set
  # CONFIG_MMC is not set
  CONFIG_NEW_LEDS=y
-@@ -1076,6 +1077,7 @@
+@@ -1076,6 +1077,7 @@ CONFIG_LEDS_CLASS=y
  CONFIG_LEDS_TRIGGERS=y
  CONFIG_LEDS_TRIGGER_TIMER=y
  CONFIG_LEDS_TRIGGER_HEARTBEAT=y
  CONFIG_RTC_LIB=y
  CONFIG_RTC_CLASS=y
  CONFIG_RTC_HCTOSYS=y
-@@ -1105,6 +1107,7 @@
+@@ -1105,6 +1107,7 @@ CONFIG_RTC_DRV_RS5C372=y
  # CONFIG_RTC_DRV_PCF8583 is not set
  CONFIG_RTC_DRV_M41T80=y
  # CONFIG_RTC_DRV_M41T80_WDT is not set
  
  #
  # SPI RTC drivers
-@@ -1125,6 +1128,7 @@
+@@ -1125,6 +1128,7 @@ CONFIG_RTC_DRV_M41T80=y
  #
  # on-CPU RTC drivers
  #
  
  #
  # File systems
-@@ -1140,14 +1144,11 @@
+@@ -1140,14 +1144,11 @@ CONFIG_JBD=y
  # CONFIG_JFS_FS is not set
  # CONFIG_FS_POSIX_ACL is not set
  # CONFIG_XFS_FS is not set
  # CONFIG_AUTOFS_FS is not set
  # CONFIG_AUTOFS4_FS is not set
  # CONFIG_FUSE_FS is not set
-@@ -1155,8 +1156,8 @@
+@@ -1155,8 +1156,8 @@ CONFIG_DNOTIFY=y
  #
  # CD-ROM/DVD Filesystems
  #
  # CONFIG_ZISOFS is not set
  CONFIG_UDF_FS=m
  CONFIG_UDF_NLS=y
-@@ -1205,8 +1206,10 @@
+@@ -1205,8 +1206,10 @@ CONFIG_JFFS2_RTIME=y
  # CONFIG_JFFS2_RUBIN is not set
  CONFIG_CRAMFS=y
  # CONFIG_VXFS_FS is not set
  # CONFIG_SYSV_FS is not set
  # CONFIG_UFS_FS is not set
  CONFIG_NETWORK_FILESYSTEMS=y
-@@ -1214,7 +1217,6 @@
+@@ -1214,7 +1217,6 @@ CONFIG_NFS_FS=y
  CONFIG_NFS_V3=y
  # CONFIG_NFS_V3_ACL is not set
  # CONFIG_NFS_V4 is not set
  # CONFIG_NFSD is not set
  CONFIG_ROOT_NFS=y
  CONFIG_LOCKD=y
-@@ -1241,14 +1243,13 @@
+@@ -1241,14 +1243,13 @@ CONFIG_PARTITION_ADVANCED=y
  # CONFIG_MAC_PARTITION is not set
  CONFIG_MSDOS_PARTITION=y
  CONFIG_BSD_DISKLABEL=y
  # CONFIG_KARMA_PARTITION is not set
  # CONFIG_EFI_PARTITION is not set
  # CONFIG_SYSV68_PARTITION is not set
-@@ -1300,15 +1301,48 @@
+@@ -1300,15 +1301,48 @@ CONFIG_NLS_ISO8859_2=y
  # CONFIG_PRINTK_TIME is not set
  CONFIG_ENABLE_WARN_DEPRECATED=y
  CONFIG_ENABLE_MUST_CHECK=y
  
  #
  # Security options
-@@ -1317,50 +1351,79 @@
+@@ -1317,50 +1351,79 @@ CONFIG_DEBUG_USER=y
  # CONFIG_SECURITY is not set
  # CONFIG_SECURITY_FILE_CAPABILITIES is not set
  CONFIG_CRYPTO=y
  # CONFIG_CRYPTO_LZO is not set
  CONFIG_CRYPTO_HW=y
  # CONFIG_CRYPTO_DEV_HIFN_795X is not set
-@@ -1369,12 +1432,14 @@
+@@ -1369,12 +1432,14 @@ CONFIG_CRYPTO_HW=y
  # Library routines
  #
  CONFIG_BITREVERSE=y
  CONFIG_PLIST=y
 --- a/arch/arm/kernel/stacktrace.c
 +++ b/arch/arm/kernel/stacktrace.c
-@@ -36,6 +36,7 @@
+@@ -36,6 +36,7 @@ EXPORT_SYMBOL(walk_stackframe);
  #ifdef CONFIG_STACKTRACE
  struct stack_trace_data {
        struct stack_trace *trace;
        unsigned int skip;
  };
  
-@@ -43,27 +44,52 @@
+@@ -43,27 +44,52 @@ static int save_trace(struct stackframe 
  {
        struct stack_trace_data *data = d;
        struct stack_trace *trace = data->trace;
                .text
  
  /*
-@@ -55,11 +47,12 @@
+@@ -55,11 +47,12 @@ ENTRY(memmove)
                stmfd   sp!, {r5 - r8}
                blt     5f
  
        CALGN(  add     pc, r4, ip              )
  
        PLD(    pld     [r1, #-4]               )
-@@ -138,8 +131,7 @@
+@@ -138,8 +131,7 @@ ENTRY(memmove)
                subs    r2, r2, #28
                blt     14f
  
        CALGN(  bcc     15f                     )
 --- a/arch/arm/lib/memset.S
 +++ b/arch/arm/lib/memset.S
-@@ -39,6 +39,9 @@
+@@ -39,6 +39,9 @@ ENTRY(memset)
        mov     r3, r1
        cmp     r2, #16
        blt     4f
  /*
   * We need an extra register for this loop - save the return address and
   * use the LR
-@@ -64,6 +67,49 @@
+@@ -64,6 +67,49 @@ ENTRY(memset)
        stmneia r0!, {r1, r3, ip, lr}
        ldr     lr, [sp], #4
  
        tst     r2, #4
 --- a/arch/arm/lib/memzero.S
 +++ b/arch/arm/lib/memzero.S
-@@ -39,6 +39,9 @@
+@@ -39,6 +39,9 @@ ENTRY(__memzero)
   */
        cmp     r1, #16                 @ 1 we can skip this chunk if we
        blt     4f                      @ 1 have < 16 bytes
  /*
   * We need an extra register for this loop - save the return address and
   * use the LR
-@@ -64,6 +67,47 @@
+@@ -64,6 +67,47 @@ ENTRY(__memzero)
        stmneia r0!, {r2, r3, ip, lr}   @ 4
        ldr     lr, [sp], #4            @ 1
  
 +}
 --- a/arch/arm/mach-orion5x/Kconfig
 +++ b/arch/arm/mach-orion5x/Kconfig
-@@ -44,6 +44,36 @@
+@@ -44,6 +44,36 @@ config MACH_LINKSTATION_PRO
          Buffalo Linkstation Pro/Live platform. Both v1 and
          v2 devices are supported.
  
  
  static int __init orion5x_cpu_win_can_remap(int win)
  {
-@@ -87,16 +88,22 @@
+@@ -87,16 +88,22 @@ static int __init orion5x_cpu_win_can_re
  static void __init setup_cpu_win(int win, u32 base, u32 size,
                                 u8 target, u8 attr, int remap)
  {
        }
  }
  
-@@ -109,11 +116,11 @@
+@@ -109,11 +116,11 @@ void __init orion5x_setup_cpu_mbus_bridg
         * First, disable and clear windows.
         */
        for (i = 0; i < 8; i++) {
                }
        }
  
-@@ -128,6 +135,7 @@
+@@ -128,6 +135,7 @@ void __init orion5x_setup_cpu_mbus_bridg
                TARGET_PCIE, ATTR_PCIE_MEM, -1);
        setup_cpu_win(3, ORION5X_PCI_MEM_PHYS_BASE, ORION5X_PCI_MEM_SIZE,
                TARGET_PCI, ATTR_PCI_MEM, -1);
  
        /*
         * Setup MBUS dram target info.
-@@ -147,8 +155,8 @@
+@@ -147,8 +155,8 @@ void __init orion5x_setup_cpu_mbus_bridg
                        w = &orion5x_mbus_dram_info.cs[cs++];
                        w->cs_index = i;
                        w->mbus_attr = 0xf & ~(1 << i);
                }
        }
        orion5x_mbus_dram_info.num_cs = cs;
-@@ -156,25 +164,30 @@
+@@ -156,25 +164,30 @@ void __init orion5x_setup_cpu_mbus_bridg
  
  void __init orion5x_setup_dev_boot_win(u32 base, u32 size)
  {
  }
 --- a/arch/arm/mach-orion5x/common.c
 +++ b/arch/arm/mach-orion5x/common.c
-@@ -39,25 +39,22 @@
+@@ -39,25 +39,22 @@ static struct map_desc orion5x_io_desc[]
                .virtual        = ORION5X_REGS_VIRT_BASE,
                .pfn            = __phys_to_pfn(ORION5X_REGS_PHYS_BASE),
                .length         = ORION5X_REGS_SIZE,
        },
  };
  
-@@ -66,101 +63,32 @@
+@@ -66,101 +63,32 @@ void __init orion5x_map_io(void)
        iotable_init(orion5x_io_desc, ARRAY_SIZE(orion5x_io_desc));
  }
  
  static struct platform_device orion5x_ehci0 = {
        .name           = "orion-ehci",
        .id             = 0,
-@@ -173,6 +101,27 @@
+@@ -173,6 +101,27 @@ static struct platform_device orion5x_eh
        .num_resources  = ARRAY_SIZE(orion5x_ehci0_resources),
  };
  
  static struct platform_device orion5x_ehci1 = {
        .name           = "orion-ehci",
        .id             = 1,
-@@ -185,11 +134,15 @@
+@@ -185,11 +134,15 @@ static struct platform_device orion5x_eh
        .num_resources  = ARRAY_SIZE(orion5x_ehci1_resources),
  };
  
  struct mv643xx_eth_shared_platform_data orion5x_eth_shared_data = {
        .dram           = &orion5x_mbus_dram_info,
        .t_clk          = ORION5X_TCLK,
-@@ -219,7 +172,7 @@
+@@ -219,7 +172,7 @@ static struct resource orion5x_eth_resou
                .start  = IRQ_ORION5X_ETH_SUM,
                .end    = IRQ_ORION5X_ETH_SUM,
                .flags  = IORESOURCE_IRQ,
  };
  
  static struct platform_device orion5x_eth = {
-@@ -238,11 +191,10 @@
+@@ -238,11 +191,10 @@ void __init orion5x_eth_init(struct mv64
        platform_device_register(&orion5x_eth);
  }
  
  static struct mv64xxx_i2c_pdata orion5x_i2c_pdata = {
        .freq_m         = 8, /* assumes 166 MHz TCLK */
        .freq_n         = 3,
-@@ -251,16 +203,15 @@
+@@ -251,16 +203,15 @@ static struct mv64xxx_i2c_pdata orion5x_
  
  static struct resource orion5x_i2c_resources[] = {
        {
        },
  };
  
-@@ -270,36 +221,41 @@
+@@ -270,36 +221,41 @@ static struct platform_device orion5x_i2
        .num_resources  = ARRAY_SIZE(orion5x_i2c_resources),
        .resource       = orion5x_i2c_resources,
        .dev            = {
  };
  
  void __init orion5x_sata_init(struct mv_sata_platform_data *sata_data)
-@@ -309,23 +265,111 @@
+@@ -309,23 +265,111 @@ void __init orion5x_sata_init(struct mv_
        platform_device_register(&orion5x_sata);
  }
  
  /*
   * Identify device ID and rev from PCIe configuration header space '0'.
   */
-@@ -350,8 +394,10 @@
+@@ -350,8 +394,10 @@ static void __init orion5x_id(u32 *dev, 
        } else if (*dev == MV88F5181_DEV_ID) {
                if (*rev == MV88F5181_REV_B1) {
                        *dev_name = "MV88F5181-Rev-B1";
                }
        } else {
                *dev_name = "Device-Unknown";
-@@ -370,15 +416,6 @@
+@@ -370,15 +416,6 @@ void __init orion5x_init(void)
         * Setup Orion address map
         */
        orion5x_setup_cpu_mbus_bridge();
  void orion5x_map_io(void);
  void orion5x_init_irq(void);
  void orion5x_init(void);
-@@ -23,13 +25,19 @@
+@@ -23,13 +25,19 @@ void orion5x_setup_dev1_win(u32 base, u3
  void orion5x_setup_dev2_win(u32 base, u32 size);
  void orion5x_setup_pcie_wa_win(u32 base, u32 size);
  
  
  void orion5x_pcie_id(u32 *dev, u32 *rev);
  int orion5x_pci_sys_setup(int nr, struct pci_sys_data *sys);
-@@ -40,26 +48,9 @@
+@@ -40,26 +48,9 @@ int orion5x_pci_map_irq(struct pci_dev *
   * Valid GPIO pins according to MPP setup, used by machine-setup.
   * (/mach-orion/gpio.c).
   */
  
  /*****************************************************************************
   * DB-88F5281 on board devices
-@@ -86,7 +87,7 @@
+@@ -86,7 +87,7 @@ static struct platform_device db88f5281_
        .name           = "physmap-flash",
        .id             = 0,
        .dev            = {
        },
        .num_resources  = 1,
        .resource       = &db88f5281_boot_flash_resource,
-@@ -110,7 +111,7 @@
+@@ -110,7 +111,7 @@ static struct platform_device db88f5281_
        .name           = "physmap-flash",
        .id             = 1,
        .dev            = {
        },
        .num_resources  = 1,
        .resource       = &db88f5281_nor_flash_resource,
-@@ -125,18 +126,15 @@
+@@ -125,18 +126,15 @@ static struct mtd_partition db88f5281_na
                .name = "kernel",
                .offset = 0,
                .size = SZ_2M,
                .name = "recovery",
                .offset = (SZ_16M + SZ_8M),
                .size = SZ_8M,
-@@ -288,7 +286,6 @@
+@@ -288,7 +286,6 @@ subsys_initcall(db88f5281_pci_init);
   ****************************************************************************/
  static struct mv643xx_eth_platform_data db88f5281_eth_data = {
        .phy_addr       = 8,
  };
  
  /*****************************************************************************
-@@ -301,11 +298,28 @@
+@@ -301,11 +298,28 @@ static struct i2c_board_info __initdata 
  /*****************************************************************************
   * General Setup
   ****************************************************************************/
  };
  
  static void __init db88f5281_init(void)
-@@ -315,39 +329,31 @@
+@@ -315,39 +329,31 @@ static void __init db88f5281_init(void)
         */
        orion5x_init();
  
  
  #define DNS323_GPIO_LED_RIGHT_AMBER   1
  #define DNS323_GPIO_LED_LEFT_AMBER    2
-@@ -52,8 +53,6 @@
+@@ -52,8 +53,6 @@ static int __init dns323_pci_map_irq(str
        if (irq != -1)
                return irq;
  
        return -1;
  }
  
-@@ -81,7 +80,6 @@
+@@ -81,7 +80,6 @@ subsys_initcall(dns323_pci_init);
  
  static struct mv643xx_eth_platform_data dns323_eth_data = {
        .phy_addr = 8,
  };
  
  /****************************************************************************
-@@ -119,7 +117,7 @@
+@@ -119,7 +117,7 @@ static struct mtd_partition dns323_parti
                .name   = "u-boot",
                .size   = 0x00030000,
                .offset = 0x007d0000,
  };
  
  static struct physmap_flash_data dns323_nor_flash_data = {
-@@ -137,7 +135,9 @@
+@@ -137,7 +135,9 @@ static struct resource dns323_nor_flash_
  static struct platform_device dns323_nor_flash = {
        .name           = "physmap-flash",
        .id             = 0,
        .resource       = &dns323_nor_flash_resource,
        .num_resources  = 1,
  };
-@@ -170,7 +170,9 @@
+@@ -170,7 +170,9 @@ static struct gpio_led_platform_data dns
  static struct platform_device dns323_gpio_leds = {
        .name           = "leds-gpio",
        .id             = -1,
  };
  
  /****************************************************************************
-@@ -183,35 +185,53 @@
+@@ -183,35 +185,53 @@ static struct gpio_keys_button dns323_bu
                .gpio           = DNS323_GPIO_KEY_RESET,
                .desc           = "Reset Button",
                .active_low     = 1,
  };
  
  /*
-@@ -225,17 +245,15 @@
+@@ -225,17 +245,15 @@ static struct platform_device *dns323_pl
  static struct i2c_board_info __initdata dns323_i2c_devices[] = {
        {
                I2C_BOARD_INFO("g760a", 0x3e),
  };
  
  /* DNS-323 specific power off method */
-@@ -250,62 +268,35 @@
+@@ -250,62 +268,35 @@ static void __init dns323_init(void)
        /* Setup basic Orion functions. Need to be called early. */
        orion5x_init();
  
  /* Warning: D-Link uses a wrong mach-type (=526) in their bootloader */
 --- a/arch/arm/mach-orion5x/gpio.c
 +++ b/arch/arm/mach-orion5x/gpio.c
-@@ -24,9 +24,12 @@
+@@ -24,9 +24,12 @@ static DEFINE_SPINLOCK(gpio_lock);
  static unsigned long gpio_valid[BITS_TO_LONGS(GPIO_MAX)];
  static const char *gpio_label[GPIO_MAX];  /* non null for allocated GPIOs */
  
  }
  
  /*
-@@ -93,10 +96,10 @@
+@@ -93,10 +96,10 @@ int gpio_get_value(unsigned pin)
  {
        int val, mask = 1 << pin;
  
  
        return val & mask;
  }
-@@ -188,39 +191,39 @@
+@@ -188,39 +191,39 @@ void gpio_display(void)
                        printk("GPIO, free\n");
                } else {
                        printk("GPIO, used by %s, ", gpio_label[i]);
  }
 --- a/arch/arm/mach-orion5x/irq.c
 +++ b/arch/arm/mach-orion5x/irq.c
-@@ -82,7 +82,7 @@
+@@ -82,7 +82,7 @@ static int orion5x_gpio_set_irq_type(u32
        int pin = irq_to_gpio(irq);
        struct irq_desc *desc;
  
                printk(KERN_ERR "orion5x_gpio_set_irq_type failed "
                                "(irq %d, pin %d).\n", irq, pin);
                return -EINVAL;
-@@ -117,7 +117,7 @@
+@@ -117,7 +117,7 @@ static int orion5x_gpio_set_irq_type(u32
                /*
                 * set initial polarity based on current input level
                 */
                    & (1 << pin))
                        orion5x_setbits(GPIO_IN_POL, (1 << pin)); /* falling */
                else
-@@ -149,8 +149,8 @@
+@@ -149,8 +149,8 @@ static void orion5x_gpio_irq_handler(uns
  
        BUG_ON(irq < IRQ_ORION5X_GPIO_0_7 || irq > IRQ_ORION5X_GPIO_24_31);
        offs = (irq - IRQ_ORION5X_GPIO_0_7) * 8;
  
        for (pin = offs; pin < offs + 8; pin++) {
                if (cause & (1 << pin)) {
-@@ -158,9 +158,9 @@
+@@ -158,9 +158,9 @@ static void orion5x_gpio_irq_handler(uns
                        desc = irq_desc + irq;
                        if ((desc->status & IRQ_TYPE_SENSE_MASK) == IRQT_BOTHEDGE) {
                                /* Swap polarity (race with GPIO line) */
                        }
                        desc_handle_irq(irq, desc);
                }
-@@ -175,9 +175,9 @@
+@@ -175,9 +175,9 @@ static void __init orion5x_init_gpio_irq
        /*
         * Mask and clear GPIO IRQ interrupts
         */
  
  /*****************************************************************************
   * KUROBOX-PRO Info
-@@ -53,13 +56,11 @@
+@@ -53,13 +56,11 @@ static struct mtd_partition kurobox_pro_
                .name   = "uImage",
                .offset = 0,
                .size   = SZ_4M,
                .name   = "extra",
                .offset = SZ_4M + SZ_64M,
                .size   = SZ_256M - (SZ_4M + SZ_64M),
-@@ -132,8 +133,6 @@
+@@ -132,8 +133,6 @@ static int __init kurobox_pro_pci_map_ir
        /*
         * PCI isn't used on the Kuro
         */
        return -1;
  }
  
-@@ -161,7 +160,6 @@
+@@ -161,7 +160,6 @@ subsys_initcall(kurobox_pro_pci_init);
  
  static struct mv643xx_eth_platform_data kurobox_pro_eth_data = {
        .phy_addr       = 8,
  };
  
  /*****************************************************************************
-@@ -175,12 +173,169 @@
+@@ -175,12 +173,169 @@ static struct i2c_board_info __initdata 
   * SATA
   ****************************************************************************/
  static struct mv_sata_platform_data kurobox_pro_sata_data = {
  
  static void __init kurobox_pro_init(void)
  {
-@@ -189,46 +344,32 @@
+@@ -189,46 +344,32 @@ static void __init kurobox_pro_init(void
         */
        orion5x_init();
  
 +MACHINE_END
 --- a/arch/arm/mach-orion5x/pci.c
 +++ b/arch/arm/mach-orion5x/pci.c
-@@ -152,6 +152,8 @@
+@@ -152,6 +152,8 @@ static int __init pcie_setup(struct pci_
        if (dev == MV88F5181_DEV_ID || dev == MV88F5182_DEV_ID) {
                printk(KERN_NOTICE "Applying Orion-1/Orion-NAS PCIe config "
                                   "read transaction workaround\n");
                pcie_ops.read = pcie_rd_conf_wa;
        }
  
-@@ -240,13 +242,13 @@
+@@ -240,13 +242,13 @@ static int __init pcie_setup(struct pci_
   * PCI Address Decode Windows registers
   */
  #define PCI_BAR_SIZE_DDR_CS(n)        (((n) == 0) ? ORION5X_PCI_REG(0xc08) : \
  #define PCI_BAR_ENABLE                ORION5X_PCI_REG(0xc3c)
  #define PCI_ADDR_DECODE_CTRL  ORION5X_PCI_REG(0xd3c)
  
-@@ -266,7 +268,7 @@
+@@ -266,7 +268,7 @@ static DEFINE_SPINLOCK(orion5x_pci_lock)
  
  static int orion5x_pci_local_bus_nr(void)
  {
        return((conf & PCI_P2P_BUS_MASK) >> PCI_P2P_BUS_OFFS);
  }
  
-@@ -276,11 +278,11 @@
+@@ -276,11 +278,11 @@ static int orion5x_pci_hw_rd_conf(int bu
        unsigned long flags;
        spin_lock_irqsave(&orion5x_pci_lock, flags);
  
  
        if (size == 1)
                *val = (*val >> (8*(where & 0x3))) & 0xff;
-@@ -300,9 +302,9 @@
+@@ -300,9 +302,9 @@ static int orion5x_pci_hw_wr_conf(int bu
  
        spin_lock_irqsave(&orion5x_pci_lock, flags);
  
  
        if (size == 4) {
                __raw_writel(val, PCI_CONF_DATA);
-@@ -353,9 +355,9 @@
+@@ -353,9 +355,9 @@ static struct pci_ops pci_ops = {
  
  static void __init orion5x_pci_set_bus_nr(int nr)
  {
                /*
                 * PCI-X mode
                 */
-@@ -372,7 +374,7 @@
+@@ -372,7 +374,7 @@ static void __init orion5x_pci_set_bus_n
                 */
                p2p &= ~PCI_P2P_BUS_MASK;
                p2p |= (nr << PCI_P2P_BUS_OFFS);
        }
  }
  
-@@ -399,7 +401,7 @@
+@@ -399,7 +401,7 @@ static void __init orion5x_setup_pci_win
         * First, disable windows.
         */
        win_enable = 0xffffffff;
  
        /*
         * Setup windows for DDR banks.
-@@ -425,10 +427,10 @@
+@@ -425,10 +427,10 @@ static void __init orion5x_setup_pci_win
                 */
                reg = PCI_CONF_REG_BAR_HI_CS(cs->cs_index);
                orion5x_pci_hw_wr_conf(bus, 0, func, reg, 4, 0);
  
                /*
                 * Enable decode window for this chip select.
-@@ -439,7 +441,7 @@
+@@ -439,7 +441,7 @@ static void __init orion5x_setup_pci_win
        /*
         * Re-enable decode windows.
         */
  
  /*****************************************************************************
   * RD-88F5182 Info
-@@ -125,6 +126,7 @@
+@@ -125,6 +126,7 @@ static int __init rd88f5182_dbgled_init(
  
                leds_event = rd88f5182_dbgled_event;
        }
        return 0;
  }
  
-@@ -220,7 +222,6 @@
+@@ -220,7 +222,6 @@ subsys_initcall(rd88f5182_pci_init);
  
  static struct mv643xx_eth_platform_data rd88f5182_eth_data = {
        .phy_addr       = 8,
  };
  
  /*****************************************************************************
-@@ -234,15 +235,34 @@
+@@ -234,15 +235,34 @@ static struct i2c_board_info __initdata 
   * Sata
   ****************************************************************************/
  static struct mv_sata_platform_data rd88f5182_sata_data = {
  };
  
  static void __init rd88f5182_init(void)
-@@ -252,35 +272,9 @@
+@@ -252,35 +272,9 @@ static void __init rd88f5182_init(void)
         */
        orion5x_init();
  
         * MPP[20] PCI Clock to MV88F5182
         * MPP[21] PCI Clock to mini PCI CON11
         * MPP[22] USB 0 over current indication
-@@ -289,16 +283,23 @@
+@@ -289,16 +283,23 @@ static void __init rd88f5182_init(void)
         * MPP[25] USB 0 over current enable
         */
  
  };
  
  /*****************************************************************************
-@@ -164,12 +168,12 @@
+@@ -164,12 +168,12 @@ static int __init qnap_ts209_pci_map_irq
  }
  
  static struct hw_pci qnap_ts209_pci __initdata = {
  };
  
  static int __init qnap_ts209_pci_init(void)
-@@ -183,96 +187,6 @@
+@@ -183,96 +187,6 @@ static int __init qnap_ts209_pci_init(vo
  subsys_initcall(qnap_ts209_pci_init);
  
  /*****************************************************************************
   * RTC S35390A on I2C bus
   ****************************************************************************/
  
-@@ -280,7 +194,7 @@
+@@ -280,7 +194,7 @@ static void __init ts209_find_mac_addr(v
  
  static struct i2c_board_info __initdata qnap_ts209_i2c_rtc = {
        I2C_BOARD_INFO("s35390a", 0x30),
  };
  
  /****************************************************************************
-@@ -297,70 +211,63 @@
+@@ -297,70 +211,63 @@ static struct gpio_keys_button qnap_ts20
                .gpio           = QNAP_TS209_GPIO_KEY_MEDIA,
                .desc           = "USB Copy Button",
                .active_low     = 1,
  static void __init qnap_ts209_init(void)
  {
        /*
-@@ -368,51 +275,33 @@
+@@ -368,51 +275,33 @@ static void __init qnap_ts209_init(void)
         */
        orion5x_init();
  
  
        /* Get RTC IRQ and register the chip */
        if (gpio_request(TS209_RTC_GPIO, "rtc") == 0) {
-@@ -425,14 +314,12 @@
+@@ -425,14 +314,12 @@ static void __init qnap_ts209_init(void)
                pr_warning("qnap_ts209_init: failed to get RTC IRQ\n");
        i2c_register_board_info(0, &qnap_ts209_i2c_rtc, 1);
  
 +MACHINE_END
 --- a/arch/arm/mm/Kconfig
 +++ b/arch/arm/mm/Kconfig
-@@ -365,7 +365,7 @@
+@@ -365,7 +365,7 @@ config CPU_XSC3
  # Feroceon
  config CPU_FEROCEON
        bool
        default y
        select CPU_32v5
        select CPU_ABRT_EV5T
-@@ -373,7 +373,7 @@
+@@ -373,7 +373,7 @@ config CPU_FEROCEON
        select CPU_CACHE_VIVT
        select CPU_CP15_MMU
        select CPU_COPY_FEROCEON if MMU
  
  config CPU_FEROCEON_OLD_ID
        bool "Accept early Feroceon cores with an ARM926 ID"
-@@ -551,6 +551,11 @@
+@@ -551,6 +551,11 @@ config CPU_TLB_V4WBI
          ARM Architecture Version 4 TLB with writeback cache and invalidate
          instruction cache entry.
  
  config CPU_TLB_V6
        bool
  
-@@ -709,6 +714,14 @@
+@@ -709,6 +714,14 @@ config OUTER_CACHE
        bool
        default n
  
        depends on REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176
 --- a/arch/arm/mm/Makefile
 +++ b/arch/arm/mm/Makefile
-@@ -46,6 +46,7 @@
+@@ -46,6 +46,7 @@ obj-$(CONFIG_CPU_TLB_V3)     += tlb-v3.o
  obj-$(CONFIG_CPU_TLB_V4WT)    += tlb-v4.o
  obj-$(CONFIG_CPU_TLB_V4WB)    += tlb-v4wb.o
  obj-$(CONFIG_CPU_TLB_V4WBI)   += tlb-v4wbi.o
  obj-$(CONFIG_CPU_TLB_V6)      += tlb-v6.o
  obj-$(CONFIG_CPU_TLB_V7)      += tlb-v7.o
  
-@@ -73,4 +74,5 @@
+@@ -73,4 +74,5 @@ obj-$(CONFIG_CPU_FEROCEON)   += proc-feroc
  obj-$(CONFIG_CPU_V6)          += proc-v6.o
  obj-$(CONFIG_CPU_V7)          += proc-v7.o
  
        mov     pc, lr
  
  /*
-@@ -59,6 +79,13 @@
+@@ -59,6 +79,13 @@ ENTRY(cpu_feroceon_proc_fin)
        mov     ip, #PSR_F_BIT | PSR_I_BIT | SVC_MODE
        msr     cpsr_c, ip
        bl      feroceon_flush_kern_cache_all
        mrc     p15, 0, r0, c1, c0, 0           @ ctrl register
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
-@@ -117,11 +144,19 @@
+@@ -117,11 +144,19 @@ ENTRY(feroceon_flush_user_cache_all)
   */
  ENTRY(feroceon_flush_kern_cache_all)
        mov     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
        mov     pc, lr
-@@ -138,7 +173,6 @@
+@@ -138,7 +173,6 @@ __flush_whole_cache:
   */
        .align  5
  ENTRY(feroceon_flush_user_cache_range)
        sub     r3, r1, r0                      @ calculate total size
        cmp     r3, #CACHE_DLIMIT
        bgt     __flush_whole_cache
-@@ -152,6 +186,7 @@
+@@ -152,6 +186,7 @@ ENTRY(feroceon_flush_user_cache_range)
        cmp     r0, r1
        blo     1b
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
        mov     pc, lr
  
-@@ -209,6 +244,20 @@
+@@ -209,6 +244,20 @@ ENTRY(feroceon_flush_kern_dcache_page)
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     pc, lr
  
  /*
   *    dma_inv_range(start, end)
   *
-@@ -225,10 +274,10 @@
+@@ -225,10 +274,10 @@ ENTRY(feroceon_flush_kern_dcache_page)
        .align  5
  ENTRY(feroceon_dma_inv_range)
        tst     r0, #CACHE_DLINESIZE - 1
  1:    mcr     p15, 0, r0, c7, c6, 1           @ invalidate D entry
        add     r0, r0, #CACHE_DLINESIZE
        cmp     r0, r1
-@@ -236,6 +285,22 @@
+@@ -236,6 +285,22 @@ ENTRY(feroceon_dma_inv_range)
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     pc, lr
  
  /*
   *    dma_clean_range(start, end)
   *
-@@ -256,6 +321,19 @@
+@@ -256,6 +321,19 @@ ENTRY(feroceon_dma_clean_range)
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     pc, lr
  
  /*
   *    dma_flush_range(start, end)
   *
-@@ -274,6 +352,19 @@
+@@ -274,6 +352,19 @@ ENTRY(feroceon_dma_flush_range)
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     pc, lr
  
  ENTRY(feroceon_cache_fns)
        .long   feroceon_flush_kern_cache_all
        .long   feroceon_flush_user_cache_all
-@@ -285,12 +376,33 @@
+@@ -285,12 +376,33 @@ ENTRY(feroceon_cache_fns)
        .long   feroceon_dma_clean_range
        .long   feroceon_dma_flush_range
  
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     pc, lr
  
-@@ -306,16 +418,25 @@
+@@ -306,16 +418,25 @@ ENTRY(cpu_feroceon_dcache_clean_area)
        .align  5
  ENTRY(cpu_feroceon_switch_mm)
  #ifdef CONFIG_MMU
  
  /*
   * cpu_feroceon_set_pte_ext(ptep, pte, ext)
-@@ -345,6 +466,9 @@
+@@ -345,6 +466,9 @@ ENTRY(cpu_feroceon_set_pte_ext)
        str     r2, [r0]                        @ hardware version
        mov     r0, r0
        mcr     p15, 0, r0, c7, c10, 1          @ clean D entry
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
  #endif
        mov     pc, lr
-@@ -414,6 +538,21 @@
+@@ -414,6 +538,21 @@ cpu_feroceon_name:
        .asciz  "Feroceon"
        .size   cpu_feroceon_name, . - cpu_feroceon_name
  
        .align
  
        .section ".proc.info.init", #alloc, #execinstr
-@@ -421,15 +560,15 @@
+@@ -421,15 +560,15 @@ cpu_feroceon_name:
  #ifdef CONFIG_CPU_FEROCEON_OLD_ID
        .type   __feroceon_old_id_proc_info,#object
  __feroceon_old_id_proc_info:
                PMD_BIT4 | \
                PMD_SECT_AP_WRITE | \
                PMD_SECT_AP_READ
-@@ -445,17 +584,17 @@
+@@ -445,17 +584,17 @@ __feroceon_old_id_proc_info:
        .size   __feroceon_old_id_proc_info, . - __feroceon_old_id_proc_info
  #endif
  
                PMD_BIT4 | \
                PMD_SECT_AP_WRITE | \
                PMD_SECT_AP_READ
-@@ -463,9 +602,59 @@
+@@ -463,9 +602,59 @@ __feroceon_proc_info:
        .long   cpu_arch_name
        .long   cpu_elf_name
        .long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
 +      .size   __88fr131_proc_info, . - __88fr131_proc_info
 --- a/arch/arm/plat-orion/irq.c
 +++ b/arch/arm/plat-orion/irq.c
-@@ -36,8 +36,8 @@
+@@ -36,8 +36,8 @@ static void orion_irq_unmask(u32 irq)
  
  static struct irq_chip orion_irq_chip = {
        .name           = "orion_irq",
        .unmask         = orion_irq_unmask,
  };
  
-@@ -59,6 +59,7 @@
+@@ -59,6 +59,7 @@ void __init orion_irq_init(unsigned int 
                set_irq_chip(irq, &orion_irq_chip);
                set_irq_chip_data(irq, maskaddr);
                set_irq_handler(irq, handle_level_irq);
  #define PCIE_STAT_OFF         0x1a04
  #define  PCIE_STAT_DEV_OFFS           20
  #define  PCIE_STAT_DEV_MASK           0x1f
-@@ -62,6 +63,11 @@
+@@ -62,6 +63,11 @@ int orion_pcie_link_up(void __iomem *bas
        return !(readl(base + PCIE_STAT_OFF) & PCIE_STAT_LINK_DOWN);
  }
  
        u32 stat = readl(base + PCIE_STAT_OFF);
 --- a/arch/arm/plat-orion/time.c
 +++ b/arch/arm/plat-orion/time.c
-@@ -74,7 +74,7 @@
+@@ -74,7 +74,7 @@ orion_clkevt_next_event(unsigned long de
        /*
         * Clear and enable clockevent timer interrupt.
         */
  
        u = readl(BRIDGE_MASK);
        u |= BRIDGE_INT_TIMER1;
-@@ -138,7 +138,7 @@
+@@ -138,7 +138,7 @@ orion_clkevt_mode(enum clock_event_mode 
                /*
                 * ACK pending timer interrupt.
                 */
  
        }
        local_irq_restore(flags);
-@@ -159,7 +159,7 @@
+@@ -159,7 +159,7 @@ static irqreturn_t orion_timer_interrupt
        /*
         * ACK timer interrupt and call event handler.
         */
        u16 byte_cnt;           /* Descriptor buffer byte count         */
        u16 buf_size;           /* Buffer size                          */
        u32 cmd_sts;            /* Descriptor command status            */
-@@ -441,7 +180,7 @@
+@@ -441,7 +180,7 @@ struct eth_rx_desc {
        u32 buf_ptr;            /* Descriptor buffer pointer            */
  };
  
        u16 byte_cnt;           /* buffer byte count                    */
        u16 l4i_chk;            /* CPU provided TCP checksum            */
        u32 cmd_sts;            /* Command/status field                 */
-@@ -449,7 +188,7 @@
+@@ -449,7 +188,7 @@ struct eth_tx_desc {
        u32 buf_ptr;            /* pointer to buffer for this descriptor*/
  };
  #elif defined(__LITTLE_ENDIAN)
        u32 cmd_sts;            /* Descriptor command status            */
        u16 buf_size;           /* Buffer size                          */
        u16 byte_cnt;           /* Descriptor buffer byte count         */
-@@ -457,7 +196,7 @@
+@@ -457,7 +196,7 @@ struct eth_rx_desc {
        u32 next_desc_ptr;      /* Next descriptor pointer              */
  };
  
        u32 cmd_sts;            /* Command/status field                 */
        u16 l4i_chk;            /* CPU provided TCP checksum            */
        u16 byte_cnt;           /* buffer byte count                    */
-@@ -468,18 +207,59 @@
+@@ -468,18 +207,59 @@ struct eth_tx_desc {
  #error One of __BIG_ENDIAN or __LITTLE_ENDIAN must be defined
  #endif
  
        u64 good_octets_received;
        u32 bad_octets_received;
        u32 internal_mac_transmit_err;
-@@ -512,461 +292,282 @@
+@@ -512,461 +292,282 @@ struct mv643xx_mib_counters {
        u32 late_collision;
  };
  
                                stats->rx_errors++;
  
                        dev_kfree_skb_irq(skb);
-@@ -975,668 +576,120 @@
+@@ -975,668 +576,120 @@ static int mv643xx_eth_receive_queue(str
                         * The -4 is for the CRC in the trailer of the
                         * received packet
                         */
                desc->l4i_chk = 0;
                desc->byte_cnt = this_frag->size;
                desc->buf_ptr = dma_map_page(NULL, this_frag->page,
-@@ -1651,37 +704,28 @@
+@@ -1651,37 +704,28 @@ static inline __be16 sum16_as_be(__sum16
        return (__force __be16)sum;
  }
  
        }
  
        desc->byte_cnt = length;
-@@ -1690,13 +734,13 @@
+@@ -1690,13 +734,13 @@ static void eth_tx_submit_descs_for_skb(
        if (skb->ip_summed == CHECKSUM_PARTIAL) {
                BUG_ON(skb->protocol != htons(ETH_P_IP));
  
                        desc->l4i_chk = ntohs(sum16_as_be(udp_hdr(skb)->check));
                        break;
                case IPPROTO_TCP:
-@@ -1707,7 +751,7 @@
+@@ -1707,7 +751,7 @@ static void eth_tx_submit_descs_for_skb(
                }
        } else {
                /* Errata BTS #50, IHL must be 5 if no HW checksum */
                desc->l4i_chk = 0;
        }
  
-@@ -1717,1649 +761,1818 @@
+@@ -1717,1649 +761,1818 @@ static void eth_tx_submit_descs_for_skb(
  
        /* ensure all descriptors are written before poking hardware */
        wmb();
  
  static inline void __iomem *
  __arch_ioremap(unsigned long paddr, size_t size, unsigned int mtype)
-@@ -53,15 +52,12 @@
+@@ -53,15 +52,12 @@ static inline void __iomem *__io(unsigne
  /*****************************************************************************
   * Helpers to access Orion registers
   ****************************************************************************/
  #define v4wb_tlb_flags        (TLB_WB | TLB_DCLEAN | \
                         TLB_V4_I_FULL | TLB_V4_D_FULL | \
                         TLB_V4_D_PAGE)
-@@ -245,12 +264,14 @@
+@@ -245,12 +264,14 @@ extern struct cpu_tlb_fns cpu_tlb;
  #define possible_tlb_flags    (v3_possible_flags | \
                                 v4_possible_flags | \
                                 v4wbi_possible_flags | \
                                 v4wb_always_flags & \
                                 v6wbi_always_flags)
  
-@@ -417,6 +438,11 @@
+@@ -417,6 +438,11 @@ static inline void flush_pmd_entry(pmd_t
        if (tlb_flag(TLB_DCLEAN))
                asm("mcr        p15, 0, %0, c7, c10, 1  @ flush_pmd"
                        : : "r" (pmd) : "cc");
        if (tlb_flag(TLB_WB))
                dsb();
  }
-@@ -428,6 +454,10 @@
+@@ -428,6 +454,10 @@ static inline void clean_pmd_entry(pmd_t
        if (tlb_flag(TLB_DCLEAN))
                asm("mcr        p15, 0, %0, c7, c10, 1  @ flush_pmd"
                        : : "r" (pmd) : "cc");