diff 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
line wrap: on
line diff
--- a/src/cpu/sparc/vm/nativeInst_sparc.hpp	Mon Aug 05 22:21:47 2013 -0700
+++ b/src/cpu/sparc/vm/nativeInst_sparc.hpp	Mon Aug 05 22:23:00 2013 -0700
@@ -55,6 +55,7 @@
   bool is_dtrace_trap();
   bool is_nop()                        { return long_at(0) == nop_instruction(); }
   bool is_call()                       { return is_op(long_at(0), Assembler::call_op); }
+  bool is_call_reg()                   { return is_op(long_at(0), Assembler::arith_op); }
   bool is_sethi()                      { return (is_op2(long_at(0), Assembler::sethi_op2)
                                           && inv_rd(long_at(0)) != G0); }
 
@@ -417,6 +418,19 @@
   return call;
 }
 
+class NativeCallReg: public NativeInstruction {
+ public:
+  enum Sparc_specific_constants {
+    instruction_size      = 8,
+    return_address_offset = 8,
+    instruction_offset    = 0
+  };
+
+  address next_instruction_address() const {
+    return addr_at(instruction_size);
+  }
+};
+
 // The NativeFarCall is an abstraction for accessing/manipulating native call-anywhere
 // instructions in the sparcv9 vm.  Used to call native methods which may be loaded
 // anywhere in the address space, possibly out of reach of a call instruction.