linux/arch/arm
Dave Martin ed3768a8d9 ARM: 6516/1: Allow SMP_ON_UP to work with Thumb-2 kernels.
* __fixup_smp_on_up has been modified with support for the
    THUMB2_KERNEL case.  For THUMB2_KERNEL only, fixups are split
    into halfwords in case of misalignment, since we can't rely on
    unaligned accesses working before turning the MMU on.

    No attempt is made to optimise the aligned case, since the
    number of fixups is typically small, and it seems best to keep
    the code as simple as possible.

  * Add a rotate in the fixup_smp code in order to support
    CPU_BIG_ENDIAN, as suggested by Nicolas Pitre.

  * Add an assembly-time sanity-check to ALT_UP() to ensure that
    the content really is the right size (4 bytes).

    (No check is done for ALT_SMP().  Possibly, this could be fixed
    by splitting the two uses ot ALT_SMP() (ALT_SMP...SMP_UP versus
    ALT_SMP...SMP_UP_B) into two macros.  In the first case,
    ALT_SMP needs to expand to >= 4 bytes, not == 4.)

  * smp_mpidr.h (which implements ALT_SMP()/ALT_UP() manually due
    to macro limitations) has not been modified: the affected
    instruction (mov) has no 16-bit encoding, so the correct
    instruction size is satisfied in this case.

  * A "mode" parameter has been added to smp_dmb:

    smp_dmb arm @ assumes 4-byte instructions (for ARM code, e.g. kuser)
    smp_dmb     @ uses W() to ensure 4-byte instructions for ALT_SMP()

    This avoids assembly failures due to use of W() inside smp_dmb,
    when assembling pure-ARM code in the vectors page.

    There might be a better way to achieve this.

  * Kconfig: make SMP_ON_UP depend on
    (!THUMB2_KERNEL || !BIG_ENDIAN) i.e., THUMB2_KERNEL is now
    supported, but only if !BIG_ENDIAN (The fixup code for Thumb-2
    currently assumes little-endian order.)

Tested using a single generic realview kernel on:
	ARM RealView PB-A8 (CONFIG_THUMB2_KERNEL={n,y})
	ARM RealView PBX-A9 (SMP)

