< prev index next >

src/cpu/s390/vm/stubGenerator_s390.cpp

Print this page

        

*** 289,299 **** Label ret_is_double; // Restore frame pointer. __ z_lg(r_entryframe_fp, _z_abi(callers_sp), Z_SP); // Pop frame. Done here to minimize stalls. ! __ z_lg(Z_SP, _z_abi(callers_sp), Z_SP); // Reload some volatile registers which we've spilled before the call // to frame manager / native entry. // Access all locals via frame pointer, because we know nothing about // the topmost frame's size. --- 289,299 ---- Label ret_is_double; // Restore frame pointer. __ z_lg(r_entryframe_fp, _z_abi(callers_sp), Z_SP); // Pop frame. Done here to minimize stalls. ! __ pop_frame(); // Reload some volatile registers which we've spilled before the call // to frame manager / native entry. // Access all locals via frame pointer, because we know nothing about // the topmost frame's size.
*** 1675,1685 **** // dst must designate an even-numbered register, holding the address of the output message. // src must designate an even/odd register pair, holding the address/length of the original message // Helper function which generates code to // - load the function code in register fCode (== Z_R0) ! // - load the data block length (depends on cipher function) in register srclen if requested. // - is_decipher switches between cipher/decipher function codes // - set_len requests (if true) loading the data block length in register srclen void generate_load_AES_fCode(Register keylen, Register fCode, Register srclen, bool is_decipher) { BLOCK_COMMENT("Set fCode {"); { --- 1675,1685 ---- // dst must designate an even-numbered register, holding the address of the output message. // src must designate an even/odd register pair, holding the address/length of the original message // Helper function which generates code to // - load the function code in register fCode (== Z_R0) ! // - load the data block length (depends on cipher function) into register srclen if requested. // - is_decipher switches between cipher/decipher function codes // - set_len requests (if true) loading the data block length in register srclen void generate_load_AES_fCode(Register keylen, Register fCode, Register srclen, bool is_decipher) { BLOCK_COMMENT("Set fCode {"); {
*** 1687,1696 **** --- 1687,1697 ---- int mode = is_decipher ? VM_Version::CipherMode::decipher : VM_Version::CipherMode::cipher; bool identical_dataBlk_len = (VM_Version::Cipher::_AES128_dataBlk == VM_Version::Cipher::_AES192_dataBlk) && (VM_Version::Cipher::_AES128_dataBlk == VM_Version::Cipher::_AES256_dataBlk); // Expanded key length is 44/52/60 * 4 bytes for AES-128/AES-192/AES-256. __ z_cghi(keylen, 52); + __ z_lghi(fCode, VM_Version::Cipher::_AES256 + mode); if (!identical_dataBlk_len) { __ z_lghi(srclen, VM_Version::Cipher::_AES256_dataBlk); } __ z_brh(fCode_set); // keyLen > 52: AES256
*** 1704,1713 **** --- 1705,1715 ---- __ z_lghi(fCode, VM_Version::Cipher::_AES128 + mode); if (!identical_dataBlk_len) { __ z_lghi(srclen, VM_Version::Cipher::_AES128_dataBlk); } // __ z_brl(fCode_set); // keyLen < 52: AES128 // fallthru + __ bind(fCode_set); if (identical_dataBlk_len) { __ z_lghi(srclen, VM_Version::Cipher::_AES128_dataBlk); } }
< prev index next >