src/cpu/sparc/vm/sharedRuntime_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/cpu/sparc/vm/sharedRuntime_sparc.cpp

src/cpu/sparc/vm/sharedRuntime_sparc.cpp

Print this page
rev 7814 : 8148353: [linux-sparc] Crash in libawt.so on Linux SPARC
Summary: gcc expects clean 32 bit int in 64 bit register on function entry
Reviewed-by: kvn, dlong

*** 1324,1336 **** // stack to reg __ ld(FP, reg2offset(src.first()) + STACK_BIAS, dst.first()->as_Register()); } } else if (dst.first()->is_stack()) { // reg to stack ! __ st_ptr(src.first()->as_Register(), SP, reg2offset(dst.first()) + STACK_BIAS); } else { ! __ mov(src.first()->as_Register(), dst.first()->as_Register()); } } static void move_ptr(MacroAssembler* masm, VMRegPair src, VMRegPair dst) { --- 1324,1339 ---- // stack to reg __ ld(FP, reg2offset(src.first()) + STACK_BIAS, dst.first()->as_Register()); } } else if (dst.first()->is_stack()) { // reg to stack ! // Some compilers (gcc) expect a clean 32 bit value on function entry ! __ signx(src.first()->as_Register(), L5); ! __ st_ptr(L5, SP, reg2offset(dst.first()) + STACK_BIAS); } else { ! // Some compilers (gcc) expect a clean 32 bit value on function entry ! __ signx(src.first()->as_Register(), dst.first()->as_Register()); } } static void move_ptr(MacroAssembler* masm, VMRegPair src, VMRegPair dst) {
src/cpu/sparc/vm/sharedRuntime_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File