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 10388 : 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:
*** 1347,1359 ****
// 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) {
--- 1347,1365 ----
// stack to reg
__ ld(FP, reg2offset(src.first()) + STACK_BIAS, dst.first()->as_Register());
}
} else if (dst.first()->is_stack()) {
// reg to stack
! Register src_reg = src.first()->as_Register();
! // Some compiler (gcc) expects a clean 32 bit value on function entry
! __ sra(src_reg, 0, L5);
! __ st_ptr(L5, SP, reg2offset(dst.first()) + STACK_BIAS);
} else {
! Register src_reg = src.first()->as_Register();
! // Some compiler (gcc) expects a clean 32 bit value on function entry
! __ sra(src_reg, 0, L5);
! __ mov(L5, 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