unicorn/qemu
Paolo Bonzini 4e7259a49b
atomics: add explicit compiler fence in __atomic memory barriers
__atomic_thread_fence does not include a compiler barrier; in the
C++11 memory model, fences take effect in combination with other
atomic operations.  GCC implements this by making __atomic_load and
__atomic_store access memory as if the pointer was volatile, and
leaves no trace whatsoever of acquire and release fences in the
compiler's intermediate representation.

In QEMU, we want memory barriers to act on all memory, but at the same
time we would like to use __atomic_thread_fence for portability reasons.
Add compiler barriers manually around the __atomic_thread_fence.

Backports commit 3bbf572345c65813f86a8fc434ea1b23beb08e16 from qemu
2018-02-22 15:56:37 -05:00
..
crypto crypto: Clean up includes 2018-02-19 00:47:40 -05:00
default-configs arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
docs docs: clarify memory region lifecycle 2018-02-12 15:11:21 -05:00
fpu fpu: silence warnings 2018-02-22 09:52:28 -05:00
hw util: move declarations out of qemu-common.h 2018-02-22 09:25:48 -05:00
include atomics: add explicit compiler fence in __atomic memory barriers 2018-02-22 15:56:37 -05:00
qapi include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
qobject util: move declarations out of qemu-common.h 2018-02-22 09:25:48 -05:00
qom util: move declarations out of qemu-common.h 2018-02-22 09:25:48 -05:00
scripts include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
target-arm target-arm: Make the 64-bit version of VTCR do the migration 2018-02-22 11:53:19 -05:00
target-i386 target-i386: implement PKE for TCG 2018-02-22 10:18:55 -05:00
target-m68k include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
target-mips target-mips: indicate presence of IEEE 754-2008 FPU in R6/R5+MSA CPUs 2018-02-22 11:30:08 -05:00
target-sparc include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
tcg qemu-log: dfilter-ise exec, out_asm, op and opt_op 2018-02-22 10:06:19 -05:00
util util: move declarations out of qemu-common.h 2018-02-22 09:25:48 -05:00
aarch64.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
aarch64eb.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
accel.c all: Clean up includes 2018-02-19 01:34:28 -05:00
arm.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
armeb.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
CODING_STYLE import 2015-08-21 15:04:50 +08:00
configure config.status: Pass extra parameters 2018-02-22 10:12:54 -05:00
COPYING import 2015-08-21 15:04:50 +08:00
COPYING.LIB import 2015-08-21 15:04:50 +08:00
cpu-exec-common.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
cpu-exec.c qemu-log: dfilter-ise exec, out_asm, op and opt_op 2018-02-22 10:06:19 -05:00
cpus.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
cputlb.c cputlb: modernise the debug support 2018-02-22 10:10:45 -05:00
exec.c memory: RCU ram_list.dirty_memory[] for safe RAM hotplug 2018-02-22 15:38:03 -05:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c glib_compat: backport hashtable iterator interfaces 2018-02-21 13:18:44 -05:00
HACKING import 2015-08-21 15:04:50 +08:00
header_gen.py log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
ioport.c all: Clean up includes 2018-02-19 01:34:28 -05:00
LICENSE import 2015-08-21 15:04:50 +08:00
m68k.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
Makefile qapi: Turn generators' mandatory option -i into an argument 2018-02-19 15:22:27 -05:00
Makefile.objs crypto: move crypto objects out of libqemuutil.la 2018-02-17 15:23:50 -05:00
Makefile.target tcg: split tcg_op_defs to -common 2018-02-17 15:23:51 -05:00
memory.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
memory_mapping.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
mips.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
mips64.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
mips64el.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
mipsel.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
powerpc.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
qapi-schema.json qapi: Lazy creation of array types 2018-02-19 18:55:35 -05:00
qemu-log.c log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
qemu-timer.c all: Clean up includes 2018-02-19 01:34:28 -05:00
rules.mak import 2015-08-21 15:04:50 +08:00
softmmu_template.h exec.c: Pass MemTxAttrs to iotlb_to_region so it uses the right AS 2018-02-17 23:19:00 -05:00
sparc.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
sparc64.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00
tcg-runtime.c all: Clean up includes 2018-02-19 01:34:28 -05:00
translate-all.c qemu-log: dfilter-ise exec, out_asm, op and opt_op 2018-02-22 10:06:19 -05:00
translate-all.h translate-all: remove unnecessary argument to tb_invalidate_phys_range 2018-02-13 09:04:51 -05:00
translate-common.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
unicorn_common.h qom/cpu: Add MemoryRegion property 2018-02-18 21:54:50 -05:00
VERSION import 2015-08-21 15:04:50 +08:00
vl.c util: move declarations out of qemu-common.h 2018-02-22 09:25:48 -05:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h log: move qemu_log_close/qemu_log_flush from header to log.c 2018-02-22 11:13:17 -05:00