hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
changeset 35579 d21d5a0db03f
parent 35232 76aed99c0ddd
child 35842 1d34635308b0
equal deleted inserted replaced
35578:33d25acfb1fd 35579:d21d5a0db03f
   435 
   435 
   436 public:
   436 public:
   437   void push(RegSet regs, Register stack) { if (regs.bits()) push(regs.bits(), stack); }
   437   void push(RegSet regs, Register stack) { if (regs.bits()) push(regs.bits(), stack); }
   438   void pop(RegSet regs, Register stack) { if (regs.bits()) pop(regs.bits(), stack); }
   438   void pop(RegSet regs, Register stack) { if (regs.bits()) pop(regs.bits(), stack); }
   439 
   439 
       
   440   // Push and pop everything that might be clobbered by a native
       
   441   // runtime call except rscratch1 and rscratch2.  (They are always
       
   442   // scratch, so we don't have to protect them.)  Only save the lower
       
   443   // 64 bits of each vector register.
       
   444   void push_call_clobbered_registers();
       
   445   void pop_call_clobbered_registers();
       
   446 
   440   // now mov instructions for loading absolute addresses and 32 or
   447   // now mov instructions for loading absolute addresses and 32 or
   441   // 64 bit integers
   448   // 64 bit integers
   442 
   449 
   443   inline void mov(Register dst, address addr)
   450   inline void mov(Register dst, address addr)
   444   {
   451   {
  1113   // Form an address from base + offset in Rd.  Rd may or may not
  1120   // Form an address from base + offset in Rd.  Rd may or may not
  1114   // actually be used: you must use the Address that is returned.  It
  1121   // actually be used: you must use the Address that is returned.  It
  1115   // is up to you to ensure that the shift provided matches the size
  1122   // is up to you to ensure that the shift provided matches the size
  1116   // of your data.
  1123   // of your data.
  1117   Address form_address(Register Rd, Register base, long byte_offset, int shift);
  1124   Address form_address(Register Rd, Register base, long byte_offset, int shift);
       
  1125 
       
  1126   // Return true iff an address is within the 48-bit AArch64 address
       
  1127   // space.
       
  1128   bool is_valid_AArch64_address(address a) {
       
  1129     return ((uint64_t)a >> 48) == 0;
       
  1130   }
       
  1131 
       
  1132   // Load the base of the cardtable byte map into reg.
       
  1133   void load_byte_map_base(Register reg);
  1118 
  1134 
  1119   // Prolog generator routines to support switch between x86 code and
  1135   // Prolog generator routines to support switch between x86 code and
  1120   // generated ARM code
  1136   // generated ARM code
  1121 
  1137 
  1122   // routine to generate an x86 prolog for a stub function which
  1138   // routine to generate an x86 prolog for a stub function which