< prev index next >

src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp

Print this page




 977   // Various forms of CAS
 978 
 979   void cmpxchg_obj_header(Register oldv, Register newv, Register obj, Register tmp,
 980                           Label &suceed, Label *fail);
 981   void cmpxchgptr(Register oldv, Register newv, Register addr, Register tmp,
 982                   Label &suceed, Label *fail);
 983 
 984   void cmpxchgw(Register oldv, Register newv, Register addr, Register tmp,
 985                   Label &suceed, Label *fail);
 986 
 987   void atomic_add(Register prev, RegisterOrConstant incr, Register addr);
 988   void atomic_addw(Register prev, RegisterOrConstant incr, Register addr);
 989   void atomic_addal(Register prev, RegisterOrConstant incr, Register addr);
 990   void atomic_addalw(Register prev, RegisterOrConstant incr, Register addr);
 991 
 992   void atomic_xchg(Register prev, Register newv, Register addr);
 993   void atomic_xchgw(Register prev, Register newv, Register addr);
 994   void atomic_xchgal(Register prev, Register newv, Register addr);
 995   void atomic_xchgalw(Register prev, Register newv, Register addr);
 996 
 997   void orptr(Address adr, RegisterOrConstant src) {
 998     ldr(rscratch2, adr);
 999     if (src.is_register())
1000       orr(rscratch2, rscratch2, src.as_register());
1001     else
1002       orr(rscratch2, rscratch2, src.as_constant());
1003     str(rscratch2, adr);
1004   }
1005 
1006   // A generic CAS; success or failure is in the EQ flag.
1007   // Clobbers rscratch1
1008   void cmpxchg(Register addr, Register expected, Register new_val,
1009                enum operand_size size,
1010                bool acquire, bool release, bool weak,
1011                Register result);
1012 
1013   // Calls
1014 
1015   address trampoline_call(Address entry, CodeBuffer *cbuf = NULL);
1016 
1017   static bool far_branches() {
1018     return ReservedCodeCacheSize > branch_range;
1019   }
1020 
1021   // Jumps that can reach anywhere in the code cache.
1022   // Trashes tmp.
1023   void far_call(Address entry, CodeBuffer *cbuf = NULL, Register tmp = rscratch1);




 977   // Various forms of CAS
 978 
 979   void cmpxchg_obj_header(Register oldv, Register newv, Register obj, Register tmp,
 980                           Label &suceed, Label *fail);
 981   void cmpxchgptr(Register oldv, Register newv, Register addr, Register tmp,
 982                   Label &suceed, Label *fail);
 983 
 984   void cmpxchgw(Register oldv, Register newv, Register addr, Register tmp,
 985                   Label &suceed, Label *fail);
 986 
 987   void atomic_add(Register prev, RegisterOrConstant incr, Register addr);
 988   void atomic_addw(Register prev, RegisterOrConstant incr, Register addr);
 989   void atomic_addal(Register prev, RegisterOrConstant incr, Register addr);
 990   void atomic_addalw(Register prev, RegisterOrConstant incr, Register addr);
 991 
 992   void atomic_xchg(Register prev, Register newv, Register addr);
 993   void atomic_xchgw(Register prev, Register newv, Register addr);
 994   void atomic_xchgal(Register prev, Register newv, Register addr);
 995   void atomic_xchgalw(Register prev, Register newv, Register addr);
 996 
 997   void orptr(Address adr, RegisterOrConstant src, Register tmp = rscratch1) {
 998     ldr(tmp, adr);
 999     if (src.is_register())
1000       orr(tmp, tmp, src.as_register());
1001     else
1002       orr(tmp, tmp, src.as_constant());
1003     str(tmp, adr);
1004   }
1005 
1006   // A generic CAS; success or failure is in the EQ flag.
1007   // Clobbers rscratch1
1008   void cmpxchg(Register addr, Register expected, Register new_val,
1009                enum operand_size size,
1010                bool acquire, bool release, bool weak,
1011                Register result);
1012 
1013   // Calls
1014 
1015   address trampoline_call(Address entry, CodeBuffer *cbuf = NULL);
1016 
1017   static bool far_branches() {
1018     return ReservedCodeCacheSize > branch_range;
1019   }
1020 
1021   // Jumps that can reach anywhere in the code cache.
1022   // Trashes tmp.
1023   void far_call(Address entry, CodeBuffer *cbuf = NULL, Register tmp = rscratch1);


< prev index next >