hotspot/src/cpu/x86/vm/assembler_x86.cpp
changeset 14831 84828ee2a91c
parent 14626 0cf4eccf130f
child 14834 f29c91f2f22b
equal deleted inserted replaced
14830:ea39e8311fef 14831:84828ee2a91c
  1227   InstructionMark im(this);
  1227   InstructionMark im(this);
  1228   assert(!dst.base_needs_rex() && !dst.index_needs_rex(), "no extended registers");
  1228   assert(!dst.base_needs_rex() && !dst.index_needs_rex(), "no extended registers");
  1229   emit_byte(0x66);
  1229   emit_byte(0x66);
  1230   emit_byte(0x81);
  1230   emit_byte(0x81);
  1231   emit_operand(rdi, dst, 2);
  1231   emit_operand(rdi, dst, 2);
  1232   emit_word(imm16);
  1232   emit_int16(imm16);
  1233 }
  1233 }
  1234 
  1234 
  1235 // The 32-bit cmpxchg compares the value at adr with the contents of rax,
  1235 // The 32-bit cmpxchg compares the value at adr with the contents of rax,
  1236 // and stores reg into adr if so; otherwise, the value at adr is loaded into rax,.
  1236 // and stores reg into adr if so; otherwise, the value at adr is loaded into rax,.
  1237 // The ZF is set if the compared values were equal, and cleared otherwise.
  1237 // The ZF is set if the compared values were equal, and cleared otherwise.
  1877 
  1877 
  1878   emit_byte(0x66); // switch to 16-bit mode
  1878   emit_byte(0x66); // switch to 16-bit mode
  1879   prefix(dst);
  1879   prefix(dst);
  1880   emit_byte(0xC7);
  1880   emit_byte(0xC7);
  1881   emit_operand(rax, dst, 2);
  1881   emit_operand(rax, dst, 2);
  1882   emit_word(imm16);
  1882   emit_int16(imm16);
  1883 }
  1883 }
  1884 
  1884 
  1885 void Assembler::movw(Register dst, Address src) {
  1885 void Assembler::movw(Register dst, Address src) {
  1886   InstructionMark im(this);
  1886   InstructionMark im(this);
  1887   emit_byte(0x66);
  1887   emit_byte(0x66);
  2569 void Assembler::ret(int imm16) {
  2569 void Assembler::ret(int imm16) {
  2570   if (imm16 == 0) {
  2570   if (imm16 == 0) {
  2571     emit_byte(0xC3);
  2571     emit_byte(0xC3);
  2572   } else {
  2572   } else {
  2573     emit_byte(0xC2);
  2573     emit_byte(0xC2);
  2574     emit_word(imm16);
  2574     emit_int16(imm16);
  2575   }
  2575   }
  2576 }
  2576 }
  2577 
  2577 
  2578 void Assembler::sahf() {
  2578 void Assembler::sahf() {
  2579 #ifdef _LP64
  2579 #ifdef _LP64