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