* src/vm/jit/arm/md-abi.c (md_param_alloc): Align stack arguments as well.
authormichi <none@none>
Tue, 22 May 2007 07:00:57 +0000 (07:00 +0000)
committermichi <none@none>
Tue, 22 May 2007 07:00:57 +0000 (07:00 +0000)
* src/vm/jit/arm/asmpart.S (asm_vm_call_method): Use EABI internally.

src/vm/jit/arm/asmpart.S
src/vm/jit/arm/md-abi.c

index b88d6bf2298285c2ec027bb9b87d2079d2dba9bd..934ba993e72b7e5bc4a80e19a1a9ec51f6d2c6c6 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: asmpart.S 7766 2007-04-19 13:24:48Z michi $
+   $Id: asmpart.S 7932 2007-05-22 07:00:57Z michi $
 
 */
 
@@ -133,6 +133,10 @@ asm_vm_call_method_double: */
        mov   itmp3, #0                   /* stack position                   */
 asm_calljava_copyloop:                /* reorder stack arguments!         */
 #if defined(__ARMEL__)
+       ldr   ip, [a2,#offvmargtype]      /* align 2_WORD_TYPEs               */
+       tst   ip, #1
+       tstne itmp3, #4
+       addne itmp3, itmp3, #4
        ldr   ip, [a2,#offvmargdata]      /* get LOW word of argument         */
        str   ip, [sp, itmp3]
        add   itmp3, itmp3, #4
@@ -143,6 +147,9 @@ asm_calljava_copyloop:                /* reorder stack arguments!         */
        addne itmp3, itmp3, #4
 #else /* defined(__ARMEB__) */
        ldr   ip, [a2,#offvmargtype + 4]  /* get our item type (it is u8)    */
+       tst   ip, #1                      /* align 2_WORD_TYPEs               */
+       tstne itmp3, #4
+       addne itmp3, itmp3, #4
        teq   ip, #2                      /* is it a TYPE_FLOAT?              */
        ldreq ip, [a2,#offvmargdata]      /* yes -> get LOW word of float     */
        streq ip, [sp, itmp3]
index 7e40d067248045e04b12c7381db0fe864ad9128f..ed6eee2a6af7ac1fe8cc7de81ebe031757dabb54 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: md-abi.c 7931 2007-05-21 14:42:28Z twisti $
+   $Id: md-abi.c 7932 2007-05-22 07:00:57Z michi $
 
 */
 
@@ -180,6 +180,9 @@ void md_param_alloc(methoddesc *md)
                                reguse += 2;
                        }
                        else {
+
+                               ALIGN_2(stacksize);
+
                                pd->inmemory  = true;
                                pd->regoff    = stacksize;
                                stacksize    += 2;