From a7364adeb97e9950b43d9efcdb3b650cb442f465 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Wed, 9 Jun 2004 19:06:50 +0000 Subject: 2004-06-09 Toralf Lund * arm/crt0.S: Copied from newlib and it now also sets up stacks for FIQ and IRQ mode, plus calls hardware_init_hook() and software_init_hook() if present. * arm/libcfunc.c, arm/swi.h, arm/syscalls.c: Copied from newlib. * arm/Makefile.in: Build crt0.o, rdpmon-crt0.o, rdimon-crt0.o, librdpmon.a, librdimon.a - support file for "bare" setup, as well as "RDP" and "RDI" monitors. * arm/coff-rdpmon.specs, arm/elf-rdpmon.specs, arm/coff-rdimon.specs, arm/elf-rdimon.specs: gcc specs files to go with above mentioned support libs and startfiles. --- libgloss/arm/libcfunc.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 libgloss/arm/libcfunc.c (limited to 'libgloss/arm/libcfunc.c') diff --git a/libgloss/arm/libcfunc.c b/libgloss/arm/libcfunc.c new file mode 100644 index 000000000..ddc611f34 --- /dev/null +++ b/libgloss/arm/libcfunc.c @@ -0,0 +1,40 @@ +/* Support files for GNU libc. Files in the C namespace go here. + Files in the system namespace (ie those that start with an underscore) + go in syscalls.c. + + Note: These functions are in a seperate file so that OS providers can + overrride the system call stubs (defined in syscalls.c) without having + to provide libc funcitons as well. */ +#include "swi.h" + +#ifdef ARM_RDI_MONITOR + +static inline int +do_AngelSWI (int reason, void * arg) +{ + int value; + asm volatile ("mov r0, %1; mov r1, %2; swi %a3; mov %0, r0" + : "=r" (value) /* Outputs */ + : "r" (reason), "r" (arg), "i" (AngelSWI) /* Inputs */ + : "r0", "r1", "lr" + /* Clobbers r0 and r1, and lr if in supervisor mode */); + return value; +} +#endif /* ARM_RDI_MONITOR */ + + +void +abort (void) +{ +#ifdef ARM_RDI_MONITOR + do_AngelSWI (AngelSWI_Reason_ReportException, + (void *) ADP_Stopped_RunTimeError); +#else + asm ("mov r0,#17\nswi %a0" :: "i" (SWI_Exit)); +#endif +} + +void +alarm (void) +{ +} -- cgit v1.2.3