atomic_template.h (e8977901b79fb678f288dd372261b640bbeccd0d) atomic_template.h (29a0af618ddd21f55df5753c3e16b0625f534b3c)
1/*
2 * Atomic helper templates
3 * Included from tcg-runtime.c and cputlb.c.
4 *
5 * Copyright (c) 2016 Red Hat, Inc
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public

--- 48 unchanged lines hidden (view full) ---

57# define ABI_TYPE DATA_TYPE
58#else
59# define ABI_TYPE uint32_t
60#endif
61
62#define ATOMIC_TRACE_RMW do { \
63 uint8_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, false); \
64 \
1/*
2 * Atomic helper templates
3 * Included from tcg-runtime.c and cputlb.c.
4 *
5 * Copyright (c) 2016 Red Hat, Inc
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public

--- 48 unchanged lines hidden (view full) ---

57# define ABI_TYPE DATA_TYPE
58#else
59# define ABI_TYPE uint32_t
60#endif
61
62#define ATOMIC_TRACE_RMW do { \
63 uint8_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, false); \
64 \
65 trace_guest_mem_before_exec(ENV_GET_CPU(env), addr, info); \
66 trace_guest_mem_before_exec(ENV_GET_CPU(env), addr, \
65 trace_guest_mem_before_exec(env_cpu(env), addr, info); \
66 trace_guest_mem_before_exec(env_cpu(env), addr, \
67 info | TRACE_MEM_ST); \
68 } while (0)
69
70#define ATOMIC_TRACE_LD do { \
71 uint8_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, false); \
72 \
67 info | TRACE_MEM_ST); \
68 } while (0)
69
70#define ATOMIC_TRACE_LD do { \
71 uint8_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, false); \
72 \
73 trace_guest_mem_before_exec(ENV_GET_CPU(env), addr, info); \
73 trace_guest_mem_before_exec(env_cpu(env), addr, info); \
74 } while (0)
75
76# define ATOMIC_TRACE_ST do { \
77 uint8_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, true); \
78 \
74 } while (0)
75
76# define ATOMIC_TRACE_ST do { \
77 uint8_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, true); \
78 \
79 trace_guest_mem_before_exec(ENV_GET_CPU(env), addr, info); \
79 trace_guest_mem_before_exec(env_cpu(env), addr, info); \
80 } while (0)
81
82/* Define host-endian atomic operations. Note that END is used within
83 the ATOMIC_NAME macro, and redefined below. */
84#if DATA_SIZE == 1
85# define END
86# define MEND _be /* either le or be would be fine */
87#elif defined(HOST_WORDS_BIGENDIAN)

--- 281 unchanged lines hidden ---
80 } while (0)
81
82/* Define host-endian atomic operations. Note that END is used within
83 the ATOMIC_NAME macro, and redefined below. */
84#if DATA_SIZE == 1
85# define END
86# define MEND _be /* either le or be would be fine */
87#elif defined(HOST_WORDS_BIGENDIAN)

--- 281 unchanged lines hidden ---