OSDN Git Service

* arm/licfunc.c (do_AngelSWI): Remove.
authorkazu <kazu>
Mon, 25 Dec 2006 23:05:24 +0000 (23:05 +0000)
committerkazu <kazu>
Mon, 25 Dec 2006 23:05:24 +0000 (23:05 +0000)
* arm/syscalls.c (do_AngelSWI): Remove.
* arm/swi.h (do_AngelSWI): New.

libgloss/ChangeLog
libgloss/arm/libcfunc.c
libgloss/arm/swi.h
libgloss/arm/syscalls.c

index 272fdcb..c74790e 100644 (file)
@@ -3,6 +3,10 @@
        * arm/syscalls.c (_unlink, _system, _rename): Cast arguments
        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>
 
        Merge from newlib-csl-20060320-branch:
index 335b175..c8cedad 100644 (file)
 #include <errno.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))
 alarm (unsigned seconds)
 {
index f5c9103..7638dbe 100644 (file)
 #define AngelSWI_Reason_ReportException 0x18
 #define ADP_Stopped_ApplicationExit    ((2 << 16) + 38)
 #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
index 7d871f9..913dd3d 100644 (file)
@@ -49,7 +49,6 @@ static int    wrap            _PARAMS ((int));
 static int     error           _PARAMS ((int));
 static int     get_errno       _PARAMS ((void));
 static int     remap_handle    _PARAMS ((int));
-static int     do_AngelSWI     _PARAMS ((int, void *));
 static int     findslot        _PARAMS ((int));
 
 /* Register name faking - works in collusion with the linker.  */
@@ -95,26 +94,6 @@ findslot (int fh)
   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.  */
 static int
 remap_handle (int fh)