| /* SPDX-License-Identifier: GPL-2.0-or-later */ |
| |
| #include <stddef.h> |
| #include <string.h> |
| #include <console/console.h> |
| |
| /* FIXME(dhendrix): prototypes added for assembler */ |
| int raise(int signum) __attribute__((used)); |
| int raise(int signum) |
| { |
| printk(BIOS_CRIT, "%s: Signal # %d caught\n", __func__, signum); |
| return 0; |
| } |
| |
| /* Dummy function to avoid linker complaints */ |
| void __aeabi_unwind_cpp_pr0(void) __attribute__((used)); |
| void __aeabi_unwind_cpp_pr0(void) |
| { |
| } |
| |
| void __aeabi_unwind_cpp_pr1(void) __attribute__((used)); |
| void __aeabi_unwind_cpp_pr1(void) |
| { |
| } |
| |
| /* Support the alias for the __aeabi_memcpy which may |
| assume memory alignment. */ |
| void __aeabi_memcpy4(void *dest, const void *src, size_t n) |
| __attribute((alias("__aeabi_memcpy"))); |
| |
| void __aeabi_memcpy8(void *dest, const void *src, size_t n) |
| __attribute((alias("__aeabi_memcpy"))); |
| |
| void __aeabi_memcpy(void *dest, const void *src, size_t n); |
| void __aeabi_memcpy(void *dest, const void *src, size_t n) |
| { |
| (void)memcpy(dest, src, n); |
| } |
| |
| void __aeabi_memset(void *dest, size_t n, int c); |
| void __aeabi_memset(void *dest, size_t n, int c) |
| { |
| (void)memset(dest, c, n); |
| } |
| |
| /* Support the alias for the __aeabi_memclr which may |
| assume memory alignment. */ |
| void __aeabi_memclr4(void *dest, size_t n) |
| __attribute((alias("__aeabi_memclr"))); |
| |
| void __aeabi_memclr8(void *dest, size_t n) |
| __attribute((alias("__aeabi_memclr"))); |
| |
| /* Support the routine __aeabi_memclr. */ |
| void __aeabi_memclr(void *dest, size_t n); |
| void __aeabi_memclr(void *dest, size_t n) |
| { |
| __aeabi_memset(dest, n, 0); |
| } |