2001-01-18 Jeff Johnston <jjohnstn@redhat.com>

* libc/sys/arc/Makefile.am: New file.
        * libc/sys/arc/Makefile.in: Ditto.
        * libc/sys/arc/aclocal.m4: Ditto.
        * libc/sys/arc/configure: Ditto.
        * libc/sys/arc/configure.in: Ditto.
        * libc/sys/arc/crt0.S: Ditto.
        * libc/sys/arc/isatty.c: Ditto.
        * libc/sys/arc/mem-layout.c: Ditto.
        * libc/sys/arc/sbrk.c: Ditto.
        * libc/sys/arc/syscalls.c: Ditto.
        * libc/sys/arc/sys/syscall.h: Ditto.
This commit is contained in:
Jeff Johnston 2001-01-19 01:25:13 +00:00
parent 74a3cd0a4f
commit a302b48c21
12 changed files with 2647 additions and 0 deletions

View File

@ -1,3 +1,17 @@
2001-01-18 Jeff Johnston <jjohnstn@redhat.com>
* libc/sys/arc/Makefile.am: New file.
* libc/sys/arc/Makefile.in: Ditto.
* libc/sys/arc/aclocal.m4: Ditto.
* libc/sys/arc/configure: Ditto.
* libc/sys/arc/configure.in: Ditto.
* libc/sys/arc/crt0.S: Ditto.
* libc/sys/arc/isatty.c: Ditto.
* libc/sys/arc/mem-layout.c: Ditto.
* libc/sys/arc/sbrk.c: Ditto.
* libc/sys/arc/syscalls.c: Ditto.
* libc/sys/arc/sys/syscall.h: Ditto.
Wed Jan 17 23:20:56 2001 Christopher Faylor <cgf@cygnus.com>
* libc/include/sys/unistd.h: Use correct declaration for setdtablesize.

View File

@ -0,0 +1,14 @@
## Process this file with automake to generate Makefile.in
AUTOMAKE_OPTIONS = cygnus
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
noinst_LIBRARIES = lib.a
lib_a_SOURCES = isatty.c mem-layout.c sbrk.c syscalls.c
all: crt0.o
ACLOCAL_AMFLAGS = -I ../../..
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host

View File

