OSDN Git Service

* config/sh/sh.h (TARGET_ATOMIC_TEST_AND_SET_TRUEVAL): New hook.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 5 Mar 2012 18:52:44 +0000 (18:52 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 5 Mar 2012 18:52:44 +0000 (18:52 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@184951 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sh/sh.c

index 1073d3f..9b27a73 100644 (file)
@@ -1,3 +1,7 @@
+2012-03-05  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       * config/sh/sh.c (TARGET_ATOMIC_TEST_AND_SET_TRUEVAL): New hook.
+
 2012-03-05  Richard Henderson  <rth@redhat.com>
 
        PR target/52481
index 1077180..1282414 100644 (file)
@@ -575,6 +575,11 @@ static const struct attribute_spec sh_attribute_table[] =
 /* Machine-specific symbol_ref flags.  */
 #define SYMBOL_FLAG_FUNCVEC_FUNCTION    (SYMBOL_FLAG_MACH_DEP << 0)
 
+/* The tas.b instruction sets the 7th bit in the byte, i.e. 0x80.  This value
+   is used by optabs.c atomic op expansion code as well as in sync.md.  */
+#undef TARGET_ATOMIC_TEST_AND_SET_TRUEVAL
+#define TARGET_ATOMIC_TEST_AND_SET_TRUEVAL 0x80
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 \f
 /* Implement TARGET_OPTION_OVERRIDE macro.  Validate and override