diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2004-06-09 19:05:09 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2004-06-09 19:05:09 +0000 |
commit | a170abec0842d3f027a9ea7f4aa1af9642d21bc7 (patch) | |
tree | 481dcced408b1f104d97915fbc7130d4d44e34c3 /newlib/libc/sys | |
parent | cc24f9b66949336abfc7946a9d3f972bb4402743 (diff) | |
download | cygnal-a170abec0842d3f027a9ea7f4aa1af9642d21bc7.tar.gz cygnal-a170abec0842d3f027a9ea7f4aa1af9642d21bc7.tar.bz2 cygnal-a170abec0842d3f027a9ea7f4aa1af9642d21bc7.zip |
2004-06-09 Toralf Lund <toralf@procaptura.com>
* libc/sys/arm/setjmp.S, libc/sys/arm/access.c: Move
files from libc/sys/arm to libc/machine/arm.
* libc/machine/arm/Makefile.am, libc/machine/arm/Makefile.in: Add
library build support for files moved from libc/sys/arm.
* libc/sys/arm/Makefile.am, libc/sys/arm/Makefile.in: Remove
references to access and setjmp.
* configure.host: Add checks for newlib_may_supply_syscalls to
determine whether or not to use sys/arm directory and use
special compiler flags: ARM_RDI_MONITOR and ARM_RDP_MONITOR.
Diffstat (limited to 'newlib/libc/sys')
-rw-r--r-- | newlib/libc/sys/arm/Makefile.am | 2 | ||||
-rw-r--r-- | newlib/libc/sys/arm/Makefile.in | 4 | ||||
-rw-r--r-- | newlib/libc/sys/arm/access.c | 33 | ||||
-rw-r--r-- | newlib/libc/sys/arm/setjmp.S | 137 |
4 files changed, 3 insertions, 173 deletions
diff --git a/newlib/libc/sys/arm/Makefile.am b/newlib/libc/sys/arm/Makefile.am index b329e431c..76504f9d9 100644 --- a/newlib/libc/sys/arm/Makefile.am +++ b/newlib/libc/sys/arm/Makefile.am @@ -12,7 +12,7 @@ else extra_objs = endif -lib_a_SOURCES = access.c libcfunc.c trap.S setjmp.S +lib_a_SOURCES = libcfunc.c trap.S lib_a_LIBADD = $(extra_objs) lib_a_DEPENDENCIES = $(extra_objs) diff --git a/newlib/libc/sys/arm/Makefile.in b/newlib/libc/sys/arm/Makefile.in index aaa09250f..942f909b2 100644 --- a/newlib/libc/sys/arm/Makefile.in +++ b/newlib/libc/sys/arm/Makefile.in @@ -91,7 +91,7 @@ noinst_LIBRARIES = lib.a @MAY_SUPPLY_SYSCALLS_TRUE@extra_objs = syscalls.o @MAY_SUPPLY_SYSCALLS_FALSE@extra_objs = -lib_a_SOURCES = access.c libcfunc.c trap.S setjmp.S +lib_a_SOURCES = libcfunc.c trap.S lib_a_LIBADD = $(extra_objs) lib_a_DEPENDENCIES = $(extra_objs) @@ -106,7 +106,7 @@ LIBRARIES = $(noinst_LIBRARIES) DEFS = @DEFS@ -I. -I$(srcdir) CPPFLAGS = @CPPFLAGS@ LIBS = @LIBS@ -lib_a_OBJECTS = access.o libcfunc.o trap.o setjmp.o +lib_a_OBJECTS = libcfunc.o trap.o CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) diff --git a/newlib/libc/sys/arm/access.c b/newlib/libc/sys/arm/access.c deleted file mode 100644 index 8e08b3a7f..000000000 --- a/newlib/libc/sys/arm/access.c +++ /dev/null @@ -1,33 +0,0 @@ -/* This is file ACCESS.C */ -/* - * Copyright (C) 1993 DJ Delorie - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ - -#include <fcntl.h> -#include <sys/stat.h> -#include <unistd.h> - -int access(const char *fn, int flags) -{ - struct stat s; - if (stat(fn, &s)) - return -1; - if (s.st_mode & S_IFDIR) - return 0; - if (flags & W_OK) - { - if (s.st_mode & S_IWRITE) - return 0; - return -1; - } - return 0; -} - diff --git a/newlib/libc/sys/arm/setjmp.S b/newlib/libc/sys/arm/setjmp.S deleted file mode 100644 index d37486090..000000000 --- a/newlib/libc/sys/arm/setjmp.S +++ /dev/null @@ -1,137 +0,0 @@ -/* This is a simple version of setjmp and longjmp. - - Nick Clifton, Cygnus Solutions, 13 June 1997. */ - -/* ANSI concatenation macros. */ -#define CONCAT(a, b) CONCAT2(a, b) -#define CONCAT2(a, b) a##b - -#ifndef __USER_LABEL_PREFIX__ -#error __USER_LABEL_PREFIX__ not defined -#endif - -#define SYM(x) CONCAT (__USER_LABEL_PREFIX__, x) - -#ifdef __ELF__ -#define TYPE(x) .type SYM(x),function -#define SIZE(x) .size SYM(x), . - SYM(x) -#else -#define TYPE(x) -#define SIZE(x) -#endif - -/* Arm/Thumb interworking support: - - The interworking scheme expects functions to use a BX instruction - to return control to their parent. Since we need this code to work - in both interworked and non-interworked environments as well as with - older processors which do not have the BX instruction we do the - following: - Test the return address. - If the bottom bit is clear perform an "old style" function exit. - (We know that we are in ARM mode and returning to an ARM mode caller). - Otherwise use the BX instruction to perform the function exit. - - We know that we will never attempt to perform the BX instruction on - an older processor, because that kind of processor will never be - interworked, and a return address with the bottom bit set will never - be generated. - - In addition, we do not actually assemble the BX instruction as this would - require us to tell the assembler that the processor is an ARM7TDMI and - it would store this information in the binary. We want this binary to be - able to be linked with binaries compiled for older processors however, so - we do not want such information stored there. - - If we are running using the APCS-26 convention however, then we never - test the bottom bit, because this is part of the processor status. - Instead we just do a normal return, since we know that we cannot be - returning to a Thumb caller - the Thumb does not support APCS-26. - - Function entry is much simpler. If we are compiling for the Thumb we - just switch into ARM mode and then drop through into the rest of the - function. The function exit code will take care of the restore to - Thumb mode. */ - -#ifdef __APCS_26__ -#define RET movs pc, lr -#else -#define RET tst lr, #1; \ - moveq pc, lr ; \ -.word 0xe12fff1e /* bx lr */ -#endif - -#ifdef __thumb__ -#define MODE .thumb_func -.macro PROLOGUE name - .code 16 - bx pc - nop - .code 32 -SYM (.arm_start_of.\name): -.endm -#else -#define MODE .code 32 -.macro PROLOGUE name -.endm -#endif - -.macro FUNC_START name - .text - .align 2 - MODE - .globl SYM (\name) - TYPE (\name) -SYM (\name): - PROLOGUE \name -.endm - -.macro FUNC_END name - RET - SIZE (\name) -.endm - -/* -------------------------------------------------------------------- - int setjmp (jmp_buf); - -------------------------------------------------------------------- */ - - FUNC_START setjmp - - /* Save all the callee-preserved registers into the jump buffer. */ - stmea a1!, { v1-v7, fp, ip, sp, lr } - -#if 0 /* Simulator does not cope with FP instructions yet. */ -#ifndef __SOFTFP__ - /* Save the floating point registers. */ - sfmea f4, 4, [a1] -#endif -#endif - /* When setting up the jump buffer return 0. */ - mov a1, #0 - - FUNC_END setjmp - -/* -------------------------------------------------------------------- - volatile void longjmp (jmp_buf, int); - -------------------------------------------------------------------- */ - - FUNC_START longjmp - - /* If we have stack extension code it ought to be handled here. */ - - /* Restore the registers, retrieving the state when setjmp() was called. */ - ldmfd a1!, { v1-v7, fp, ip, sp, lr } - -#if 0 /* Simulator does not cope with FP instructions yet. */ -#ifndef __SOFTFP__ - /* Restore floating point registers as well. */ - lfmfd f4, 4, [a1] -#endif -#endif - /* Put the return value into the integer result register. - But if it is zero then return 1 instead. */ - movs a1, a2 - moveq a1, #1 - - FUNC_END longjmp - |