You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
--- libitm/config/x86/target.h.jj 2013-06-23 20:43:50.000000000 +0200 |
|
+++ libitm/config/x86/target.h 2013-08-13 17:14:57.540012109 +0200 |
|
@@ -64,7 +64,7 @@ cpu_relax (void) |
|
|
|
// Use Intel RTM if supported by the assembler. |
|
// See gtm_thread::begin_transaction for how these functions are used. |
|
-#ifdef HAVE_AS_RTM |
|
+#if 1 /* def HAVE_AS_RTM */ |
|
#define USE_HTM_FASTPATH |
|
#ifdef __x86_64__ |
|
// Use the custom fastpath in ITM_beginTransaction. |
|
@@ -97,7 +97,10 @@ htm_init () |
|
static inline uint32_t |
|
htm_begin () |
|
{ |
|
- return _xbegin(); |
|
+// return _xbegin(); |
|
+ uint32_t ret; |
|
+ __asm volatile ("movl $-1, %%eax; .byte 0xc7, 0xf8, 0, 0, 0, 0" : "=a" (ret) : : "memory"); |
|
+ return ret; |
|
} |
|
|
|
static inline bool |
|
@@ -109,7 +112,8 @@ htm_begin_success (uint32_t begin_ret) |
|
static inline void |
|
htm_commit () |
|
{ |
|
- _xend(); |
|
+// _xend(); |
|
+ __asm volatile (".byte 0x0f, 0x01, 0xd5" : : : "memory"); |
|
} |
|
|
|
static inline void |
|
@@ -117,7 +121,8 @@ htm_abort () |
|
{ |
|
// ??? According to a yet unpublished ABI rule, 0xff is reserved and |
|
// supposed to signal a busy lock. Source: andi.kleen@intel.com |
|
- _xabort(0xff); |
|
+// _xabort(0xff); |
|
+ __asm volatile (".byte 0xc6, 0xf8, 0xff" : : : "memory"); |
|
} |
|
|
|
static inline bool |
|
@@ -130,7 +135,10 @@ htm_abort_should_retry (uint32_t begin_r |
|
static inline bool |
|
htm_transaction_active () |
|
{ |
|
- return _xtest() != 0; |
|
+// return _xtest() != 0; |
|
+ bool ret; |
|
+ __asm volatile (".byte 0x0f, 0x01, 0xd6; setne %%al" : "=a" (ret) : : "memory"); |
|
+ return ret; |
|
} |
|
#endif |
|
|
|
|