mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-30 19:10:36 +08:00
* libc/sys/arm/syscalls.c (do_AngelSWI): Delete.
* libc/sys/arm/libcfuncs.c (do_AngelSWI): Delete. * libc/sys/arm/swi.h: Copy over from libgloss.
This commit is contained in:
parent
8eeeb65f41
commit
320a1e7412
@ -1,3 +1,9 @@
|
|||||||
|
2013-07-18 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
|
||||||
|
|
||||||
|
* libc/sys/arm/syscalls.c (do_AngelSWI): Delete.
|
||||||
|
* libc/sys/arm/libcfuncs.c (do_AngelSWI): Delete.
|
||||||
|
* libc/sys/arm/swi.h: Copy over from libgloss.
|
||||||
|
|
||||||
2013-07-17 Janis Johnson <janisjo@codesourcery.com>
|
2013-07-17 Janis Johnson <janisjo@codesourcery.com>
|
||||||
|
|
||||||
* libc/machine/powerpc/configure.in: Remove extra_sources; fix
|
* libc/machine/powerpc/configure.in: Remove extra_sources; fix
|
||||||
|
@ -7,20 +7,6 @@
|
|||||||
to provide libc funcitons as well. */
|
to provide libc funcitons as well. */
|
||||||
#include "swi.h"
|
#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; " 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 */
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
#include "arm.h"
|
||||||
|
|
||||||
/* SWI numbers for RDP (Demon) monitor. */
|
/* SWI numbers for RDP (Demon) monitor. */
|
||||||
#define SWI_WriteC 0x0
|
#define SWI_WriteC 0x0
|
||||||
#define SWI_Write0 0x2
|
#define SWI_Write0 0x2
|
||||||
@ -33,8 +35,8 @@
|
|||||||
#else
|
#else
|
||||||
#define AngelSWI AngelSWI_ARM
|
#define AngelSWI AngelSWI_ARM
|
||||||
#endif
|
#endif
|
||||||
/* For Thumb-2 code use the BKPT instruction instead of SWI. */
|
/* For thumb only architectures use the BKPT instruction instead of SWI. */
|
||||||
#ifdef __thumb2__
|
#ifdef THUMB_V7M_V6M
|
||||||
#define AngelSWIInsn "bkpt"
|
#define AngelSWIInsn "bkpt"
|
||||||
#define AngelSWIAsm bkpt
|
#define AngelSWIAsm bkpt
|
||||||
#else
|
#else
|
||||||
@ -66,3 +68,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
|
||||||
|
@ -48,7 +48,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. */
|
||||||
@ -94,26 +93,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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user