* arm/licfunc.c (do_AngelSWI): Remove.
* arm/syscalls.c (do_AngelSWI): Remove. * arm/swi.h (do_AngelSWI): New.
This commit is contained in:
		| @@ -3,6 +3,10 @@ | |||||||
| 	* arm/syscalls.c (_unlink, _system, _rename): Cast arguments | 	* arm/syscalls.c (_unlink, _system, _rename): Cast arguments | ||||||
| 	to do_AngelSWI to int. | 	to do_AngelSWI to int. | ||||||
|  |  | ||||||
|  | 	* arm/licfunc.c (do_AngelSWI): Remove. | ||||||
|  | 	* arm/syscalls.c (do_AngelSWI): Remove. | ||||||
|  | 	* arm/swi.h (do_AngelSWI): New. | ||||||
|  |  | ||||||
| 2006-12-18  Kazu Hirata  <kazu@codesourcery.com> | 2006-12-18  Kazu Hirata  <kazu@codesourcery.com> | ||||||
|  |  | ||||||
| 	Merge from newlib-csl-20060320-branch: | 	Merge from newlib-csl-20060320-branch: | ||||||
|   | |||||||
| @@ -10,20 +10,6 @@ | |||||||
| #include <errno.h> | #include <errno.h> | ||||||
| #include <unistd.h> | #include <unistd.h> | ||||||
|  |  | ||||||
| #ifdef ARM_RDI_MONITOR |  | ||||||
| static inline int |  | ||||||
| do_AngelSWI (int reason, void * arg) |  | ||||||
| { |  | ||||||
|   int value; |  | ||||||
|   asm volatile ("mov r0, %1; mov r1, %2; " AngelSWIInsn " %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 */ |  | ||||||
|  |  | ||||||
| unsigned __attribute__((weak)) | unsigned __attribute__((weak)) | ||||||
| alarm (unsigned seconds) | alarm (unsigned seconds) | ||||||
| { | { | ||||||
|   | |||||||
| @@ -66,3 +66,24 @@ | |||||||
| #define AngelSWI_Reason_ReportException 0x18 | #define AngelSWI_Reason_ReportException 0x18 | ||||||
| #define ADP_Stopped_ApplicationExit 	((2 << 16) + 38) | #define ADP_Stopped_ApplicationExit 	((2 << 16) + 38) | ||||||
| #define ADP_Stopped_RunTimeError 	((2 << 16) + 35) | #define ADP_Stopped_RunTimeError 	((2 << 16) + 35) | ||||||
|  |  | ||||||
|  | #if defined(ARM_RDI_MONITOR) && !defined(__ASSEMBLER__) | ||||||
|  |  | ||||||
|  | static inline int | ||||||
|  | do_AngelSWI (int reason, void * arg) | ||||||
|  | { | ||||||
|  |   int value; | ||||||
|  |   asm volatile ("mov r0, %1; mov r1, %2; " AngelSWIInsn " %a3; mov %0, r0" | ||||||
|  |        : "=r" (value) /* Outputs */ | ||||||
|  |        : "r" (reason), "r" (arg), "i" (AngelSWI) /* Inputs */ | ||||||
|  |        : "r0", "r1", "r2", "r3", "ip", "lr", "memory", "cc" | ||||||
|  | 		/* Clobbers r0 and r1, and lr if in supervisor mode */); | ||||||
|  |                 /* Accordingly to page 13-77 of ARM DUI 0040D other registers | ||||||
|  |                    can also be clobbered.  Some memory positions may also be | ||||||
|  |                    changed by a system call, so they should not be kept in | ||||||
|  |                    registers. Note: we are assuming the manual is right and | ||||||
|  |                    Angel is respecting the APCS.  */ | ||||||
|  |   return value; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #endif | ||||||
|   | |||||||
| @@ -49,7 +49,6 @@ static int	wrap		_PARAMS ((int)); | |||||||
| static int	error		_PARAMS ((int)); | static int	error		_PARAMS ((int)); | ||||||
| static int	get_errno	_PARAMS ((void)); | static int	get_errno	_PARAMS ((void)); | ||||||
| static int	remap_handle	_PARAMS ((int)); | static int	remap_handle	_PARAMS ((int)); | ||||||
| static int	do_AngelSWI	_PARAMS ((int, void *)); |  | ||||||
| static int 	findslot	_PARAMS ((int)); | static int 	findslot	_PARAMS ((int)); | ||||||
|  |  | ||||||
| /* Register name faking - works in collusion with the linker.  */ | /* Register name faking - works in collusion with the linker.  */ | ||||||
| @@ -95,26 +94,6 @@ findslot (int fh) | |||||||
|   return i; |   return i; | ||||||
| } | } | ||||||
|  |  | ||||||
| #ifdef ARM_RDI_MONITOR |  | ||||||
|  |  | ||||||
| static inline int |  | ||||||
| do_AngelSWI (int reason, void * arg) |  | ||||||
| { |  | ||||||
|   int value; |  | ||||||
|   asm volatile ("mov r0, %1; mov r1, %2; " AngelSWIInsn " %a3; mov %0, r0" |  | ||||||
|        : "=r" (value) /* Outputs */ |  | ||||||
|        : "r" (reason), "r" (arg), "i" (AngelSWI) /* Inputs */ |  | ||||||
|        : "r0", "r1", "r2", "r3", "ip", "lr", "memory", "cc" |  | ||||||
| 		/* Clobbers r0 and r1, and lr if in supervisor mode */); |  | ||||||
|                 /* Accordingly to page 13-77 of ARM DUI 0040D other registers |  | ||||||
|                    can also be clobbered.  Some memory positions may also be |  | ||||||
|                    changed by a system call, so they should not be kept in |  | ||||||
|                    registers. Note: we are assuming the manual is right and |  | ||||||
|                    Angel is respecting the APCS.  */ |  | ||||||
|   return value; |  | ||||||
| } |  | ||||||
| #endif /* ARM_RDI_MONITOR */ |  | ||||||
|  |  | ||||||
| /* Function to convert std(in|out|err) handles to internal versions.  */ | /* Function to convert std(in|out|err) handles to internal versions.  */ | ||||||
| static int | static int | ||||||
| remap_handle (int fh) | remap_handle (int fh) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user