From 39357e9235aba8527aab5edf6aaf5cbfe2891eb0 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Wed, 1 Aug 2007 18:57:48 +0000 Subject: Atomic mutexes on SH1. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14121 a1c6a512-1295-4272-9138-f99709370657 --- firmware/export/thread.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'firmware/export') diff --git a/firmware/export/thread.h b/firmware/export/thread.h index 81c7c2374f..2915d23207 100644 --- a/firmware/export/thread.h +++ b/firmware/export/thread.h @@ -169,6 +169,20 @@ struct core_entry { ); \ old; \ }) +#elif CONFIG_CPU == SH7034 +#define test_and_set(x_, v_) \ +({ \ + uint32_t old; \ + asm volatile ( \ + "tas.b @%[x] \r\n" \ + "mov #-1, %[old] \r\n" \ + "negc %[old], %[old] \r\n" \ + : [old]"=r"(old) \ + : [v]"M"((uint32_t)v_), /* Value of v_ must be 1 */ \ + [x]"r"((uint8_t *)x_) \ + ); \ + old; \ + }) #else /* default for no asm version */ #define test_and_set(x_, v_) \ -- cgit v1.2.3