@ -0,0 +1,299 @@
# Makefile.in generated automatically by automake 1.3 from Makefile.am
# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DISTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
AR = @AR@
AS = @AS@
CC = @CC@
CPP = @CPP@
EXEEXT = @EXEEXT@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
NEWLIB_CFLAGS = @NEWLIB_CFLAGS@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
VERSION = @VERSION@
machine_dir = @machine_dir@
newlib_basedir = @newlib_basedir@
sys_dir = @sys_dir@
AUTOMAKE_OPTIONS = cygnus
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
noinst_LIBRARIES = lib.a
lib_a_SOURCES = isatty.c mem-layout.c sbrk.c syscalls.c
ACLOCAL_AMFLAGS = -I ../../..
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../mkinstalldirs
CONFIG_CLEAN_FILES =
LIBRARIES = $(noinst_LIBRARIES)
DEFS = @DEFS@ -I. -I$(srcdir)
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
lib_a_LIBADD =
lib_a_OBJECTS = isatty.o mem-layout.o sbrk.o syscalls.o
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
DIST_COMMON = Makefile.am Makefile.in aclocal.m4 configure configure.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP = --best
SOURCES = $(lib_a_SOURCES)
OBJECTS = $(lib_a_OBJECTS)
all: Makefile $(LIBRARIES)
.SUFFIXES:
.SUFFIXES: .S .c .o .s
$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
$(ACLOCAL_M4): @MAINT@ configure.in ../../../acinclude.m4 \
../../../aclocal.m4
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(srcdir)/configure: @MAINT@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
mostlyclean-noinstLIBRARIES:
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
distclean-noinstLIBRARIES:
maintainer-clean-noinstLIBRARIES:
.c.o:
$(COMPILE) -c $<
.s.o:
$(COMPILE) -c $<
.S.o:
$(COMPILE) -c $<
mostlyclean-compile:
-rm -f *.o core *.core
clean-compile:
distclean-compile:
-rm -f *.tab.c
maintainer-clean-compile:
lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES)
-rm -f lib.a
$(AR) cru lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD)
$(RANLIB) lib.a
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP)
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP)
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
-rm -rf $(distdir)
GZIP=$(GZIP) $(TAR) zxf $(distdir).tar.gz
mkdir $(distdir)/=build
mkdir $(distdir)/=inst
dc_install_base=`cd $(distdir)/=inst && pwd`; \
cd $(distdir)/=build \
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) dist
-rm -rf $(distdir)
@echo "========================"; \
echo "$(distdir).tar.gz is ready for distribution"; \
echo "========================"
dist: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
dist-all: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
distdir: $(DISTFILES)
-rm -rf $(distdir)
mkdir $(distdir)
-chmod 777 $(distdir)
@for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
done
info:
dvi:
check:
$(MAKE) $(AM_MAKEFLAGS)
installcheck:
install-info:
install-exec:
@$(NORMAL_INSTALL)
install-data:
@$(NORMAL_INSTALL)
install: install-exec install-data all
@:
uninstall:
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs:
mostlyclean-generic:
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-rm -f Makefile $(DISTCLEANFILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-noinstLIBRARIES mostlyclean-compile \
mostlyclean-tags mostlyclean-generic
clean: clean-noinstLIBRARIES clean-compile clean-tags clean-generic \
mostlyclean
distclean: distclean-noinstLIBRARIES distclean-compile distclean-tags \
distclean-generic clean
-rm -f config.status
maintainer-clean: maintainer-clean-noinstLIBRARIES \
maintainer-clean-compile maintainer-clean-tags \
maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
-rm -f config.status
.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
clean-tags maintainer-clean-tags distdir info dvi installcheck \
install-info install-exec install-data install uninstall all \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
all: crt0.o
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

282
newlib/libc/sys/arc/aclocal.m4 vendored Normal file
View File

@ -0,0 +1,282 @@
dnl aclocal.m4 generated automatically by aclocal 1.4
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
dnl This provides configure definitions used by all the newlib
dnl configure.in files.
dnl Basic newlib configury. This calls basic introductory stuff,
dnl including AM_INIT_AUTOMAKE and AC_CANONICAL_HOST. It also runs
dnl configure.host. The only argument is the relative path to the top
dnl newlib directory.
AC_DEFUN(NEWLIB_CONFIGURE,
[
dnl Default to --enable-multilib
AC_ARG_ENABLE(multilib,
[ --enable-multilib build many library versions (default)],
[case "${enableval}" in
yes) multilib=yes ;;
no) multilib=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
esac], [multilib=yes])dnl
dnl Support --enable-target-optspace
AC_ARG_ENABLE(target-optspace,
[ --enable-target-optspace optimize for space],
[case "${enableval}" in
yes) target_optspace=yes ;;
no) target_optspace=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for target-optspace option) ;;
esac], [target_optspace=])dnl
dnl Support --enable-newlib-mb
AC_ARG_ENABLE(newlib-mb,
[ --enable-newlib-mb enable multibyte support],
[case "${enableval}" in
yes) newlib_mb=yes ;;
no) newlib_mb=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for newlib-mb option) ;;
esac], [newlib_mb=no])dnl
dnl We may get other options which we don't document:
dnl --with-target-subdir, --with-multisrctop, --with-multisubdir
test -z "[$]{with_target_subdir}" && with_target_subdir=.
if test "[$]{srcdir}" = "."; then
if test "[$]{with_target_subdir}" != "."; then
newlib_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1"
else
newlib_basedir="[$]{srcdir}/[$]{with_multisrctop}$1"
fi
else
newlib_basedir="[$]{srcdir}/$1"
fi
AC_SUBST(newlib_basedir)
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE(newlib, 1.9.0)
# FIXME: We temporarily define our own version of AC_PROG_CC. This is
# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
# are probably using a cross compiler, which will not be able to fully
# link an executable. This should really be fixed in autoconf
# itself.
AC_DEFUN(LIB_AC_PROG_CC,
[AC_BEFORE([$0], [AC_PROG_CPP])dnl
AC_CHECK_PROG(CC, gcc, gcc)
if test -z "$CC"; then
AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
fi
AC_PROG_CC_GNU
if test $ac_cv_prog_gcc = yes; then
GCC=yes
dnl Check whether -g works, even if CFLAGS is set, in case the package
dnl plays around with CFLAGS (such as to build both debugging and
dnl normal versions of a library), tasteless as that idea is.
ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
AC_PROG_CC_G
if test "$ac_test_CFLAGS" = set; then
CFLAGS="$ac_save_CFLAGS"
elif test $ac_cv_prog_cc_g = yes; then
CFLAGS="-g -O2"
else
CFLAGS="-O2"
fi
else
GCC=
test "${CFLAGS+set}" = set || CFLAGS="-g"
fi
])
LIB_AC_PROG_CC
# AC_CHECK_TOOL does AC_REQUIRE (AC_CANONICAL_BUILD). If we don't
# run it explicitly here, it will be run implicitly before
# NEWLIB_CONFIGURE, which doesn't work because that means that it will
# be run before AC_CANONICAL_HOST.
AC_CANONICAL_BUILD
AC_CHECK_TOOL(AS, as)
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)
AC_PROG_INSTALL
AM_MAINTAINER_MODE
# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
# at least currently, we never actually build a program, so we never
# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
# fails, because we are probably configuring with a cross compiler
# which can't create executables. So we include AC_EXEEXT to keep
# automake happy, but we don't execute it, since we don't care about
# the result.
if false; then
AC_EXEEXT
fi
. [$]{newlib_basedir}/configure.host
case [$]{newlib_basedir} in
/* | [A-Za-z]:[/\\]*) newlib_flagbasedir=[$]{newlib_basedir} ;;
*) newlib_flagbasedir='[$](top_builddir)/'[$]{newlib_basedir} ;;
esac
newlib_cflags="[$]{newlib_cflags} -I"'[$](top_builddir)'"/$1/targ-include -I[$]{newlib_flagbasedir}/libc/include"
case "${host}" in
*-*-cygwin*)
newlib_cflags="[$]{newlib_cflags} -I[$]{newlib_flagbasedir}/../winsup/cygwin/include -I[$]{newlib_flagbasedir}/../winsup/w32api/include"
;;
esac
newlib_cflags="[$]{newlib_cflags} -fno-builtin"
NEWLIB_CFLAGS=${newlib_cflags}
AC_SUBST(NEWLIB_CFLAGS)
AC_SUBST(machine_dir)
AC_SUBST(sys_dir)
])
# Do all the work for Automake. This macro actually does too much --
# some checks are only needed if your package does certain things.
# But this isn't really a big deal.
# serial 1
dnl Usage:
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
AC_DEFUN(AM_INIT_AUTOMAKE,
[AC_REQUIRE([AC_PROG_INSTALL])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]
AC_SUBST(VERSION)
dnl test to see if srcdir already configured
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
ifelse([$3],,
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
AC_REQUIRE([AM_SANITY_CHECK])
AC_REQUIRE([AC_ARG_PROGRAM])
dnl FIXME This is truly gross.
missing_dir=`cd $ac_aux_dir && pwd`
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
AC_REQUIRE([AC_PROG_MAKE_SET])])
#
# Check to make sure that the build environment is sane.
#
AC_DEFUN(AM_SANITY_CHECK,
[AC_MSG_CHECKING([whether build environment is sane])
# Just in case
sleep 1
echo timestamp > conftestfile
# Do `set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
if test "[$]*" = "X"; then
# -L didn't work.
set X `ls -t $srcdir/configure conftestfile`
fi
if test "[$]*" != "X $srcdir/configure conftestfile" \
&& test "[$]*" != "X conftestfile $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
test "[$]2" = conftestfile
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
rm -f conftest*
AC_MSG_RESULT(yes)])
dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
dnl The program must properly implement --version.
AC_DEFUN(AM_MISSING_PROG,
[AC_MSG_CHECKING(for working $2)
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
if ($2 --version) < /dev/null > /dev/null 2>&1; then
$1=$2
AC_MSG_RESULT(found)
else
$1="$3/missing $2"
AC_MSG_RESULT(missing)
fi
AC_SUBST($1)])
# Add --enable-maintainer-mode option to configure.
# From Jim Meyering
# serial 1
AC_DEFUN(AM_MAINTAINER_MODE,
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
dnl maintainer-mode is disabled by default
AC_ARG_ENABLE(maintainer-mode,
[ --enable-maintainer-mode enable make rules and dependencies not useful
(and sometimes confusing) to the casual installer],
USE_MAINTAINER_MODE=$enableval,
USE_MAINTAINER_MODE=no)
AC_MSG_RESULT($USE_MAINTAINER_MODE)
AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
MAINT=$MAINTAINER_MODE_TRUE
AC_SUBST(MAINT)dnl
]
)
# Define a conditional.
AC_DEFUN(AM_CONDITIONAL,
[AC_SUBST($1_TRUE)
AC_SUBST($1_FALSE)
if $2; then
$1_TRUE=
$1_FALSE='#'
else
$1_TRUE='#'
$1_FALSE=
fi])

1687
newlib/libc/sys/arc/configure vendored Executable file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
dnl This is the newlib/libc/sys/arc configure.in file.
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.5)
AC_INIT(isatty.c)
dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.
AC_CONFIG_AUX_DIR(../../../..)
NEWLIB_CONFIGURE(../../..)
AC_OUTPUT(Makefile)

View File

@ -0,0 +1,75 @@
; ARC start up file
; In the absence of a custom linker script, go with something simple.
; We do not support passing arguments to "main", but this is an embedded
; system anyway.
;
; We call init/fini here without cpu prefixes because there is always
; only one .init/.fini section per image.
.section .text
.align 4
.global start
start:
mov sp,end ; Round "sp" up to page after "end".
add sp,sp,4095
and sp,sp,-4096
ld r8,[stack_size] ; Add stack size to "sp".
add sp,sp,r8
st sp,[sbrk_start] ; Initialize malloc heap.
st sp,[sbrk_loc]
sub sp,sp,16 ; callee expects 16 bytes already "pushed".
mov fp,0 ; Top of stack frame indicator.
mov r0,edata ; Zero bss.
mov r2,end
sub r2,r2,r0
mov r1,0
#ifdef __base__
bl.nd _memset
bl.nd init ; .init section entry point.
mov r0,%st(fini) ; .fini section entry point.
bl.nd _atexit
mov r0,0 ; argc
mov r1,0 ; argv
bl.nd _main
bl.nd _exit
#endif
#ifdef __host__
bl.nd _host_memset
bl.nd init ; .init section entry point.
mov r0,%st(fini) ; .fini section entry point.
bl.nd _host_atexit
mov r0,0 ; argc
mov r1,0 ; argv
bl.nd _host_main
bl.nd _host_exit
#endif
#ifdef __graphics__
bl.nd _graphics_memset
bl.nd init ; .init section entry point.
mov r0,%st(fini) ; .fini section entry point.
bl.nd _graphics_atexit
mov r0,0 ; argc
mov r1,0 ; argv
bl.nd _graphics_main
bl.nd _graphics_exit
#endif
#ifdef __audio__
bl.nd _audio_memset
bl.nd init ; .init section entry point.
mov r0,%st(fini) ; .fini section entry point.
bl.nd _audio_atexit
mov r0,0 ; argc
mov r1,0 ; argv
bl.nd _audio_main
bl.nd _audio_exit
#endif

View File

@ -0,0 +1,17 @@
/* isatty.c */
/* Dumb implementation so programs will at least run. */
#include <sys/stat.h>
int
isatty (int fd)
{
struct stat buf;
if (fstat (fd, &buf) < 0)
return 0;
if (S_ISCHR (buf.st_mode))
return 1;
return 0;
}

