comparison src/cpu/sparc/vm/nativeInst_sparc.hpp @ 11233:5a9d68c3a7d7

SPARC: a lot of fixes and more
author twisti
date Mon, 05 Aug 2013 22:23:00 -0700
parents 46c544b8fbfc
children d8041d695d19
comparison
equal deleted inserted replaced
11232:22d3ee2fcb97 11233:5a9d68c3a7d7
53 }; 53 };
54 54
55 bool is_dtrace_trap(); 55 bool is_dtrace_trap();
56 bool is_nop() { return long_at(0) == nop_instruction(); } 56 bool is_nop() { return long_at(0) == nop_instruction(); }
57 bool is_call() { return is_op(long_at(0), Assembler::call_op); } 57 bool is_call() { return is_op(long_at(0), Assembler::call_op); }
58 bool is_call_reg() { return is_op(long_at(0), Assembler::arith_op); }
58 bool is_sethi() { return (is_op2(long_at(0), Assembler::sethi_op2) 59 bool is_sethi() { return (is_op2(long_at(0), Assembler::sethi_op2)
59 && inv_rd(long_at(0)) != G0); } 60 && inv_rd(long_at(0)) != G0); }
60 61
61 bool sets_cc() { 62 bool sets_cc() {
62 // conservative (returns true for some instructions that do not set the 63 // conservative (returns true for some instructions that do not set the
415 call->verify(); 416 call->verify();
416 #endif 417 #endif
417 return call; 418 return call;
418 } 419 }
419 420
421 class NativeCallReg: public NativeInstruction {
422 public:
423 enum Sparc_specific_constants {
424 instruction_size = 8,
425 return_address_offset = 8,
426 instruction_offset = 0
427 };
428
429 address next_instruction_address() const {
430 return addr_at(instruction_size);
431 }
432 };
433
420 // The NativeFarCall is an abstraction for accessing/manipulating native call-anywhere 434 // The NativeFarCall is an abstraction for accessing/manipulating native call-anywhere
421 // instructions in the sparcv9 vm. Used to call native methods which may be loaded 435 // instructions in the sparcv9 vm. Used to call native methods which may be loaded
422 // anywhere in the address space, possibly out of reach of a call instruction. 436 // anywhere in the address space, possibly out of reach of a call instruction.
423 437
424 #ifndef _LP64 438 #ifndef _LP64