diff src/cpu/ppc/vm/interpreter_ppc.cpp @ 23862:aa6d8e03b258

Merge
author asaha
date Fri, 05 Feb 2016 23:10:25 -0800
parents e9e252c83b2b 737b321e6f0e
children
line wrap: on
line diff
--- a/src/cpu/ppc/vm/interpreter_ppc.cpp	Wed Jan 27 15:01:46 2016 +0100
+++ b/src/cpu/ppc/vm/interpreter_ppc.cpp	Fri Feb 05 23:10:25 2016 -0800
@@ -296,8 +296,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"