-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
trace: [all] Add "guest_mem_before" event
The event is described in "trace-events". Note that the "MO_AMASK" flag is not traced, since it does not seem to affect the visible semantics of instructions. [s/inline inline/inline/ to fix clang build. --Stefan] Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu> Reviewed-by: Richard Henderson <rth@twiddle.net> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 146549350711.18437.726780393247474362.stgit@fimbulvetr.bsc.es Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
- Loading branch information
1 parent
7c25504
commit dcdaadb
Showing
6 changed files
with
158 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
/* | ||
* Helper functions for guest memory tracing | ||
* | ||
* Copyright (C) 2016 Lluís Vilanova <vilanova@ac.upc.edu> | ||
* | ||
* This work is licensed under the terms of the GNU GPL, version 2 or later. | ||
* See the COPYING file in the top-level directory. | ||
*/ | ||
|
||
#ifndef TRACE__MEM_INTERNAL_H | ||
#define TRACE__MEM_INTERNAL_H | ||
|
||
static inline uint8_t trace_mem_get_info(TCGMemOp op, bool store) | ||
{ | ||
uint8_t res = op; | ||
bool be = (op & MO_BSWAP) == MO_BE; | ||
|
||
/* remove untraced fields */ | ||
res &= (1ULL << 4) - 1; | ||
/* make endianness absolute */ | ||
res &= ~MO_BSWAP; | ||
if (be) { | ||
res |= 1ULL << 3; | ||
} | ||
/* add fields */ | ||
if (store) { | ||
res |= 1ULL << 4; | ||
} | ||
|
||
return res; | ||
} | ||
|
||
static inline uint8_t trace_mem_build_info( | ||
TCGMemOp size, bool sign_extend, TCGMemOp endianness, bool store) | ||
{ | ||
uint8_t res = 0; | ||
res |= size; | ||
res |= (sign_extend << 2); | ||
if (endianness == MO_BE) { | ||
res |= (1ULL << 3); | ||
} | ||
res |= (store << 4); | ||
return res; | ||
} | ||
|
||
#endif /* TRACE__MEM_INTERNAL_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
/* | ||
* Helper functions for guest memory tracing | ||
* | ||
* Copyright (C) 2016 Lluís Vilanova <vilanova@ac.upc.edu> | ||
* | ||
* This work is licensed under the terms of the GNU GPL, version 2 or later. | ||
* See the COPYING file in the top-level directory. | ||
*/ | ||
|
||
#ifndef TRACE__MEM_H | ||
#define TRACE__MEM_H | ||
|
||
#include "tcg/tcg.h" | ||
|
||
|
||
/** | ||
* trace_mem_get_info: | ||
* | ||
* Return a value for the 'info' argument in guest memory access traces. | ||
*/ | ||
static uint8_t trace_mem_get_info(TCGMemOp op, bool store); | ||
|
||
/** | ||
* trace_mem_build_info: | ||
* | ||
* Return a value for the 'info' argument in guest memory access traces. | ||
*/ | ||
static uint8_t trace_mem_build_info(TCGMemOp size, bool sign_extend, | ||
TCGMemOp endianness, bool store); | ||
|
||
|
||
#include "trace/mem-internal.h" | ||
|
||
#endif /* TRACE__MEM_H */ |