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 } |