Lines Matching +full:ease +full:- +full:of +full:- +full:use
7 * This work is licensed under the terms of the GNU GPL, version 2 or later.
8 * See the COPYING file in the top-level directory.
15 #include "qemu/host-utils.h"
28 MO_SIGN = 0x08, /* Sign-extended, otherwise zero-extended. */
52 * to a size more than the size of the memory access.
56 * MO_ALIGN supposes the alignment size is the size of a memory access.
59 * - unaligned access permitted (MO_UNALN).
60 * - an alignment to the size of an access (MO_ALIGN);
61 * - an alignment to a specified size, which may be more or less than
76 * MO_ATOM_* describes the atomicity requirements of the operation:
77 * MO_ATOM_IFALIGN: the operation must be single-copy atomic if it
80 * be a pair of half-sized operations which are packed together
81 * for convenience, with single-copy atomicity on each half if
83 * This is the atomicity e.g. of Arm pre-FEAT_LSE2 LDP.
84 * MO_ATOM_WITHIN16: the operation is single-copy atomic, even if it
85 * is unaligned, so long as it does not cross a 16-byte boundary;
86 * if it crosses a 16-byte boundary there is no atomicity.
87 * This is the atomicity e.g. of Arm FEAT_LSE2 LDR.
88 * MO_ATOM_WITHIN16_PAIR: the entire operation is single-copy atomic,
89 * if it happens to be within a 16-byte boundary, otherwise it
90 * devolves to a pair of half-sized MO_ATOM_WITHIN16 operations.
91 * Depending on alignment, one or both will be single-copy atomic.
92 * This is the atomicity e.g. of Arm FEAT_LSE2 LDP.
93 * MO_ATOM_SUBALIGN: the operation is single-copy atomic by parts
94 * by the alignment. E.g. if an 8-byte value is accessed at an
95 * address which is 0 mod 8, then the whole 8-byte access is
96 * single-copy atomic; otherwise, if it is accessed at 0 mod 4
97 * then each 4-byte subobject is single-copy atomic; otherwise
98 * if it is accessed at 0 mod 2 then the four 2-byte subobjects
99 * are single-copy atomic.
100 * This is the atomicity e.g. of IBM Power.
103 * Note the default (i.e. 0) value is single-copy atomic to the
104 * size of the operation, if aligned. This retains the behaviour
116 /* Combinations of the above, for ease of use. */
165 /* Power of 2 up to 8. */ in size_memop()
166 assert((size & (size - 1)) == 0 && size >= 1 && size <= 8); in size_memop()
210 size = size ? size - 1 : 0; in memop_atomicity_bits()