1*0b57cec5SDimitry Andric//===-- aeabi_memcpy.S - EABI memcpy implementation -----------------------===// 2*0b57cec5SDimitry Andric// 3*0b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*0b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 5*0b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*0b57cec5SDimitry Andric// 7*0b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 8*0b57cec5SDimitry Andric 9*0b57cec5SDimitry Andric#include "../assembly.h" 10*0b57cec5SDimitry Andric 11*0b57cec5SDimitry Andric// void __aeabi_memcpy(void *dest, void *src, size_t n) { memcpy(dest, src, n); } 12*0b57cec5SDimitry Andric 13*0b57cec5SDimitry Andric .syntax unified 14*0b57cec5SDimitry Andric .p2align 2 15*0b57cec5SDimitry AndricDEFINE_COMPILERRT_FUNCTION(__aeabi_memcpy) 16*0b57cec5SDimitry Andric#ifdef USE_THUMB_1 17*0b57cec5SDimitry Andric push {r7, lr} 18*0b57cec5SDimitry Andric bl memcpy 19*0b57cec5SDimitry Andric pop {r7, pc} 20*0b57cec5SDimitry Andric#else 21*0b57cec5SDimitry Andric b memcpy 22*0b57cec5SDimitry Andric#endif 23*0b57cec5SDimitry AndricEND_COMPILERRT_FUNCTION(__aeabi_memcpy) 24*0b57cec5SDimitry Andric 25*0b57cec5SDimitry AndricDEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcpy4, __aeabi_memcpy) 26*0b57cec5SDimitry AndricDEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memcpy8, __aeabi_memcpy) 27*0b57cec5SDimitry Andric 28*0b57cec5SDimitry AndricNO_EXEC_STACK_DIRECTIVE 29*0b57cec5SDimitry Andric 30