* 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.
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			980 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			980 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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)
 | |
| {
 | |
| }
 |