Signed-off-by: Emilio G. Cota <c...@braap.org> --- include/qemu/htm.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+)
diff --git a/include/qemu/htm.h b/include/qemu/htm.h index dc84bc1..f367ee4 100644 --- a/include/qemu/htm.h +++ b/include/qemu/htm.h @@ -39,5 +39,44 @@ static inline void htm_abort(void) { _xabort(0); } + +#elif defined(__powerpc64__) +/* compile with -mhtm */ +#include <htmintrin.h> + +static inline int htm_begin(void) +{ + unsigned int status; + + status = __builtin_tbegin(0); + if (likely(status)) { + return HTM_OK; + } + if (_TEXASRU_FAILURE_PERSISTENT(__builtin_get_texasru())) { + return HTM_ABORT_NORETRY; + } + return HTM_ABORT_RETRY; +} + +static inline void htm_end(void) +{ + __builtin_tend(0); +} + +static inline int htm_test(void) +{ + unsigned char state = _HTM_STATE(__builtin_ttest()); + + if (likely(state == _HTM_TRANSACTIONAL)) { + return 1; + } + return 0; +} + +static inline void htm_abort(void) +{ + __builtin_tabort(0); +} + #endif /* ISA */ #endif /* HTM_H */ -- 2.5.0