View File

@ -0,0 +1,21 @@
/* Ideally this kind of stuff is specified in a linker script. It's not clear
what the default linker script should do, so for now we have this. */
/* Keep this file separate from sbrk.c so the programmer can supply his/her
own _sbrk_r. This file could go in crt0.S, but I want to keep this in C.
This is all just an experiment anyway. */
#ifndef STACK_SIZE
/* Cache lines recycle at 4096 I think, and 4096 is listed as the page size,
so we make the stack size a multiple of it. Not that it's relevant or
anything, but why not base it on *something*? */
#define STACK_SIZE (4096 * 4)
#endif
int stack_size asm ("stack_size") = STACK_SIZE;
#ifndef SBRK_SIZE
#define SBRK_SIZE (4096 * 32)
#endif
int sbrk_size asm ("sbrk_size") = SBRK_SIZE;

View File

@ -0,0 +1,43 @@
/* sbrk support */
/* The current plan is to have one sbrk handler for all cpus.
Hence use `asm' for each global variable here to avoid the cpu prefix.
We can't intrude on the user's namespace (another reason to use asm). */
#include <sys/types.h>
#include <sys/syscall.h>
#include <errno.h>
#include <stddef.h>
/* These variables are publicly accessible for debugging purposes.
The user is also free to set sbrk_size to something different.
See mem-layout.c. */
extern int sbrk_size asm ("sbrk_size");
caddr_t sbrk_start asm ("sbrk_start");
caddr_t sbrk_loc asm ("sbrk_loc");
/*caddr_t _sbrk_r (struct _reent *, size_t) asm ("__sbrk_r");*/
/* FIXME: We need a semaphore here. */
caddr_t
_sbrk_r (struct _reent *r, size_t nbytes)
{
caddr_t result;
if (
/* Ensure we don't underflow. */
sbrk_loc + nbytes < sbrk_start
/* Ensure we don't overflow. */
|| sbrk_loc + nbytes > sbrk_start + sbrk_size)
{
errno = ENOMEM;
return ((caddr_t) -1);
}
result = sbrk_loc;
sbrk_loc += nbytes;
return result;
}

