qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

trace: Remove trace_mem_build_info_no_se_[bl]e

It is easy for the atomic helpers to use trace_mem_build_info
directly, without resorting to symbol pasting. For this usage,
we cannot use trace_mem_get_info, because the MemOp does not
support 16-byte accesses.

Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

+24 -60
+24 -43
accel/tcg/atomic_template.h
··· 64 64 the ATOMIC_NAME macro, and redefined below. */ 65 65 #if DATA_SIZE == 1 66 66 # define END 67 - # define MEND _be /* either le or be would be fine */ 68 67 #elif defined(HOST_WORDS_BIGENDIAN) 69 68 # define END _be 70 - # define MEND _be 71 69 #else 72 70 # define END _le 73 - # define MEND _le 74 71 #endif 75 72 76 73 ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, target_ulong addr, ··· 79 76 ATOMIC_MMU_DECLS; 80 77 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; 81 78 DATA_TYPE ret; 82 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, false, 83 - ATOMIC_MMU_IDX); 79 + uint16_t info = trace_mem_build_info(SHIFT, false, 0, false, 80 + ATOMIC_MMU_IDX); 84 81 85 82 atomic_trace_rmw_pre(env, addr, info); 86 83 #if DATA_SIZE == 16 ··· 99 96 { 100 97 ATOMIC_MMU_DECLS; 101 98 DATA_TYPE val, *haddr = ATOMIC_MMU_LOOKUP; 102 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, false, 103 - ATOMIC_MMU_IDX); 99 + uint16_t info = trace_mem_build_info(SHIFT, false, 0, false, 100 + ATOMIC_MMU_IDX); 104 101 105 102 atomic_trace_ld_pre(env, addr, info); 106 103 val = atomic16_read(haddr); ··· 114 111 { 115 112 ATOMIC_MMU_DECLS; 116 113 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; 117 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, true, 118 - ATOMIC_MMU_IDX); 114 + uint16_t info = trace_mem_build_info(SHIFT, false, 0, true, 115 + ATOMIC_MMU_IDX); 119 116 120 117 atomic_trace_st_pre(env, addr, info); 121 118 atomic16_set(haddr, val); ··· 130 127 ATOMIC_MMU_DECLS; 131 128 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; 132 129 DATA_TYPE ret; 133 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, false, 134 - ATOMIC_MMU_IDX); 130 + uint16_t info = trace_mem_build_info(SHIFT, false, 0, false, 131 + ATOMIC_MMU_IDX); 135 132 136 133 atomic_trace_rmw_pre(env, addr, info); 137 134 ret = atomic_xchg__nocheck(haddr, val); ··· 147 144 ATOMIC_MMU_DECLS; \ 148 145 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; \ 149 146 DATA_TYPE ret; \ 150 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, \ 151 - false, \ 152 - ATOMIC_MMU_IDX); \ 153 - \ 147 + uint16_t info = trace_mem_build_info(SHIFT, false, 0, false, \ 148 + ATOMIC_MMU_IDX); \ 154 149 atomic_trace_rmw_pre(env, addr, info); \ 155 150 ret = atomic_##X(haddr, val); \ 156 151 ATOMIC_MMU_CLEANUP; \ ··· 183 178 ATOMIC_MMU_DECLS; \ 184 179 XDATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; \ 185 180 XDATA_TYPE cmp, old, new, val = xval; \ 186 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, \ 187 - false, \ 188 - ATOMIC_MMU_IDX); \ 189 - \ 181 + uint16_t info = trace_mem_build_info(SHIFT, false, 0, false, \ 182 + ATOMIC_MMU_IDX); \ 190 183 atomic_trace_rmw_pre(env, addr, info); \ 191 184 smp_mb(); \ 192 185 cmp = atomic_read__nocheck(haddr); \ ··· 213 206 #endif /* DATA SIZE >= 16 */ 214 207 215 208 #undef END 216 - #undef MEND 217 209 218 210 #if DATA_SIZE > 1 219 211 ··· 221 213 within the ATOMIC_NAME macro. */ 222 214 #ifdef HOST_WORDS_BIGENDIAN 223 215 # define END _le 224 - # define MEND _le 225 216 #else 226 217 # define END _be 227 - # define MEND _be 228 218 #endif 229 219 230 220 ABI_TYPE ATOMIC_NAME(cmpxchg)(CPUArchState *env, target_ulong addr, ··· 233 223 ATOMIC_MMU_DECLS; 234 224 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; 235 225 DATA_TYPE ret; 236 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, 237 - false, 238 - ATOMIC_MMU_IDX); 226 + uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, false, 227 + ATOMIC_MMU_IDX); 239 228 240 229 atomic_trace_rmw_pre(env, addr, info); 241 230 #if DATA_SIZE == 16 ··· 254 243 { 255 244 ATOMIC_MMU_DECLS; 256 245 DATA_TYPE val, *haddr = ATOMIC_MMU_LOOKUP; 257 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, 258 - false, 259 - ATOMIC_MMU_IDX); 246 + uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, false, 247 + ATOMIC_MMU_IDX); 260 248 261 249 atomic_trace_ld_pre(env, addr, info); 262 250 val = atomic16_read(haddr); ··· 270 258 { 271 259 ATOMIC_MMU_DECLS; 272 260 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; 273 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, 274 - true, 275 - ATOMIC_MMU_IDX); 261 + uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, true, 262 + ATOMIC_MMU_IDX); 276 263 277 264 val = BSWAP(val); 278 265 atomic_trace_st_pre(env, addr, info); ··· 289 276 ATOMIC_MMU_DECLS; 290 277 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; 291 278 ABI_TYPE ret; 292 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, 293 - false, 294 - ATOMIC_MMU_IDX); 279 + uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, false, 280 + ATOMIC_MMU_IDX); 295 281 296 282 atomic_trace_rmw_pre(env, addr, info); 297 283 ret = atomic_xchg__nocheck(haddr, BSWAP(val)); ··· 307 293 ATOMIC_MMU_DECLS; \ 308 294 DATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; \ 309 295 DATA_TYPE ret; \ 310 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, \ 311 - false, \ 312 - ATOMIC_MMU_IDX); \ 313 - \ 296 + uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, \ 297 + false, ATOMIC_MMU_IDX); \ 314 298 atomic_trace_rmw_pre(env, addr, info); \ 315 299 ret = atomic_##X(haddr, BSWAP(val)); \ 316 300 ATOMIC_MMU_CLEANUP; \ ··· 341 325 ATOMIC_MMU_DECLS; \ 342 326 XDATA_TYPE *haddr = ATOMIC_MMU_LOOKUP; \ 343 327 XDATA_TYPE ldo, ldn, old, new, val = xval; \ 344 - uint16_t info = glue(trace_mem_build_info_no_se, MEND)(SHIFT, \ 345 - false, \ 346 - ATOMIC_MMU_IDX); \ 347 - \ 328 + uint16_t info = trace_mem_build_info(SHIFT, false, MO_BSWAP, \ 329 + false, ATOMIC_MMU_IDX); \ 348 330 atomic_trace_rmw_pre(env, addr, info); \ 349 331 smp_mb(); \ 350 332 ldn = atomic_read__nocheck(haddr); \ ··· 378 360 #endif /* DATA_SIZE >= 16 */ 379 361 380 362 #undef END 381 - #undef MEND 382 363 #endif /* DATA_SIZE > 1 */ 383 364 384 365 #undef BSWAP
-17
trace/mem-internal.h
··· 47 47 mmu_idx); 48 48 } 49 49 50 - /* Used by the atomic helpers */ 51 - static inline 52 - uint16_t trace_mem_build_info_no_se_be(int size_shift, bool store, 53 - TCGMemOpIdx oi) 54 - { 55 - return trace_mem_build_info(size_shift, false, MO_BE, store, 56 - get_mmuidx(oi)); 57 - } 58 - 59 - static inline 60 - uint16_t trace_mem_build_info_no_se_le(int size_shift, bool store, 61 - TCGMemOpIdx oi) 62 - { 63 - return trace_mem_build_info(size_shift, false, MO_LE, store, 64 - get_mmuidx(oi)); 65 - } 66 - 67 50 #endif /* TRACE__MEM_INTERNAL_H */