1/* SPDX-License-Identifier: BSD-2-Clause */ 2/* 3 * Copyright (c) 2014, STMicroelectronics International N.V. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright notice, 10 * this list of conditions and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright notice, 13 * this list of conditions and the following disclaimer in the documentation 14 * and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29#include <asm.S> 30 31/* 32 * This assembly source is used both in kernel and userland 33 * hence define unwind resources that match both environments. 34 */ 35#if defined(CFG_UNWIND) 36#define LOCAL_UNWIND(...) __VA_ARGS__ 37#else 38#define LOCAL_UNWIND(...) 39#endif 40 41/* 42 * signed ret_idivmod_values(signed quot, signed rem); 43 * return quotient and remaining the EABI way (regs r0,r1) 44 */ 45.section .text.ret_idivmod_values 46FUNC ret_idivmod_values , : 47LOCAL_UNWIND(.fnstart) 48 bx lr 49LOCAL_UNWIND(.fnend) 50END_FUNC ret_idivmod_values 51 52/* 53 * unsigned ret_uidivmod_values(unsigned quot, unsigned rem); 54 * return quotient and remaining the EABI way (regs r0,r1) 55 */ 56.section .text.ret_uidivmod_values 57FUNC ret_uidivmod_values , : 58LOCAL_UNWIND(.fnstart) 59 bx lr 60LOCAL_UNWIND(.fnend) 61END_FUNC ret_uidivmod_values 62