In the Intel® 64 and IA-32 Architectures Software Developer Manuals, chapter 15.3.5: "RTM Abort Status Definition", a table with RTM abort status values can be found. It also says: "The value of EAX can be 0 following an RTM abort. For example, a CPUID instruction when used inside an RTM region causes a transactional abort and may not satisfy the requirements for setting any of the EAX bits. This may result in an EAX value of 0."
I need to be able to determine if the abort was caused by a segmentation fault. I found that in this case the return value will be 0. But the return value can be 0 also in other cases, for instance, in case of a context switch. Any suggestions about how I can determine if the abort was caused by a segmentation fault?
it is not possible to determine if a TSX abort caused by a seg fault. In fact all kinds of faults will result in abort status 0 (page fault, etc.)