The libitm ABI#
The ABI provided by libitm is basically equal to the Linux variant of Intel’s current TM ABI specification document (Revision 1.1, May 6 2009) but with the differences listed in this chapter. It would be good if these changes would eventually be merged into a future version of this specification. To ease look-up, the following subsections mirror the structure of this specification.
- [No changes] Objectives
- [No changes] Non-objectives
- Library design principles
- [No changes] Calling conventions
- [No changes] TM library algorithms
- [No changes] Optimized load and store routines
- [No changes] Aligned load and store routines
- Data logging functions
- [No changes] Scatter/gather calls
- [No changes] Serial and irrevocable mode
- [No changes] Transaction descriptor
- Store allocation
- [No changes] Naming conventions
- Function pointer encryption
- Types and macros list
- Function list
- Initialization and finalization functions
- [No changes] Version checking
- [No changes] Error reporting
- [No changes] inTransaction call
- State manipulation functions
- [No changes] Source locations
- Starting a transaction
- Aborting a transaction
- Committing a transaction
- Exception handling support
- [No changes] Transition to serial–irrevocable mode
- [No changes] Data transfer functions
- [No changes] Transactional memory copies
- Transactional versions of memmove
- [No changes] Transactional versions of memset
- [No changes] Logging functions
- User-registered commit and undo actions
- [New] Transactional indirect calls
- [New] Transactional dynamic memory management
- [No changes] Future Enhancements to the ABI
- Sample code
- [New] Memory model