[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 1/8] Introduce proper compiler barrier
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH 1/8] Introduce proper compiler barrier |
Date: |
Fri, 25 Jun 2010 16:56:49 +0200 |
Define barrier() as optimization barrier and replace (potentially
unreliable) asm("") fences.
Signed-off-by: Jan Kiszka <address@hidden>
---
cpu-exec.c | 5 +++--
qemu-barrier.h | 3 +++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/cpu-exec.c b/cpu-exec.c
index 026980a..525b3b4 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -21,6 +21,7 @@
#include "disas.h"
#include "tcg.h"
#include "kvm.h"
+#include "qemu-barrier.h"
#if !defined(CONFIG_SOFTMMU)
#undef EAX
@@ -233,7 +234,7 @@ int cpu_exec(CPUState *env1)
use it. */
QEMU_BUILD_BUG_ON (sizeof (saved_env_reg) != sizeof (env));
saved_env_reg = (host_reg_t) env;
- asm("");
+ barrier();
env = env1;
if (exit_request) {
@@ -669,7 +670,7 @@ int cpu_exec(CPUState *env1)
#endif
/* restore global registers */
- asm("");
+ barrier();
env = (void *) saved_env_reg;
/* fail safe : never use cpu_single_env outside cpu_exec() */
diff --git a/qemu-barrier.h b/qemu-barrier.h
index 3bd1075..b77fce2 100644
--- a/qemu-barrier.h
+++ b/qemu-barrier.h
@@ -4,4 +4,7 @@
/* FIXME: arch dependant, x86 version */
#define smp_wmb() asm volatile("" ::: "memory")
+/* Compiler barrier */
+#define barrier() asm volatile("" ::: "memory")
+
#endif
--
1.7.1
- [Qemu-devel] [PATCH 0/8] Fix various IO-thread breakages, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 6/8] Drop redundant global cur_cpu variable, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 8/8] Rework debug exception processing for gdb use, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 3/8] Init qemu_system_cond, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 1/8] Introduce proper compiler barrier,
Jan Kiszka <=
- [Qemu-devel] [PATCH 2/8] Fix cpu_unlink_tb race, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 5/8] Fix qemu_wait_io_event processing in io-thread mode, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 4/8] Fix cpu_exit for tcp_cpu_exec, Jan Kiszka, 2010/06/25
- [Qemu-devel] [PATCH 7/8] Rename tcg_cpu_exec and tcg_has_work, Jan Kiszka, 2010/06/25
- [Qemu-devel] Re: [PATCH 0/8] Fix various IO-thread breakages, Paolo Bonzini, 2010/06/27
- [Qemu-devel] Re: [PATCH 0/8] Fix various IO-thread breakages, Marcelo Tosatti, 2010/06/28