equal
deleted
inserted
replaced
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 |