1.1 --- a/src/cpu/sparc/vm/stubGenerator_sparc.cpp Wed May 28 07:59:23 2014 -1000 1.2 +++ b/src/cpu/sparc/vm/stubGenerator_sparc.cpp Wed May 21 12:16:41 2014 -0700 1.3 @@ -3653,9 +3653,9 @@ 1.4 const Register len_reg = I4; // cipher length 1.5 const Register keylen = I5; // reg for storing expanded key array length 1.6 1.7 - // save cipher len before save_frame, to return in the end 1.8 - __ mov(O4, L0); 1.9 __ save_frame(0); 1.10 + // save cipher len to return in the end 1.11 + __ mov(len_reg, L0); 1.12 1.13 // read expanded key length 1.14 __ ldsw(Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)), keylen, 0); 1.15 @@ -3778,9 +3778,9 @@ 1.16 // re-init intial vector for next block, 8-byte alignment is guaranteed 1.17 __ stf(FloatRegisterImpl::D, F60, rvec, 0); 1.18 __ stf(FloatRegisterImpl::D, F62, rvec, 8); 1.19 - __ restore(); 1.20 - __ retl(); 1.21 - __ delayed()->mov(L0, O0); 1.22 + __ mov(L0, I0); 1.23 + __ ret(); 1.24 + __ delayed()->restore(); 1.25 1.26 __ align(OptoLoopAlignment); 1.27 __ BIND(L_cbcenc192); 1.28 @@ -3869,9 +3869,9 @@ 1.29 // re-init intial vector for next block, 8-byte alignment is guaranteed 1.30 __ stf(FloatRegisterImpl::D, F60, rvec, 0); 1.31 __ stf(FloatRegisterImpl::D, F62, rvec, 8); 1.32 - __ restore(); 1.33 - __ retl(); 1.34 - __ delayed()->mov(L0, O0); 1.35 + __ mov(L0, I0); 1.36 + __ ret(); 1.37 + __ delayed()->restore(); 1.38 1.39 __ align(OptoLoopAlignment); 1.40 __ BIND(L_cbcenc256); 1.41 @@ -3962,9 +3962,9 @@ 1.42 // re-init intial vector for next block, 8-byte alignment is guaranteed 1.43 __ stf(FloatRegisterImpl::D, F60, rvec, 0); 1.44 __ stf(FloatRegisterImpl::D, F62, rvec, 8); 1.45 - __ restore(); 1.46 - __ retl(); 1.47 - __ delayed()->mov(L0, O0); 1.48 + __ mov(L0, I0); 1.49 + __ ret(); 1.50 + __ delayed()->restore(); 1.51 1.52 return start; 1.53 } 1.54 @@ -3992,9 +3992,9 @@ 1.55 const Register original_key = I5; // original key array only required during decryption 1.56 const Register keylen = L6; // reg for storing expanded key array length 1.57 1.58 - // save cipher len before save_frame, to return in the end 1.59 - __ mov(O4, L0); 1.60 __ save_frame(0); //args are read from I* registers since we save the frame in the beginning 1.61 + // save cipher len to return in the end 1.62 + __ mov(len_reg, L7); 1.63 1.64 // load original key from SunJCE expanded decryption key 1.65 // Since we load original key buffer starting first element, 8-byte alignment is guaranteed 1.66 @@ -4568,10 +4568,9 @@ 1.67 // re-init intial vector for next block, 8-byte alignment is guaranteed 1.68 __ stx(L0, rvec, 0); 1.69 __ stx(L1, rvec, 8); 1.70 - __ restore(); 1.71 - __ mov(L0, O0); 1.72 - __ retl(); 1.73 - __ delayed()->nop(); 1.74 + __ mov(L7, I0); 1.75 + __ ret(); 1.76 + __ delayed()->restore(); 1.77 1.78 return start; 1.79 }