xref: /optee_os/lib/libutils/isoc/arch/arm/arm32_aeabi_ldivmod_a32.S (revision 827be46c173f31c57006af70ca3a15a5b1a7fba3)
1/* SPDX-License-Identifier: BSD-2-Clause */
2/*
3 * Copyright (c) 2015, Linaro Limited
4 */
5
6#include <asm.S>
7
8/*
9 * __value_in_regs lldiv_t __aeabi_ldivmod( long long n, long long d)
10 */
11FUNC __aeabi_ldivmod , :
12UNWIND(	.fnstart)
13	push	{ip, lr}
14UNWIND(	.save {ip, lr})
15	push	{r0-r3}
16UNWIND(	.save {r0-r3})
17	mov	r0, sp
18	bl	__l_divmod
19	pop	{r0-r3}
20	pop	{ip, pc}
21UNWIND(	.fnend)
22END_FUNC __aeabi_ldivmod
23
24/*
25 * __value_in_regs ulldiv_t __aeabi_uldivmod(
26 *		unsigned long long n, unsigned long long d)
27 */
28FUNC __aeabi_uldivmod , :
29UNWIND(	.fnstart)
30	push	{ip, lr}
31UNWIND(	.save {ip, lr})
32	push	{r0-r3}
33UNWIND(	.save {r0-r3})
34	mov	r0, sp
35	bl	__ul_divmod
36	pop	{r0-r3}
37	pop	{ip, pc}
38UNWIND(	.fnend)
39END_FUNC __aeabi_uldivmod
40