Signed-off-by: Dave Martin <dave.martin@linaro.org>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2010-12-20 15:09:12 +00:00
..
boot ARM: avoid marking decompressor .stack section as having contents 2010-11-22 12:00:59 +00:00
common ARM: GIC: don't disable software generated interrupts 2010-11-12 15:15:29 +00:00
configs at91: merge all at91rm9200 defconfig in one single file 2010-11-30 10:59:15 +01:00
include/asm ARM: 6516/1: Allow SMP_ON_UP to work with Thumb-2 kernels. 2010-12-20 15:09:12 +00:00
kernel ARM: 6516/1: Allow SMP_ON_UP to work with Thumb-2 kernels. 2010-12-20 15:09:12 +00:00
lib ARM: 6482/2: Fix find_next_zero_bit and related assembly 2010-11-24 20:17:46 +00:00
mach-aaec2000 ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-at91 at91/board-yl-9200: fix typo in video support 2010-11-30 17:23:41 +01:00
mach-bcmring ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-clps711x ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-cns3xxx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-davinci ASoC: davinci: fixes for multi-component 2010-11-17 18:36:40 +00:00
mach-dove arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ebsa110 ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-ep93xx ARM: 6462/1: EP93xx: Document DMA M2P API 2010-11-07 16:13:30 +00:00
mach-footbridge ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-gemini arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-h720x ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-imx ARM i.MX27 eukrea: Fix compilation 2010-11-15 09:25:05 +01:00
mach-integrator ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-iop13xx Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-10-21 16:42:32 -07:00
mach-iop32x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-iop33x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ixp4xx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ixp23xx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ixp2000 ARM: 6460/1: ixp2000: fix type of ixp2000_timer_interrupt 2010-10-27 21:40:28 +01:00
mach-kirkwood Merge git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion 2010-11-07 16:10:56 +00:00
mach-ks8695 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-l7200/include/mach arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
mach-lh7a40x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-loki arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-lpc32xx Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-10-21 16:42:32 -07:00
mach-mmp ARM: mmp: fix cpuid detection on mmp2 2010-11-03 23:11:16 +08:00
mach-msm ARM: SMP: pass an ipi number to smp_cross_call() 2010-12-03 08:26:30 +00:00
mach-mv78xx0 Merge git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion 2010-11-07 16:10:56 +00:00
mach-mx3 ARM i.MX pcm037 eet: compile fixes 2010-11-15 09:25:03 +01:00
mach-mx5 Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable 2010-10-28 11:13:00 +01:00
mach-mx25 mx25: fix spi device registration typo 2010-11-15 09:25:06 +01:00
mach-mxc91231 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-netx ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-nomadik arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ns9xxx arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
mach-nuc93x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-omap1 ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-omap2 ARM: CPU hotplug: remove bug checks in platform_cpu_die() 2010-12-20 15:09:10 +00:00
mach-orion5x Merge git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion 2010-11-07 16:10:56 +00:00
mach-pnx4008 ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-pxa ARM: pxa/saar: fix the building failure caused by typo 2010-11-03 23:11:19 +08:00
mach-realview ARM: SMP: remove smp_mpidr.h 2010-12-20 15:09:11 +00:00
mach-rpc ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-s3c24a0/include/mach Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-s3c64xx ARM: S3C64XX: fix uart clock setup for mini6410/real6410 2010-11-25 10:58:11 +09:00
mach-s3c2400
mach-s3c2410 ARM: S3C2410: Adapt h1940-bluetooth to gpiolib changes 2010-11-25 10:58:10 +09:00
mach-s3c2412 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-s3c2416 ARM: S3C24XX: Fix UART3 submask on S3C2416 and S3C2443 2010-11-25 10:58:11 +09:00
mach-s3c2440 Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-10-30 08:26:25 -07:00
mach-s3c2443 ARM: S3C24XX: Fix UART3 submask on S3C2416 and S3C2443 2010-11-25 10:58:11 +09:00
mach-s5p64x0 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-s5p6442 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-s5pc100 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
mach-s5pv210 ARM: S5PV210: Fix sysdev related warning messages 2010-11-25 10:58:11 +09:00
mach-s5pv310 ARM: SMP: remove smp_mpidr.h 2010-12-20 15:09:11 +00:00
mach-sa1100 ARM: 6449/1: Fix for compiler warning of uninitialized variable. 2010-10-27 21:40:28 +01:00
mach-shark ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-shmobile Merge branch 'rmobile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2010-11-27 07:17:16 +09:00
mach-spear3xx
mach-spear6xx
mach-stmp37xx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-stmp378x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-tcc8k arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-tegra ARM: SMP: remove smp_mpidr.h 2010-12-20 15:09:11 +00:00
mach-u300 Merge branch 'next-spi' of git://git.secretlab.ca/git/linux-2.6 2010-11-01 07:50:43 -04:00
mach-ux500 ARM: SMP: remove smp_mpidr.h 2010-12-20 15:09:11 +00:00
mach-versatile ARM: 6484/1: fix compile warning in mm/init.c 2010-11-21 22:05:56 +00:00
mach-vexpress ARM: SMP: remove smp_mpidr.h 2010-12-20 15:09:11 +00:00
mach-w90x900 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mm ARM: avoid annoying <4>'s in printk output 2010-11-23 22:27:55 +00:00
nwfpe Update broken web addresses in arch directory. 2010-10-18 11:03:21 +02:00
oprofile oprofile: Abstract the perf-events backend 2010-10-11 17:46:16 +02:00
plat-iop Merge branch 'misc' into devel 2010-07-31 14:20:02 +01:00
plat-mxc ARM i.MX spi: fix compilation for i.MX21 2010-11-15 09:25:04 +01:00
plat-nomadik ARM: 6488/1: nomadik: prevent sched_clock() wraparound 2010-11-21 22:05:57 +00:00
plat-omap ARM: SMP: remove smp_mpidr.h 2010-12-20 15:09:11 +00:00
plat-orion [ARM] Kirkwood: restrict the scope of the PCIe reset workaround 2010-10-21 15:52:03 -04:00
plat-pxa mmc: sdhci: 8-bit bus width changes 2010-11-22 15:12:04 -05:00
plat-s3c24xx ARM: S3C24XX: Fix wrong s3c_gpio_cfgpull 2010-11-25 10:58:10 +09:00
plat-s5p ARM: S5P: Add initial map for GPIO2 and GPIO3 2010-10-25 16:06:22 +09:00
plat-samsung Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-28 12:27:34 +01:00
plat-spear arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
plat-stmp3xxx arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
plat-tcc arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
plat-versatile
tools ARM: Update mach-types 2010-09-09 22:49:26 +01:00
vfp
Kconfig ARM: 6516/1: Allow SMP_ON_UP to work with Thumb-2 kernels. 2010-12-20 15:09:12 +00:00
Kconfig-nommu
Kconfig.debug Merge branch 'devel-stable' into devel 2010-10-19 22:06:36 +01:00
Makefile Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-19 20:12:24 +01:00