< prev index next >

src/hotspot/cpu/ppc/assembler_ppc.hpp

Print this page
rev 50959 : 8205582: PPC64: RTM: Fix counter for aborts on nested transactions


1618   inline void mtxer(Register s1);
1619   inline void mfxer(Register d);
1620   // Vector Register Save Register
1621   inline void mtvrsave(Register s1);
1622   inline void mfvrsave(Register d);
1623   // Timebase
1624   inline void mftb(Register d);
1625   // Introduced with Power 8:
1626   // Data Stream Control Register
1627   inline void mtdscr(Register s1);
1628   inline void mfdscr(Register d );
1629   // Transactional Memory Registers
1630   inline void mftfhar(Register d);
1631   inline void mftfiar(Register d);
1632   inline void mftexasr(Register d);
1633   inline void mftexasru(Register d);
1634 
1635   // TEXASR bit description
1636   enum transaction_failure_reason {
1637     // Upper half (TEXASRU):

1638     tm_failure_persistent =  7, // The failure is likely to recur on each execution.
1639     tm_disallowed         =  8, // The instruction is not permitted.
1640     tm_nesting_of         =  9, // The maximum transaction level was exceeded.
1641     tm_footprint_of       = 10, // The tracking limit for transactional storage accesses was exceeded.
1642     tm_self_induced_cf    = 11, // A self-induced conflict occurred in Suspended state.
1643     tm_non_trans_cf       = 12, // A conflict occurred with a non-transactional access by another processor.
1644     tm_trans_cf           = 13, // A conflict occurred with another transaction.
1645     tm_translation_cf     = 14, // A conflict occurred with a TLB invalidation.
1646     tm_inst_fetch_cf      = 16, // An instruction fetch was performed from a block that was previously written transactionally.
1647     tm_tabort             = 31, // Termination was caused by the execution of an abort instruction.
1648     // Lower half:
1649     tm_suspended          = 32, // Failure was recorded in Suspended state.
1650     tm_failure_summary    = 36, // Failure has been detected and recorded.
1651     tm_tfiar_exact        = 37, // Value in the TFIAR is exact.
1652     tm_rot                = 38, // Rollback-only transaction.

1653   };
1654 
1655   // PPC 1, section 2.4.1 Branch Instructions
1656   inline void b(  address a, relocInfo::relocType rt = relocInfo::none);
1657   inline void b(  Label& L);
1658   inline void bl( address a, relocInfo::relocType rt = relocInfo::none);
1659   inline void bl( Label& L);
1660   inline void bc( int boint, int biint, address a, relocInfo::relocType rt = relocInfo::none);
1661   inline void bc( int boint, int biint, Label& L);
1662   inline void bcl(int boint, int biint, address a, relocInfo::relocType rt = relocInfo::none);
1663   inline void bcl(int boint, int biint, Label& L);
1664 
1665   inline void bclr(  int boint, int biint, int bhint, relocInfo::relocType rt = relocInfo::none);
1666   inline void bclrl( int boint, int biint, int bhint, relocInfo::relocType rt = relocInfo::none);
1667   inline void bcctr( int boint, int biint, int bhint = bhintbhBCCTRisNotReturnButSame,
1668                          relocInfo::relocType rt = relocInfo::none);
1669   inline void bcctrl(int boint, int biint, int bhint = bhintbhBCLRisReturn,
1670                          relocInfo::relocType rt = relocInfo::none);
1671 
1672   // helper function for b, bcxx




1618   inline void mtxer(Register s1);
1619   inline void mfxer(Register d);
1620   // Vector Register Save Register
1621   inline void mtvrsave(Register s1);
1622   inline void mfvrsave(Register d);
1623   // Timebase
1624   inline void mftb(Register d);
1625   // Introduced with Power 8:
1626   // Data Stream Control Register
1627   inline void mtdscr(Register s1);
1628   inline void mfdscr(Register d );
1629   // Transactional Memory Registers
1630   inline void mftfhar(Register d);
1631   inline void mftfiar(Register d);
1632   inline void mftexasr(Register d);
1633   inline void mftexasru(Register d);
1634 
1635   // TEXASR bit description
1636   enum transaction_failure_reason {
1637     // Upper half (TEXASRU):
1638     tm_failure_code       =  0, // The Failure Code is copied from tabort or treclaim operand.
1639     tm_failure_persistent =  7, // The failure is likely to recur on each execution.
1640     tm_disallowed         =  8, // The instruction is not permitted.
1641     tm_nesting_of         =  9, // The maximum transaction level was exceeded.
1642     tm_footprint_of       = 10, // The tracking limit for transactional storage accesses was exceeded.
1643     tm_self_induced_cf    = 11, // A self-induced conflict occurred in Suspended state.
1644     tm_non_trans_cf       = 12, // A conflict occurred with a non-transactional access by another processor.
1645     tm_trans_cf           = 13, // A conflict occurred with another transaction.
1646     tm_translation_cf     = 14, // A conflict occurred with a TLB invalidation.
1647     tm_inst_fetch_cf      = 16, // An instruction fetch was performed from a block that was previously written transactionally.
1648     tm_tabort             = 31, // Termination was caused by the execution of an abort instruction.
1649     // Lower half:
1650     tm_suspended          = 32, // Failure was recorded in Suspended state.
1651     tm_failure_summary    = 36, // Failure has been detected and recorded.
1652     tm_tfiar_exact        = 37, // Value in the TFIAR is exact.
1653     tm_rot                = 38, // Rollback-only transaction.
1654     tm_transaction_level  = 52, // Transaction level (nesting depth + 1).
1655   };
1656 
1657   // PPC 1, section 2.4.1 Branch Instructions
1658   inline void b(  address a, relocInfo::relocType rt = relocInfo::none);
1659   inline void b(  Label& L);
1660   inline void bl( address a, relocInfo::relocType rt = relocInfo::none);
1661   inline void bl( Label& L);
1662   inline void bc( int boint, int biint, address a, relocInfo::relocType rt = relocInfo::none);
1663   inline void bc( int boint, int biint, Label& L);
1664   inline void bcl(int boint, int biint, address a, relocInfo::relocType rt = relocInfo::none);
1665   inline void bcl(int boint, int biint, Label& L);
1666 
1667   inline void bclr(  int boint, int biint, int bhint, relocInfo::relocType rt = relocInfo::none);
1668   inline void bclrl( int boint, int biint, int bhint, relocInfo::relocType rt = relocInfo::none);
1669   inline void bcctr( int boint, int biint, int bhint = bhintbhBCCTRisNotReturnButSame,
1670                          relocInfo::relocType rt = relocInfo::none);
1671   inline void bcctrl(int boint, int biint, int bhint = bhintbhBCLRisReturn,
1672                          relocInfo::relocType rt = relocInfo::none);
1673 
1674   // helper function for b, bcxx


< prev index next >