View File

@ -0,0 +1,53 @@
/* ARC system call interface */
/* A special version of the flag insn is used to distinguish syscalls from
breakpoints (a breakpoint might be set at the same place).
The upper 23 bits of the argument to a flag insn are not currently used.
By convention, bit 31 is one to indicate this is a specially coded operand.
The next 15 bits (bits 30-16) can be used for software purposes.
The format isn't documented yet, so the pattern we use here may change. */
#define SYSCALL_MARKER 0x80010000
#define SYSCALL_MAGIC 0x61082300
/* Perform a system call.
If ERR is 0, it succeeded. Otherwise it is a positive value for errno. */
#define SYSCALL(op, rc, err, r0, r1, r2) \
asm volatile ( "\
mov r0,%2\n\t \
mov r1,%3\n\t \
mov r2,%4\n\t \
mov r3,%5\n\t \
mov r4,%6\n\t \
flag %7\n\t \
nop\n\t \
nop\n\t \
nop\n\t \
mov %0,r0\n\t \
mov %1,r1" \
: "=r" (rc), "=r" (err) \
: "i" (SYSCALL_MAGIC), "r" (op), "r" (r0), "r" (r1), "r" (r2), \
"i" (1 | SYSCALL_MARKER) \
: "r0", "r1", "r2", "r3", "r4");
#define SYS_exit 1
#define SYS_open 2
#define SYS_close 3
#define SYS_read 4
#define SYS_write 5
#define SYS_lseek 6
#define SYS_link 7
#define SYS_unlink 8
#define SYS_chdir 9
#define SYS_chmod 10
#define SYS_stat 11
#define SYS_fstat 12
#define SYS_access 13
#define SYS_getpid 14
#define SYS_kill 15
#define SYS_time 16
#define SYS_MAX 17

