new file mode 100644
@@ -0,0 +1,43 @@
+#ifndef HTM_H
+#define HTM_H
+
+enum htm {
+ HTM_OK,
+ HTM_ABORT_RETRY,
+ HTM_ABORT_NORETRY,
+};
+
+#if defined(__x86_64__)
+/* compile with -mrtm */
+#include <immintrin.h>
+
+static inline enum htm htm_begin(void)
+{
+ int status;
+
+ status = _xbegin();
+ if (unlikely(status != _XBEGIN_STARTED)) {
+ if (status & _XABORT_RETRY) {
+ return HTM_ABORT_RETRY;
+ }
+ return HTM_ABORT_NORETRY;
+ }
+ return HTM_OK;
+}
+
+static inline void htm_end(void)
+{
+ _xend();
+}
+
+static inline bool htm_test(void)
+{
+ return _xtest();
+}
+
+static inline void htm_abort(void)
+{
+ _xabort(0);
+}
+#endif /* ISA */
+#endif /* HTM_H */
Signed-off-by: Emilio G. Cota <cota@braap.org> --- include/qemu/htm.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 include/qemu/htm.h