linux_dsm_epyc7002/arch/arm
Mikael Pettersson e589ed23dd [ARM] 5218/1: arm: improved futex support
Linux/ARM currently doesn't support robust or PI futexes.
The problem is that the kernel wants to perform certain ops
(cmpxchg, set, add, or, andn, xor) atomically on user-space
addresses, and ARM's futex.h doesn't support that.

This patch adds that support, but only for uniprocessor machines.
For UP it's enough to disable preemption to ensure mutual exclusion
with other software agents (futexes don't need to care about other
hardware agents, fortunately).

This patch is based on one posted by Khem Raj on 2007-08-01
<http://marc.info/?l=linux-arm-kernel&m=118599407413016&w=2>.
(That patch is included in the -RT kernel patches.)
My changes since that version include:
* corrected implementation of FUTEX_OP_ANDN (must complement oparg)
* added missing memory clobber to futex_atomic_cmpxchg_inatomic()
* removed spinlock because it's unnecessary for UP and insufficient
  for SMP, instead the code is restricted to UP and relies on the
  fact that pagefault_disable() also disables preemption
* coding style cleanups

Tested on ARMv5 XScales with the glibc-2.6 nptl test suite.

Tested-by: Bruce Ashfield <bruce.ashfield@windriver.com>

Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-09-01 12:06:26 +01:00
..
boot [ARM] 5194/1: update .gitignore 2008-08-12 19:54:09 +01:00
common [ARM] dma-mapping: provide sync_range APIs 2008-08-10 14:05:14 +01:00
configs [ARM] Orion: enable CONFIG_RTC_DRV_S35390A in the defconfg for QNAP devices 2008-08-09 15:17:28 +02:00
include/asm [ARM] 5218/1: arm: improved futex support 2008-09-01 12:06:26 +01:00
kernel [ARM] 5206/1: remove kprobe_trap_handler() hack 2008-09-01 12:06:26 +01:00
lib [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-aaec2000 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-at91 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-clps711x [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-clps7500 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-davinci [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-ebsa110 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-ep93xx [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-footbridge [ARM] CATS: Do not try and map bad PCI IRQ numbers 2008-08-09 13:51:53 +01:00
mach-h720x [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-imx [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-integrator [ARM] fix impd1.c build warning 2008-08-18 13:52:07 +01:00
mach-iop13xx [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-iop32x [ARM] cputype: separate definitions, use them 2008-09-01 12:06:23 +01:00
mach-iop33x [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-ixp4xx [ARM] cputype: separate definitions, use them 2008-09-01 12:06:23 +01:00
mach-ixp23xx [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-ixp2000 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-kirkwood [ARM] Kirkwood: instantiate the orion_spi driver in the platform code 2008-08-09 15:38:18 +02:00
mach-ks8695 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-l7200 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-lh7a40x [ARM] 5191/1: ARM: remove CVS keywords 2008-08-16 20:01:18 +01:00
mach-loki [ARM] Move include/asm-arm/plat-orion to arch/arm/plat-orion/include/plat 2008-08-09 13:44:58 +02:00
mach-msm [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-mv78xx0 [ARM] Move include/asm-arm/plat-orion to arch/arm/plat-orion/include/plat 2008-08-09 13:44:58 +02:00
mach-mx2 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-mx3 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-netx [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-ns9xxx [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-omap1 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-omap2 [ARM] cputype: separate definitions, use them 2008-09-01 12:06:23 +01:00
mach-orion5x [ARM] Orion: Instantiate mv_xor driver for 5182 2008-08-09 15:17:28 +02:00
mach-pnx4008 [ARM] fix pnx4008 build errors 2008-08-08 15:13:27 +01:00
mach-pxa [ARM] cputype: separate definitions, use them 2008-09-01 12:06:23 +01:00
mach-realview [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-rpc [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-s3c2400 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-s3c2410 [ARM] 5191/1: ARM: remove CVS keywords 2008-08-16 20:01:18 +01:00
mach-s3c2412 [ARM] JIVE: Remove duplicated mtd includes 2008-08-09 13:51:52 +01:00
mach-s3c2440 Merge http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm into for-rmk 2008-08-08 21:10:12 +01:00
mach-s3c2442 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-s3c2443 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-sa1100 [ARM] cputype: separate definitions, use them 2008-09-01 12:06:23 +01:00
mach-shark [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mach-versatile [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mm [ARM] cachetype: move definitions to separate header 2008-09-01 12:06:24 +01:00
nwfpe [ARM] move include/asm-arm to arch/arm/include/asm 2008-08-02 21:32:35 +01:00
oprofile [ARM] 5195/1: ARMv7 Oprofile support 2008-09-01 12:06:25 +01:00
plat-iop [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
plat-mxc [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
plat-omap [ARM] 5195/1: ARMv7 Oprofile support 2008-09-01 12:06:25 +01:00
plat-orion [ARM] Move include/asm-arm/plat-orion to arch/arm/plat-orion/include/plat 2008-08-09 13:44:58 +02:00
plat-s3c [ARM] 4518/1: S3C: Rename watchdog configuration options 2007-07-22 16:44:38 +01:00
plat-s3c24xx [ARM] S3C24XX: Fix section mismatch for s3c_lookup_cpu 2008-08-09 13:51:54 +01:00
tools [ARM] update mach-types 2008-08-16 09:30:05 +01:00
vfp smp_call_function: get rid of the unused nonatomic/retry argument 2008-06-26 11:24:35 +02:00
Kconfig [ARM] Update arch/arm/Kconfig for drivers/Kconfig changes, add cpuidle 2008-09-01 12:06:25 +01:00
Kconfig-nommu [ARM] 4532/1: allow configuration of processor ID 2007-10-12 23:43:02 +01:00
Kconfig.debug [ARM] CONFIG_DEBUG_STACK_USAGE 2008-01-26 14:50:06 +00:00
Makefile [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00