]> git.proxmox.com Git - mirror_qemu.git/commit - tcg/tcg.c
include/exec/memop: Add MO_ATOM_*
authorRichard Henderson <richard.henderson@linaro.org>
Fri, 21 Oct 2022 11:24:40 +0000 (21:24 +1000)
committerRichard Henderson <richard.henderson@linaro.org>
Tue, 16 May 2023 22:21:38 +0000 (15:21 -0700)
commit37031fefc777a715320f86fc35ee3dd82d9d945e
treee04cc287d1b1ba26eae2d1aa6ede50272a56b5db
parent988998503bc6d8c03fbea001a0513e8372fddf28
include/exec/memop: Add MO_ATOM_*

This field may be used to describe the precise atomicity requirements
of the guest, which may then be used to constrain the methods by which
it may be emulated by the host.

For instance, the AArch64 LDP (32-bit) instruction changes semantics
with ARMv8.4 LSE2, from

  MO_64 | MO_ATOM_IFALIGN_PAIR
  (64-bits, single-copy atomic only on 4 byte units,
   nonatomic if not aligned by 4),

to

  MO_64 | MO_ATOM_WITHIN16
  (64-bits, single-copy atomic within a 16 byte block)

The former may be implemented with two 4 byte loads, or a single 8 byte
load if that happens to be efficient on the host.  The latter may not
be implemented with two 4 byte loads and may also require a helper when
misaligned.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
include/exec/memop.h
tcg/tcg.c