linux/arch/arm/kernel
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
..
.gitignore [ARM] 5194/1: update .gitignore 2008-08-12 19:54:09 +01:00
armksyms.c ARM: 6314/1: ftrace: allow build without frame pointers on ARM 2010-09-02 15:24:53 +01:00
arthur.c [ARM] arm/kernel/arthur.c: add MODULE_LICENSE 2008-05-17 22:55:16 +01:00
asm-offsets.c arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
atags.c clean up atags exporting code 2008-05-30 10:33:49 +02:00
atags.h [ARM] 4736/1: Export atags to userspace and allow kexec to use customised atags 2008-02-04 13:21:03 +00:00
bios32.c ARM: 6058/1: Add support for PCI domains 2010-04-22 21:38:11 +01:00
calls.S ARM: 6343/1: wire up fanotify and prlimit64 syscalls on ARM 2010-09-01 10:06:08 +01:00
compat.c ARM: deprecate support for old way to pass kernel parameters 2010-07-07 16:38:36 +02:00
compat.h ARM: deprecate support for old way to pass kernel parameters 2010-07-07 16:38:36 +02:00
crash_dump.c ARM: 6120/1: kdump: implement copy_oldmem_page() 2010-07-09 15:00:53 +01:00
crunch-bits.S [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
crunch.c ARM: Convert VFP/Crunch/XscaleCP thread_release() to exit_thread() 2009-12-18 14:53:41 +00:00
debug.S arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
dma-isa.c ARM: dma-isa: request cascade channel after registering it 2009-12-24 18:34:08 +00:00
dma.c ARM: dma: add /proc/dma support to arch/arm/kernel/dma.c 2010-04-14 13:13:30 +01:00
early_printk.c ARM: Add an earlyprintk debug console 2009-12-09 10:02:18 +00:00
ecard.c arm: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-06 10:44:43 -08:00
ecard.h [ARM] rpc: ecard: remove deprecated ecard_address() and relatives 2008-07-03 14:25:58 +01:00
elf.c ARM: 5883/1: Revert "disable NX support for OABI-supporting kernels" 2010-01-18 14:12:11 +00:00
entry-armv.S ARM: 6516/1: Allow SMP_ON_UP to work with Thumb-2 kernels. 2010-12-20 15:09:12 +00:00
entry-common.S Merge branch 'devel-stable' into devel 2010-10-19 22:06:36 +01:00
entry-header.S ARM: 5991/1: Fix regression in restore_user_regs macro 2010-03-15 17:20:08 +00:00
etm.c Merge branch 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl 2010-10-22 10:52:56 -07:00
fiq.c ARM: fix /proc/interrupts formatting 2010-12-20 15:07:32 +00:00
ftrace.c ARM: 6319/1: ftrace: add Thumb-2 support to dynamic ftrace 2010-09-02 15:28:43 +01:00
head-common.S Merge branch 'hotplug' into devel 2010-10-18 22:34:47 +01:00
head-nommu.S ARM: no need for nommu to jump through the hoops that mmu does 2010-10-08 10:07:27 +01:00
head.S ARM: 6516/1: Allow SMP_ON_UP to work with Thumb-2 kernels. 2010-12-20 15:09:12 +00:00
hw_breakpoint.c ARM: arch/arm/kernel/hw_breakpoint.c: Convert WARN_ON to WARN 2010-11-07 17:58:39 +00:00
init_task.c Use new __init_task_data macro in arch init_task.c files. 2009-09-21 06:27:08 +02:00
io.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
irq.c ARM: SMP: provide individual IPI interrupt statistics 2010-12-20 15:08:01 +00:00
isa.c sysctl: Drop & in front of every proc_handler. 2009-11-18 08:37:40 -08:00
iwmmxt.S
kgdb.c kgdb,arm: fix register dump 2010-10-29 13:14:40 -05:00
kprobes-decode.c ARM: 6412/1: kprobes-decode: add support for MOVW instruction 2010-10-04 19:21:37 +01:00
kprobes.c Merge branch 'master' into export-slabh 2010-04-05 11:37:28 +09:00
leds.c ARM: move LED support code out of arch/arm/kernel/time.c 2010-02-15 21:39:12 +00:00
machine_kexec.c arm: Disable outer (L2) cache in kexec 2010-10-26 11:39:56 +05:30
Makefile ARM: 6358/1: hw-breakpoint: add HAVE_HW_BREAKPOINT to Kconfig 2010-09-08 10:05:01 +01:00
module.c ARM: 6340/1: module - additional unwind tables for exit/devexit sections 2010-09-02 15:31:35 +01:00
perf_event.c ARM: 6469/1: perf-events: squash compiler warning 2010-11-07 16:12:38 +00:00
pmu.c ARM: 6064/1: pmu: register IRQs at runtime 2010-05-17 11:53:57 +01:00
process.c Merge branch 'devel-stable' into devel 2010-10-19 22:06:36 +01:00
ptrace.c ptrace: cleanup arch_ptrace() on ARM 2010-10-27 18:03:10 -07:00
ptrace.h arm: use generic ptrace_resume code 2010-03-12 15:52:38 -08:00
relocate_kernel.S ARM: 6119/1: kdump: skip indirection page when crashing 2010-07-09 15:00:52 +01:00
return_address.c [ARM] 5613/1: implement CALLER_ADDRESSx 2009-07-21 17:21:28 +01:00
setup.c Merge branches 'at91', 'dcache', 'ftrace', 'hwbpt', 'misc', 'mmci', 's3c', 'st-ux' and 'unwind' into devel 2010-10-18 22:34:25 +01:00
signal.c ARM: 6051/1: VFP: preserve the HW context when calling signal handlers 2010-04-14 11:11:30 +01:00
signal.h ARM: Fix signal restart issues with NX and OABI compat 2009-10-25 15:39:37 +00:00
smp.c ARM: CPU hotplug: ensure correct ordering of unplug 2010-12-20 15:09:11 +00:00
smp_scu.c Check whether the SCU was already initialised 2009-11-05 10:10:36 +00:00
smp_twd.c ARM: SMP: Always enable clock event broadcast support 2010-07-27 10:48:42 +01:00
stacktrace.c ARM: 6468/1: backtrace: fix calculation of thread stack base 2010-11-07 16:12:37 +00:00
sys_arm.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
sys_oabi-compat.c Mark arguments to certain syscalls as being const 2010-08-13 16:53:13 -07:00
tcm.c ARM: 6225/1: make TCM allocation static and common for all archs 2010-07-27 10:42:38 +01:00
tcm.h ARM: 5580/2: ARM TCM (Tightly-Coupled Memory) support v3 2009-09-15 22:11:05 +01:00
thumbee.c Fix the teehbr_read function prototype 2008-11-10 14:14:11 +00:00
time.c ARM: convert arm to arch_gettimeoffset() 2010-03-24 08:08:58 +00:00
traps.c ARM: arch/arm/kernel/traps.c: Convert sprintf_symbol to %pS 2010-11-07 17:58:40 +00:00
unwind.c ARM: 6468/1: backtrace: fix calculation of thread stack base 2010-11-07 16:12:37 +00:00
vmlinux.lds.S ARM: 6465/1: Fix data abort accessing proc_info from __lookup_processor_type 2010-10-27 21:40:29 +01:00
xscale-cp0.c ARM: Convert VFP/Crunch/XscaleCP thread_release() to exit_thread() 2009-12-18 14:53:41 +00:00