Module Name: src Committed By: matt Date: Sun Apr 14 15:53:30 UTC 2013
Modified Files: src/common/lib/libc/arch/arm/quad: __aeabi_ldivmod.S __aeabi_uldivmod.S Log Message: Fix calling of __qdivrem which the 3rd arg needs to passed on the stack. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S diff -u src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S:1.1 src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S:1.2 --- src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S:1.1 Sun Aug 5 06:33:51 2012 +++ src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S Sun Apr 14 15:53:30 2013 @@ -29,7 +29,7 @@ #include <machine/asm.h> -RCSID("$NetBSD: __aeabi_ldivmod.S,v 1.1 2012/08/05 06:33:51 matt Exp $") +RCSID("$NetBSD: __aeabi_ldivmod.S,v 1.2 2013/04/14 15:53:30 matt Exp $") ENTRY(__aeabi_ldivmod) push {r4-r5, sl, lr} @@ -64,9 +64,11 @@ ENTRY(__aeabi_ldivmod) * Arguments are setup, allocate some stack for the remainder * and call __qdivrem for the heavy lifting. */ - sub sp, sp, #8 - mov r4, sp /* pointer to remainder */ + sub sp, sp, #16 + add ip, sp, #8 + str ip, [sp] bl PLT_SYM(__qdivrem) + add sp, sp, #8 teq NEG, #0 /* any signs to flip? */ /* @@ -124,5 +126,4 @@ ENTRY(__aeabi_ldivmod) mov AHI, #0 pop {r4-r5, sl, lr} RET - END(__aeabi_ldivmod) Index: src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S diff -u src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.2 src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.3 --- src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.2 Sun Aug 5 06:34:09 2012 +++ src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S Sun Apr 14 15:53:30 2013 @@ -29,7 +29,7 @@ #include <machine/asm.h> -RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.2 2012/08/05 06:34:09 matt Exp $") +RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.3 2013/04/14 15:53:30 matt Exp $") /* * typedef struct { unsigned long long quo, rem } ulldiv_t; @@ -39,9 +39,11 @@ RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.2 ENTRY(__aeabi_uldivmod) push {r4,lr} - sub sp, sp, #8 - mov r4, sp - bl PLT_SYM(__qdivrem) + sub sp, sp, #16 + add ip, sp, #8 + str ip, [sp] + blx PLT_SYM(__qdivrem) + add sp, sp, #8 /* * The remainder is already on the stack just waiting to be popped * into r2/r3.