View File

@ -0,0 +1,130 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/syscall.h>
#include <_ansi.h>
#include <errno.h>
#include <fcntl.h>
#include <stdarg.h>
#include <reent.h>
_ssize_t
_read_r (struct _reent *r, int fd, void *buf, size_t nbytes)
{
int err;
_ssize_t rc;
SYSCALL (SYS_read, rc, err, fd, buf, nbytes);
if (err)
errno = err;
return rc;
}
_ssize_t
_write_r (struct _reent *r, int fd, const void *buf, size_t nbytes)
{
int err;
_ssize_t rc;
SYSCALL (SYS_write, rc, err, fd, buf, nbytes);
if (err)
errno = err;
return rc;
}
/* FIXME: The prototype in <fcntl.h> for open() uses ...,
but reent.h uses int. */
int
_open_r (struct _reent *r, const char *buf, int flags, int mode)
{
int rc,err;
#if 0
int mode;
va_list ap;
va_start (ap, flags);
mode = va_arg (ap, int);
va_end (ap);
#endif
SYSCALL (SYS_open, rc, err, buf, flags, mode);
errno = err;
return rc;
}
int
_close_r (struct _reent *r, int fd)
{
int rc,err;
SYSCALL (SYS_close, rc, err, fd, 0, 0);
if (err)
errno = err;
return rc;
}
off_t
_lseek_r (struct _reent *r, int fd, off_t offset, int whence)
{
int err;
off_t rc;
SYSCALL (SYS_lseek, rc, err, fd, offset, whence);
if (err)
errno = err;
return rc;
}
int
_fstat_r (struct _reent *r, int fd, struct stat *buf)
{
int rc,err;
SYSCALL (SYS_fstat, rc, err, fd, buf, 0);
if (err)
errno = err;
return rc;
}
/* FIXME: Shouldn't this be _exit_r? */
void
_exit (int ret)
{
int rc,err;
SYSCALL (SYS_exit, rc, err, ret, 0, 0);
/* If that failed, use an infinite loop. */
while (1)
continue;
}
time_t
_time (time_t *timer)
{
return 0;
}
int
_creat_r (struct _reent *r, const char *path, int mode)
{
return _open_r (r, path, O_CREAT | O_TRUNC, mode);
}
int
_getpid_r (struct _reent *r)
{
return 42;
}
int
_kill_r (struct _reent *r, int pid, int sig)
{
int rc,err;
SYSCALL (SYS_kill, rc, err, pid, sig, 0);
if (err)
errno = err;
return rc;
}