summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2006-12-23 00:49:32 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2006-12-23 00:49:32 +0000
commit70ead4341212ecb3181d5c780284cef0fc7b51fc (patch)
tree18a3130f15211d95b66e319eec1aab7a929f8d1b
parent5bf089345be113089881163914a4d448f5365480 (diff)
downloadqemu-70ead4341212ecb3181d5c780284cef0fc7b51fc.tar.gz
Use memory barriers in FORCE_RET / RETURN.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2273 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--dyngen-exec.h2
-rw-r--r--target-mips/exec.h4
-rw-r--r--target-ppc/exec.h4
3 files changed, 5 insertions, 5 deletions
diff --git a/dyngen-exec.h b/dyngen-exec.h
index 0c392283d4..2f3878561c 100644
--- a/dyngen-exec.h
+++ b/dyngen-exec.h
@@ -188,7 +188,7 @@ extern int printf(const char *, ...);
#endif
/* force GCC to generate only one epilog at the end of the function */
-#define FORCE_RET() asm volatile ("");
+#define FORCE_RET() __asm__ __volatile__("" : : : "memory");
#ifndef OPPROTO
#define OPPROTO
diff --git a/target-mips/exec.h b/target-mips/exec.h
index 9e1fcdc000..e364d8a6fc 100644
--- a/target-mips/exec.h
+++ b/target-mips/exec.h
@@ -45,9 +45,9 @@ register host_uint_t T2 asm(AREG3);
#endif
#if defined (DEBUG_OP)
-#define RETURN() __asm__ __volatile__("nop");
+# define RETURN() __asm__ __volatile__("nop" : : : "memory");
#else
-#define RETURN() __asm__ __volatile__("");
+# define RETURN() __asm__ __volatile__("" : : : "memory");
#endif
#include "cpu.h"
diff --git a/target-ppc/exec.h b/target-ppc/exec.h
index 3ef0968bc3..89171f9d3f 100644
--- a/target-ppc/exec.h
+++ b/target-ppc/exec.h
@@ -38,9 +38,9 @@ register uint32_t T2 asm(AREG3);
#define FT2 (env->ft2)
#if defined (DEBUG_OP)
-#define RETURN() __asm__ __volatile__("nop");
+# define RETURN() __asm__ __volatile__("nop" : : : "memory");
#else
-#define RETURN() __asm__ __volatile__("");
+# define RETURN() __asm__ __volatile__("" : : : "memory");
#endif
#include "cpu.h"