blob: 376d02de75eddc82e3bc79c37707ad697b68cb2a [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (c) 2015, Linaro Limited
*/
#include <asm.S>
/*
* This assembly source is used both in kernel and userland
* hence define unwind resources that match both environments.
*/
#if defined(CFG_UNWIND)
#define LOCAL_UNWIND(...) __VA_ARGS__
#else
#define LOCAL_UNWIND(...)
#endif
/*
* __value_in_regs lldiv_t __aeabi_ldivmod( long long n, long long d)
*/
.section .text.__aeabi_ldivmod
FUNC __aeabi_ldivmod , :
LOCAL_UNWIND(.fnstart)
push {ip, lr}
LOCAL_UNWIND(.save {ip, lr})
push {r0-r3}
LOCAL_UNWIND(.save {r0-r3})
mov r0, sp
bl __l_divmod
pop {r0-r3}
pop {ip, pc}
LOCAL_UNWIND(.fnend)
END_FUNC __aeabi_ldivmod
/*
* __value_in_regs ulldiv_t __aeabi_uldivmod(
* unsigned long long n, unsigned long long d)
*/
.section .text.__aeabi_uldivmod
FUNC __aeabi_uldivmod , :
LOCAL_UNWIND(.fnstart)
push {ip, lr}
LOCAL_UNWIND(.save {ip, lr})
push {r0-r3}
LOCAL_UNWIND(.save {r0-r3})
mov r0, sp
bl __ul_divmod
pop {r0-r3}
pop {ip, pc}
LOCAL_UNWIND(.fnend)
END_FUNC __aeabi_uldivmod