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 --- |