From: Paolo Bonzini <pbonzini@redhat.com> To: kvm@vger.kernel.org Subject: [PATCH v2 kvm-unit-tests 2/2] arm: add eabi version of 64-bit division functions Date: Wed, 12 May 2021 12:54:40 +0200 [thread overview] Message-ID: <20210512105440.748153-3-pbonzini@redhat.com> (raw) In-Reply-To: <20210512105440.748153-1-pbonzini@redhat.com> eabi prescribes different entry points for 64-bit division on 32-bit platforms. Implement a wrapper for the GCC-style __divmoddi4 and __udivmoddi4 functions. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- arm/Makefile.arm | 1 + lib/arm/ldivmod.S | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 lib/arm/ldivmod.S diff --git a/arm/Makefile.arm b/arm/Makefile.arm index 687a8ed..3a4cc6b 100644 --- a/arm/Makefile.arm +++ b/arm/Makefile.arm @@ -24,6 +24,7 @@ cflatobjs += lib/arm/spinlock.o cflatobjs += lib/arm/processor.o cflatobjs += lib/arm/stack.o cflatobjs += lib/ldiv32.o +cflatobjs += lib/arm/ldivmod.o # arm specific tests tests = diff --git a/lib/arm/ldivmod.S b/lib/arm/ldivmod.S new file mode 100644 index 0000000..de11ac9 --- /dev/null +++ b/lib/arm/ldivmod.S @@ -0,0 +1,32 @@ +// EABI ldivmod and uldivmod implementation based on libcompiler-rt +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. + + .syntax unified + .align 2 + .globl __aeabi_uldivmod + .type __aeabi_uldivmod, %function +__aeabi_uldivmod: + push {r11, lr} + sub sp, sp, #16 + add r12, sp, #8 + str r12, [sp] // third argument to __udivmoddi4 + bl __udivmoddi4 + ldr r2, [sp, #8] // remainder returned in r2-r3 + ldr r3, [sp, #12] + add sp, sp, #16 + pop {r11, pc} + + .globl __aeabi_ldivmod + .type __aeabi_ldivmod, %function +__aeabi_ldivmod: + push {r11, lr} + sub sp, sp, #16 + add r12, sp, #8 + str r12, [sp] // third argument to __divmoddi4 + bl __divmoddi4 + ldr r2, [sp, #8] // remainder returned in r2-r3 + ldr r3, [sp, #12] + add sp, sp, #16 + pop {r11, pc} -- 2.31.1
next prev parent reply other threads:[~2021-05-12 10:54 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-05-12 10:54 [PATCH v2 kvm-unit-tests 0/2] fix long division routines for ARM eabi Paolo Bonzini 2021-05-12 10:54 ` [PATCH v2 kvm-unit-tests 1/2] libcflat: clean up and complete long division routines Paolo Bonzini 2021-05-12 13:44 ` Alexandru Elisei 2021-05-12 10:54 ` Paolo Bonzini [this message] 2021-05-12 13:44 ` [PATCH v2 kvm-unit-tests 2/2] arm: add eabi version of 64-bit division functions Alexandru Elisei 2021-05-12 13:51 ` Paolo Bonzini 2021-05-12 14:04 ` Alexandru Elisei 2021-05-12 14:04 ` [PATCH v2 kvm-unit-tests 0/2] fix long division routines for ARM eabi Alexandru Elisei
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210512105440.748153-3-pbonzini@redhat.com \ --to=pbonzini@redhat.com \ --cc=kvm@vger.kernel.org \ --subject='Re: [PATCH v2 kvm-unit-tests 2/2] arm: add eabi version of 64-bit division functions' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).