changeset 7695:91519470238d

8151032: aarch32: restore changesets accidentally backed out in prec1 commit Reviewed-by: enevill Contributed-by: snazarkin@azul.com
author enevill
date Thu, 03 Mar 2016 15:15:34 +0000
parents 9666d88e03b2
children 4b8169a71e5a
files src/cpu/aarch32/vm/stubGenerator_aarch32.cpp
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/aarch32/vm/stubGenerator_aarch32.cpp	Thu Mar 03 15:11:46 2016 +0000
+++ b/src/cpu/aarch32/vm/stubGenerator_aarch32.cpp	Thu Mar 03 15:15:34 2016 +0000
@@ -1201,8 +1201,8 @@
     *entry = __ pc();
 
     // Load *adr into c_rarg1, may fault.
+    __ mov(c_rarg2, c_rarg0);
     *fault_pc = __ pc();
-    __ mov(c_rarg2, c_rarg0);
     switch (size) {
       case 4:
         // int32_t
@@ -1251,7 +1251,7 @@
     // if they expect all registers to be preserved.
     // n.b. aarch32 asserts that frame::arg_reg_save_area_bytes == 0
     enum layout {
-      rfp_off = 0,
+      rfp_off = frame::arg_reg_save_area_bytes/BytesPerInt,
       return_off,
       framesize // inclusive of return address
     };
@@ -1272,6 +1272,9 @@
 
     __ enter(); // Save FP and LR before call
 
+    // lr and fp are already in place
+    assert(frame::arg_reg_save_area_bytes == 0, "please modify this code");
+    // __ sub(sp, rfp, frame::arg_reg_save_area_bytes + wordSize); // prolog
     assert(is_even(framesize), "sp not 8-byte aligned");
 
     int frame_complete = __ pc() - start;
@@ -1319,7 +1322,7 @@
       RuntimeStub::new_runtime_stub(name,
                                     &code,
                                     frame_complete,
-                                    framesize,
+                                    (framesize >> (LogBytesPerWord - LogBytesPerInt)),
                                     oop_maps, false);
     return stub->entry_point();
   }