1238901Sandrew//===-- aeabi_uidivmod.S - EABI uidivmod implementation -------------------===// 2238901Sandrew// 3238901Sandrew// The LLVM Compiler Infrastructure 4238901Sandrew// 5238901Sandrew// This file is dual licensed under the MIT and the University of Illinois Open 6238901Sandrew// Source Licenses. See LICENSE.TXT for details. 7238901Sandrew// 8238901Sandrew//===----------------------------------------------------------------------===// 9238901Sandrew 10238901Sandrew#include "../assembly.h" 11238901Sandrew 12238901Sandrew// struct { unsigned quot, unsigned rem} 13238901Sandrew// __aeabi_uidivmod(unsigned numerator, unsigned denominator) { 14238901Sandrew// unsigned rem, quot; 15238901Sandrew// quot = __udivmodsi4(numerator, denominator, &rem); 16238901Sandrew// return {quot, rem}; 17238901Sandrew// } 18238901Sandrew 19238901Sandrew .syntax unified 20238901Sandrew .align 2 21238901SandrewDEFINE_COMPILERRT_FUNCTION(__aeabi_uidivmod) 22238901Sandrew push { lr } 23238901Sandrew sub sp, sp, #4 24238901Sandrew mov r2, sp 25238901Sandrew bl SYMBOL_NAME(__udivmodsi4) 26238901Sandrew ldr r1, [sp] 27238901Sandrew add sp, sp, #4 28238901Sandrew pop { pc } 29