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
|