--- old/src/cpu/ppc/vm/interpreter_ppc.cpp 2015-11-16 09:40:20.000000000 -0800 +++ new/src/cpu/ppc/vm/interpreter_ppc.cpp 2015-11-16 09:40:20.000000000 -0800 @@ -297,8 +297,16 @@ __ bind(do_float); __ lfs(floatSlot, 0, arg_java); #if defined(LINUX) + // Linux uses ELF ABI. Both original ELF and ELFv2 ABIs have float + // in the least significant word of an argument slot. +#if defined(VM_LITTLE_ENDIAN) + __ stfs(floatSlot, 0, arg_c); +#else __ stfs(floatSlot, 4, arg_c); +#endif #elif defined(AIX) + // Although AIX runs on big endian CPU, float is in most significant + // word of an argument slot. __ stfs(floatSlot, 0, arg_c); #else #error "unknown OS"