< prev index next >

src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp

Print this page




5786 
5787 // get_thread() can be called anywhere inside generated code so we
5788 // need to save whatever non-callee save context might get clobbered
5789 // by the call to JavaThread::aarch64_get_thread_helper() or, indeed,
5790 // the call setup code.
5791 //
5792 // aarch64_get_thread_helper() clobbers only r0, r1, and flags.
5793 //
5794 void MacroAssembler::get_thread(Register dst) {
5795   RegSet saved_regs = RegSet::range(r0, r1) + lr - dst;
5796   push(saved_regs, sp);
5797 
5798   mov(lr, CAST_FROM_FN_PTR(address, JavaThread::aarch64_get_thread_helper));
5799   blrt(lr, 1, 0, 1);
5800   if (dst != c_rarg0) {
5801     mov(dst, c_rarg0);
5802   }
5803 
5804   pop(saved_regs, sp);
5805 }




















5786 
5787 // get_thread() can be called anywhere inside generated code so we
5788 // need to save whatever non-callee save context might get clobbered
5789 // by the call to JavaThread::aarch64_get_thread_helper() or, indeed,
5790 // the call setup code.
5791 //
5792 // aarch64_get_thread_helper() clobbers only r0, r1, and flags.
5793 //
5794 void MacroAssembler::get_thread(Register dst) {
5795   RegSet saved_regs = RegSet::range(r0, r1) + lr - dst;
5796   push(saved_regs, sp);
5797 
5798   mov(lr, CAST_FROM_FN_PTR(address, JavaThread::aarch64_get_thread_helper));
5799   blrt(lr, 1, 0, 1);
5800   if (dst != c_rarg0) {
5801     mov(dst, c_rarg0);
5802   }
5803 
5804   pop(saved_regs, sp);
5805 }
5806 
5807 void MacroAssembler::cache_wb(Address line)
5808 {
5809   assert(line.getMode() == Address::base_plus_offset, "mode should be base_plus_offset");
5810   assert(line.index() == noreg, "index should be noreg");
5811   assert(line.offset() == 0, "offset should be 0");
5812   // would like to assert this
5813   // assert(line._ext.shift == 0, "shift should be zero");
5814   dc(Assembler::CVAC, line.base());
5815 }
5816 
5817 void MacroAssembler::cache_wbsync(bool is_pre)
5818 {
5819   // we only need a barrier post sync
5820   if (!is_pre) {
5821     membar(Assembler::AnyAny);
5822   }
5823 }
< prev index next >