]> git.proxmox.com Git - mirror_qemu.git/blame - trace/mem-internal.h
Merge remote-tracking branch 'remotes/famz/tags/staging-pull-request' into staging
[mirror_qemu.git] / trace / mem-internal.h
CommitLineData
dcdaadb6
LV
1/*
2 * Helper functions for guest memory tracing
3 *
4 * Copyright (C) 2016 Lluís Vilanova <vilanova@ac.upc.edu>
5 *
6 * This work is licensed under the terms of the GNU GPL, version 2 or later.
7 * See the COPYING file in the top-level directory.
8 */
9
10#ifndef TRACE__MEM_INTERNAL_H
11#define TRACE__MEM_INTERNAL_H
12
13static inline uint8_t trace_mem_get_info(TCGMemOp op, bool store)
14{
15 uint8_t res = op;
16 bool be = (op & MO_BSWAP) == MO_BE;
17
18 /* remove untraced fields */
19 res &= (1ULL << 4) - 1;
20 /* make endianness absolute */
21 res &= ~MO_BSWAP;
22 if (be) {
23 res |= 1ULL << 3;
24 }
25 /* add fields */
26 if (store) {
27 res |= 1ULL << 4;
28 }
29
30 return res;
31}
32
33static inline uint8_t trace_mem_build_info(
34 TCGMemOp size, bool sign_extend, TCGMemOp endianness, bool store)
35{
36 uint8_t res = 0;
37 res |= size;
38 res |= (sign_extend << 2);
39 if (endianness == MO_BE) {
40 res |= (1ULL << 3);
41 }
42 res |= (store << 4);
43 return res;
44}
45
175de524 46#endif /* TRACE__MEM_INTERNAL_H */