618 inline void Assembler::stwcx_(Register s, Register a, Register b) { emit_int32( STWCX_OPCODE | rs(s) | ra0mem(a) | rb(b) | rc(1)); } |
618 inline void Assembler::stwcx_(Register s, Register a, Register b) { emit_int32( STWCX_OPCODE | rs(s) | ra0mem(a) | rb(b) | rc(1)); } |
619 inline void Assembler::stdcx_(Register s, Register a, Register b) { emit_int32( STDCX_OPCODE | rs(s) | ra0mem(a) | rb(b) | rc(1)); } |
619 inline void Assembler::stdcx_(Register s, Register a, Register b) { emit_int32( STDCX_OPCODE | rs(s) | ra0mem(a) | rb(b) | rc(1)); } |
620 inline void Assembler::stqcx_(Register s, Register a, Register b) { emit_int32( STQCX_OPCODE | rs(s) | ra0mem(a) | rb(b) | rc(1)); } |
620 inline void Assembler::stqcx_(Register s, Register a, Register b) { emit_int32( STQCX_OPCODE | rs(s) | ra0mem(a) | rb(b) | rc(1)); } |
621 |
621 |
622 // Instructions for adjusting thread priority |
622 // Instructions for adjusting thread priority |
623 // for simultaneous multithreading (SMT) on POWER5. |
623 // for simultaneous multithreading (SMT) on >= POWER5. |
624 inline void Assembler::smt_prio_very_low() { Assembler::or_unchecked(R31, R31, R31); } |
624 inline void Assembler::smt_prio_very_low() { Assembler::or_unchecked(R31, R31, R31); } |
625 inline void Assembler::smt_prio_low() { Assembler::or_unchecked(R1, R1, R1); } |
625 inline void Assembler::smt_prio_low() { Assembler::or_unchecked(R1, R1, R1); } |
626 inline void Assembler::smt_prio_medium_low() { Assembler::or_unchecked(R6, R6, R6); } |
626 inline void Assembler::smt_prio_medium_low() { Assembler::or_unchecked(R6, R6, R6); } |
627 inline void Assembler::smt_prio_medium() { Assembler::or_unchecked(R2, R2, R2); } |
627 inline void Assembler::smt_prio_medium() { Assembler::or_unchecked(R2, R2, R2); } |
628 inline void Assembler::smt_prio_medium_high() { Assembler::or_unchecked(R5, R5, R5); } |
628 inline void Assembler::smt_prio_medium_high() { Assembler::or_unchecked(R5, R5, R5); } |
629 inline void Assembler::smt_prio_high() { Assembler::or_unchecked(R3, R3, R3); } |
629 inline void Assembler::smt_prio_high() { Assembler::or_unchecked(R3, R3, R3); } |
630 // >= Power7 |
630 // >= Power7 |
631 inline void Assembler::smt_yield() { Assembler::or_unchecked(R27, R27, R27); } |
631 inline void Assembler::smt_yield() { Assembler::or_unchecked(R27, R27, R27); } // never actually implemented |
632 inline void Assembler::smt_mdoio() { Assembler::or_unchecked(R29, R29, R29); } |
632 inline void Assembler::smt_mdoio() { Assembler::or_unchecked(R29, R29, R29); } // never actually implemetned |
633 inline void Assembler::smt_mdoom() { Assembler::or_unchecked(R30, R30, R30); } |
633 inline void Assembler::smt_mdoom() { Assembler::or_unchecked(R30, R30, R30); } // never actually implemented |
634 // >= Power8 |
634 // Power8 |
635 inline void Assembler::smt_miso() { Assembler::or_unchecked(R26, R26, R26); } |
635 inline void Assembler::smt_miso() { Assembler::or_unchecked(R26, R26, R26); } // never actually implemented |
636 |
636 |
637 inline void Assembler::twi_0(Register a) { twi_unchecked(0, a, 0);} |
637 inline void Assembler::twi_0(Register a) { twi_unchecked(0, a, 0);} |
638 |
638 |
639 // trap instructions |
639 // trap instructions |
640 inline void Assembler::tdi_unchecked(int tobits, Register a, int si16){ emit_int32( TDI_OPCODE | to(tobits) | ra(a) | si(si16)); } |
640 inline void Assembler::tdi_unchecked(int tobits, Register a, int si16){ emit_int32( TDI_OPCODE | to(tobits) | ra(a) | si(si16)); } |