summaryrefslogtreecommitdiff
path: root/arch/m68k/configs
diff options
context:
space:
mode:
authorMikael Pettersson <mikpe@it.uu.se>2013-03-08 18:03:53 +0400
committerGeert Uytterhoeven <geert@linux-m68k.org>2013-05-21 23:29:13 +0400
commite4f2dfbb5e92be4e46c0625f4f8eb101110f756f (patch)
treea9ccf764d085e484d16924c2624b61fb9b02d71a /arch/m68k/configs
parentc7788792a5e7b0d5d7f96d0766b4cb6112d47d75 (diff)
downloadlinux-e4f2dfbb5e92be4e46c0625f4f8eb101110f756f.tar.xz
m68k: implement futex.h to support userspace robust futexes and PI mutexes
Linux/M68K currently doesn't support robust futexes or PI mutexes. The problem is that the futex code needs to perform certain ops (cmpxchg, set, add, or, andn, xor) atomically on user-space addresses, and M68K's lack of a futex.h causes those operations to be unsupported and disabled. This patch adds that support, but only for uniprocessor machines, which is adequate for M68K. For UP it's enough to disable preemption to ensure mutual exclusion (futexes don't need to care about other hardware agents), and the mandatory pagefault_disable() does just that. This patch is closely based on the one I co-wrote for UP ARM back in August 2008. The main change is that this patch uses the C get_user/put_user accessors instead of inline assembly code with exception table fixups. For non-MMU machines the new futex.h simply redirects to the generic futex.h, so there is no functional change for them. Tested on aranym with the glibc-2.17 test suite: no regressions, and a number of mutex/condvar test cases went from failing to succeeding (tst-mutexpi{5,5a,6,9}, tst-cond2[45], tst-robust[1-9], tst-robustpi[1-8]). Also tested with glibc-2.18 HEAD and a local glibc patch to enable PI mutexes: no regressions. Signed-off-by: Mikael Pettersson <mikpe@it.uu.se> Acked-by: Andreas Schwab <schwab@linux-m68k.org> [geert: Added removal of ""generic-y += futex.h"] Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Diffstat (limited to 'arch/m68k/configs')
0 files changed, 0 insertions, 0 deletions