diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/configure.host newlib-main-integrate/newlib/configure.host --- newlib-main/newlib/configure.host Tue Jun 18 23:20:18 2002 +++ newlib-main-integrate/newlib/configure.host Sat Jul 13 15:23:34 2002 @@ -125,6 +125,13 @@ case "${host_cpu}" in m32r*) machine_dir=m32r ;; + + m68hc11|m6811|m68hc12|m6812) + machine_dir=m68hc11 + newlib_cflags="-DPREFER_SIZE_OVER_SPEED -Os -mrelax" + CFLAGS="-g -Os" + ;; + m68*) machine_dir=m68k newlib_cflags="${newlib_cflags} -DCOMPACT_CTYPE" @@ -321,6 +328,11 @@ case "${host}" in ##newlib_cflags="${newlib_cflags} -I`newlib-flags --kernel-dir`/include" ##newlib_cflags="${newlib_cflags} -idirafter ${gcc_dir}include" ;; + m68hc11-*-*|m6811-*-*|m6812-*-*|m68hc12-*-*) + sys_dir=m68hc11 + syscalls_dir= + ;; + m68k-sun-sunos*) unix_dir=unix ;; @@ -479,6 +491,9 @@ case "${host}" in newlib_cflags="${newlib_cflags} -msdata=sdata" syscall_dir=syscalls ;; + m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) + newlib_cflags="${newlib_cflags} -DNO_EXEC -DABORT_PROVIDED -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES" + ;; mcore-*-*) newlib_cflags="${newlib_cflags}" syscall_dir=syscalls diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/include/machine/ieeefp.h newlib-main-integrate/newlib/libc/include/machine/ieeefp.h --- newlib-main/newlib/libc/include/machine/ieeefp.h Tue Jun 18 23:20:21 2002 +++ newlib-main-integrate/newlib/libc/include/machine/ieeefp.h Sat Jul 13 15:23:34 2002 @@ -44,6 +44,13 @@ #define __IEEE_BIG_ENDIAN #endif +#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__) +#define __IEEE_BIG_ENDIAN +#ifdef __HAVE_SHORT_DOUBLE__ +# define _DOUBLE_IS_32BITS +#endif +#endif + #if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) #define __IEEE_BIG_ENDIAN #define __SMALL_BITFIELDS diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/include/machine/setjmp.h newlib-main-integrate/newlib/libc/include/machine/setjmp.h --- newlib-main/newlib/libc/include/machine/setjmp.h Fri Jun 28 01:58:38 2002 +++ newlib-main-integrate/newlib/libc/include/machine/setjmp.h Sat Jul 13 15:23:34 2002 @@ -28,6 +28,14 @@ _BEGIN_STD_C #define _JBLEN 34 #endif +#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__) +/* + * D, X, Y are not saved. + * Only take into account the pseudo soft registers (max 32). + */ +#define _JBLEN 32 +#endif + #if defined(__Z8001__) || defined(__Z8002__) /* 16 regs + pc */ #define _JBLEN 20 diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/include/sys/config.h newlib-main-integrate/newlib/libc/include/sys/config.h --- newlib-main/newlib/libc/include/sys/config.h Tue Jul 2 20:18:57 2002 +++ newlib-main-integrate/newlib/libc/include/sys/config.h Sat Jul 13 15:23:34 2002 @@ -56,6 +56,31 @@ #endif #endif +#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__) +#undef INT_MAX +#undef UINT_MAX +#define INT_MAX __INT_MAX__ +#define UINT_MAX (__INT_MAX__ * 2U + 1) +#define _POINTER_INT short +#define __IEEE_BIG_ENDIAN +#ifdef __HAVE_SHORT_DOUBLE__ +# define _DOUBLE_IS_32BITS +#endif + +#ifdef INTEGER_ONLY +# define vfiprintf vfprintf +# define _vfiprintf_r _vfprintf_r +#endif +#ifdef FLOATING_POINT +# define vfprintf vffprintf +# define _vfprintf_r _vffprintf_r +#endif +#define vfiprintf vfprintf +#define fiprintf fprintf +#define iprintf printf +#define siprintf sprintf +#endif + #ifdef ___AM29K__ #define _FLOAT_RET double #endif diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/machine/m68hc11/Makefile.am newlib-main-integrate/newlib/libc/machine/m68hc11/Makefile.am --- newlib-main/newlib/libc/machine/m68hc11/Makefile.am Thu Jan 1 01:00:00 1970 +++ newlib-main-integrate/newlib/libc/machine/m68hc11/Makefile.am Sat Jul 13 15:23:34 2002 @@ -0,0 +1,12 @@ +## 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 = setjmp.S + +ACLOCAL_AMFLAGS = -I ../../.. +CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/machine/m68hc11/aclocal.m4 newlib-main-integrate/newlib/libc/machine/m68hc11/aclocal.m4 --- newlib-main/newlib/libc/machine/m68hc11/aclocal.m4 Thu Jan 1 01:00:00 1970 +++ newlib-main-integrate/newlib/libc/machine/m68hc11/aclocal.m4 Sat Jul 13 15:23:34 2002 @@ -0,0 +1,345 @@ +dnl aclocal.m4 generated automatically by aclocal 1.3b + +dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 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.8.1) + +# 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, :) + +AM_PROG_INSTALL + +AM_MAINTAINER_MODE + +# We need AM_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 AM_EXEEXT to keep +# automake happy, but we don't execute it, since we don't care about +# the result. +if false; then + AM_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 + *-*-cygwin32*) + newlib_cflags="[$]{newlib_cflags} -I[$]{newlib_flagbasedir}/../winsup/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([AM_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") +AC_DEFINE_UNQUOTED(VERSION, "$VERSION")) +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])]) + + +# serial 1 + +AC_DEFUN(AM_PROG_INSTALL, +[AC_REQUIRE([AC_PROG_INSTALL]) +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' +AC_SUBST(INSTALL_SCRIPT)dnl +]) + +# +# 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) + if test $USE_MAINTAINER_MODE = yes; then + MAINT= + else + MAINT='#M#' + fi + AC_SUBST(MAINT)dnl +] +) + +# Check to see if we're running under Win32, without using +# AC_CANONICAL_*. If so, set output variable EXEEXT to ".exe". +# Otherwise set it to "". + +dnl AM_EXEEXT() +dnl This knows we add .exe if we're building in the Cygwin32 +dnl environment. But if we're not, then it compiles a test program +dnl to see if there is a suffix for executables. +AC_DEFUN(AM_EXEEXT, +[AC_REQUIRE([AM_CYGWIN32]) +AC_REQUIRE([AM_MINGW32]) +AC_MSG_CHECKING([for executable suffix]) +AC_CACHE_VAL(am_cv_exeext, +[if test "$CYGWIN32" = yes || test "$MINGW32" = yes; then +am_cv_exeext=.exe +else +cat > am_c_test.c << 'EOF' +int main() { +/* Nothing needed here */ +} +EOF +${CC-cc} -o am_c_test $CFLAGS $CPPFLAGS $LDFLAGS am_c_test.c $LIBS 1>&5 +am_cv_exeext= +for file in am_c_test.*; do + case $file in + *.c) ;; + *.o) ;; + *) am_cv_exeext=`echo $file | sed -e s/am_c_test//` ;; + esac +done +rm -f am_c_test*]) +test x"${am_cv_exeext}" = x && am_cv_exeext=no +fi +EXEEXT="" +test x"${am_cv_exeext}" != xno && EXEEXT=${am_cv_exeext} +AC_MSG_RESULT(${am_cv_exeext}) +AC_SUBST(EXEEXT)]) + +# Check to see if we're running under Cygwin32, without using +# AC_CANONICAL_*. If so, set output variable CYGWIN32 to "yes". +# Otherwise set it to "no". + +dnl AM_CYGWIN32() +AC_DEFUN(AM_CYGWIN32, +[AC_CACHE_CHECK(for Cygwin32 environment, am_cv_cygwin32, +[AC_TRY_COMPILE(,[return __CYGWIN32__;], +am_cv_cygwin32=yes, am_cv_cygwin32=no) +rm -f conftest*]) +CYGWIN32= +test "$am_cv_cygwin32" = yes && CYGWIN32=yes]) + +# Check to see if we're running under Mingw, without using +# AC_CANONICAL_*. If so, set output variable MINGW32 to "yes". +# Otherwise set it to "no". + +dnl AM_MINGW32() +AC_DEFUN(AM_MINGW32, +[AC_CACHE_CHECK(for Mingw32 environment, am_cv_mingw32, +[AC_TRY_COMPILE(,[return __MINGW32__;], +am_cv_mingw32=yes, am_cv_mingw32=no) +rm -f conftest*]) +MINGW32= +test "$am_cv_mingw32" = yes && MINGW32=yes]) + diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/machine/m68hc11/configure.in newlib-main-integrate/newlib/libc/machine/m68hc11/configure.in --- newlib-main/newlib/libc/machine/m68hc11/configure.in Thu Jan 1 01:00:00 1970 +++ newlib-main-integrate/newlib/libc/machine/m68hc11/configure.in Sat Jul 13 15:23:34 2002 @@ -0,0 +1,12 @@ +dnl This is the newlib/libc/machine/m68hc11 configure.in file. +dnl Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.5) +AC_INIT(setjmp.S) + +dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake. +AC_CONFIG_AUX_DIR(../../../..) + +NEWLIB_CONFIGURE(../../..) + +AC_OUTPUT(Makefile) diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/machine/m68hc11/setjmp.S newlib-main-integrate/newlib/libc/machine/m68hc11/setjmp.S --- newlib-main/newlib/libc/machine/m68hc11/setjmp.S Thu Jan 1 01:00:00 1970 +++ newlib-main-integrate/newlib/libc/machine/m68hc11/setjmp.S Sat Jul 13 15:23:34 2002 @@ -0,0 +1,141 @@ +/* setjmp/longjmp routines for M68HC11 & M68HC12. + * Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +#if __INT__ == 32 +# define val 4 +# define INT32(X) X +#else +# define val 2 +# define INT32(X) +#endif + +#ifdef mc6811 +# define REG(X) *X +#else +# define REG(X) X +#endif + + .sect .text + .global setjmp + .global longjmp + +#ifdef mc6811 +setjmp: + xgdx + tsy + ldd 0,y + std 0,x + sty 2,x + ldd REG(_.frame) + std 4,x + ldd REG(_.d1) + std 6,x + ldd REG(_.d2) + std 8,x + ldd REG(_.d3) + std 10,x + ldd REG(_.d4) + std 12,x + ldd REG(_.d5) + std 14,x + ldd REG(_.d6) + std 16,x + ldd REG(_.d7) + std 18,x + ldd REG(_.d8) + std 20,x +INT32( ldx #0) + clra + clrb + rts +#else +setjmp: + xgdx + movw 0,sp,2,x+ + sts 2,x+ + movw _.frame,2,x+ + movw _.d1,2,x+ + movw _.d2,2,x+ + movw _.d3,2,x+ + movw _.d4,2,x+ + movw _.d5,2,x+ + movw _.d6,2,x+ + movw _.d7,2,x+ + movw _.d8,2,x+ +INT32( ldx #0) + clra + clrb + rts +#endif + +#ifdef mc6811 +longjmp: + xgdx + tsy + ldd val,y + bne do_jump + ldd #1 +do_jump: + xgdy + ldd 4,x + std REG(_.frame) + ldd 6,x + std REG(_.d1) + ldd 8,x + std REG(_.d2) + ldd 10,x + std REG(_.d3) + ldd 12,x + std REG(_.d4) + ldd 14,x + std REG(_.d5) + ldd 16,x + std REG(_.d6) + ldd 18,x + std REG(_.d7) + ldd 20,x + std REG(_.d8) + ldd 0,x + ldx 2,x + txs + std 0,x +INT32( ldx #0) + xgdy + rts +#else + +longjmp: + xgdx + ldy val,sp + bne do_jump + ldy #1 +do_jump: + ldd 4,x+ + movw 2,x+,_.frame + movw 0,x,_.d1 + movw 2,x,_.d2 + movw 4,x,_.d3 + movw 6,x,_.d4 + movw 8,x,_.d5 + movw 10,x,_.d6 + movw 12,x,_.d7 + movw 14,x,_.d8 + ldx -4,x + txs + std 0,x +INT32( ldx #0) + xgdy + rts +#endif + diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/sys/m68hc11/Makefile.am newlib-main-integrate/newlib/libc/sys/m68hc11/Makefile.am --- newlib-main/newlib/libc/sys/m68hc11/Makefile.am Thu Jan 1 01:00:00 1970 +++ newlib-main-integrate/newlib/libc/sys/m68hc11/Makefile.am Sat Jul 13 15:23:34 2002 @@ -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 = syscalls.c sci-inout.S + +all: crt0.o + +ACLOCAL_AMFLAGS = -I ../../.. +CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/sys/m68hc11/aclocal.m4 newlib-main-integrate/newlib/libc/sys/m68hc11/aclocal.m4 --- newlib-main/newlib/libc/sys/m68hc11/aclocal.m4 Thu Jan 1 01:00:00 1970 +++ newlib-main-integrate/newlib/libc/sys/m68hc11/aclocal.m4 Sat Jul 13 15:23:34 2002 @@ -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]) + diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/sys/m68hc11/configure.in newlib-main-integrate/newlib/libc/sys/m68hc11/configure.in --- newlib-main/newlib/libc/sys/m68hc11/configure.in Thu Jan 1 01:00:00 1970 +++ newlib-main-integrate/newlib/libc/sys/m68hc11/configure.in Sat Jul 13 15:23:34 2002 @@ -0,0 +1,12 @@ +dnl This is the newlib/libc/sys/m68hc11 configure.in file. +dnl Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.5) +AC_INIT(syscalls.c) + +dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake. +AC_CONFIG_AUX_DIR(../../../..) + +NEWLIB_CONFIGURE(../../..) + +AC_OUTPUT(Makefile) diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/sys/m68hc11/crt0.S newlib-main-integrate/newlib/libc/sys/m68hc11/crt0.S --- newlib-main/newlib/libc/sys/m68hc11/crt0.S Thu Jan 1 01:00:00 1970 +++ newlib-main-integrate/newlib/libc/sys/m68hc11/crt0.S Sat Jul 13 15:23:34 2002 @@ -0,0 +1,69 @@ +/* Startup code for M68HC11/M68HC12. + * Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +;----------------------------------------- +; startup code +;----------------------------------------- + .file "crt0.s" + +;; +;; +;; The linker concatenate the .install* sections in the following order: +;; +;; .install0 Setup the stack pointer +;; .install1 Place holder for applications +;; .install2 Optional installation of data section in memory +;; .install3 Place holder for applications +;; .install4 Invokes the main +;; + .sect .install0,"ax",@progbits + .globl _start + +_start: +;; +;; At this step, the stack is not initialized and interrupts are masked. +;; Applications only have 64 cycles to initialize some registers. +;; +;; To have a generic/configurable startup, initialize the stack to +;; the end of some memory region. The _stack symbol is defined by +;; the linker. +;; + lds #_stack + + .sect .install2,"ax",@progbits +;; +;; Call a specific initialization operation. The default is empty. +;; It can be overriden by applications. It is intended to initialize +;; the 68hc11 registers. Function prototype is: +;; +;; int __premain(void); +;; + jsr __premain + +;; +;; +;; + .sect .install4,"ax",@progbits + jsr main +fatal: + jsr exit + bra fatal + +;----------------------------------------- +; end startup code +;----------------------------------------- +;; Force loading of data section mapping and bss clear + .globl __map_data_section + .globl __init_bss_section + diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/sys/m68hc11/sci-inout.S newlib-main-integrate/newlib/libc/sys/m68hc11/sci-inout.S --- newlib-main/newlib/libc/sys/m68hc11/sci-inout.S Thu Jan 1 01:00:00 1970 +++ newlib-main-integrate/newlib/libc/sys/m68hc11/sci-inout.S Sat Jul 13 15:23:34 2002 @@ -0,0 +1,134 @@ +/* M68HC11/M68HC12 serial line operations + * Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +#ifdef mc68hc12 + SC0CR1 = 0xC2 + SC0CR2 = 0xC3 + SC0SR1 = 0xC4 + SC0DRL = 0xC7 + SC0BD = 0xC0 + + .sect .data + .globl _m68hc12_ports +_m68hc12_ports: .word 0 + + .sect .text + .globl outbyte +;;; +;;; int outbyte(char c); +;;; +;;; B : Character to send +;;; +outbyte: + bsr _sci_init +L1: + ldaa SC0SR1,x + bge L1 + stab SC0DRL,x + ldab SC0CR2,x + orab #0x8 + stab SC0CR2,x + rts + + .sect .text + .globl inbyte +;;; +;;; char inbyte(void); +;;; +inbyte: + bsr _sci_init + ldaa SC0SR1,x + bita #0x20 + beq inbyte + ldab SC0CR2,x + rts + + .globl _sci_init + .sect .text +_sci_init: + ldx _m68hc12_ports + beq do_init + dex + rts +do_init: + ldx #0x1 + stx _m68hc12_ports + dex + ldd #26 + std SC0BD,x + ldaa #0 + staa SC0CR1,x + ldaa #0xC + staa SC0CR2,x + rts +#else + BAUD = 0x2b + SCCR1= 0x2c + SCCR2= 0x2d + SCSR = 0x2e + SCDR = 0x2f + + .sect .data + .globl _m68hc11_ports +_m68hc11_ports: .word 0 + + .sect .text + .globl outbyte +;;; +;;; int outbyte(char c); +;;; +;;; B : Character to send +;;; +outbyte: + bsr _sci_init +L1: + ldaa SCSR,x + bge L1 + stab SCDR,x + ldab SCCR2,x + orab #0x8 + stab SCCR2,x + rts + + .sect .text + .globl inbyte +;;; +;;; char inbyte(void); +;;; +inbyte: + bsr _sci_init + ldaa SCSR,x + bita #0x20 + beq inbyte + ldab SCDR,x + rts + + .globl _sci_init + .sect .text +_sci_init: + ldx _m68hc11_ports + beq do_init + rts +do_init: + ldx #0x1000 + stx _m68hc11_ports + ldaa #0x30 + staa BAUD,x + clra + staa SCCR1,x + ldaa #0xC + staa SCCR2,x + rts + +#endif diff -Nrup --exclude=Makefile.in --exclude=configure --exclude=CVS newlib-main/newlib/libc/sys/m68hc11/syscalls.c newlib-main-integrate/newlib/libc/sys/m68hc11/syscalls.c --- newlib-main/newlib/libc/sys/m68hc11/syscalls.c Thu Jan 1 01:00:00 1970 +++ newlib-main-integrate/newlib/libc/sys/m68hc11/syscalls.c Sat Jul 13 15:23:34 2002 @@ -0,0 +1,152 @@ +/* pseudo system calls for M68HC11 & M68HC12. + * Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +#include +#include +#include +#include +#include + +extern void outbyte(char c); +extern char inbyte(void); + +int +read(int file, void *p, size_t len) +{ + int todo; + char *ptr = (char*) p; + + for (todo = len; todo; --todo) + { + char c = inbyte(); + + *ptr++ = c; + if (c == '\n' || c == '\r') + { + *ptr = 0; + break; + } + } + + return(len); +} + +off_t +lseek(int file, off_t ptr, int dir) +{ + return 0; +} + +int +write(int file, const void *p, size_t len) +{ + const char *ptr = (const char*) p; + int todo; + + for (todo = len; todo; --todo) + { + outbyte (*ptr++); + } + return(len); +} + +int +close(int file) +{ + return(-1); +} + +void * +sbrk(size_t incr) +{ + extern char _end; /* Defined by the linker */ + static char *heap_end; + char *prev_heap_end; + + register char *stack_ptr asm ("sp"); + + if (heap_end == 0) + { + heap_end = &_end; + } + prev_heap_end = heap_end; + if (heap_end + incr > stack_ptr) + { + write (1, "Heap and stack collision\n", 25); + abort (); + } + heap_end += incr; + return ((void*) prev_heap_end); +} + +int +isatty(int file) +{ + return(1); +} + +int +fstat(int file, struct stat *st) +{ + st->st_mode = S_IFCHR; + return(0); +} + +int +stat(const char *filename, struct stat *st) +{ + st->st_mode = S_IFCHR; + return(0); +} + +int +open(const char *path, int flags) +{ + return(0); +} + +int +getpid() +{ + return(1); +} + +int +kill(int pid, int sig) +{ + errno = EINVAL; + return(-1); +} + +int +link(const char *old, const char *new) +{ + errno = EMLINK; + return(-1); +} + +clock_t +times(struct tms *buf) +{ + return(-1); +} + +int +unlink(const char *name) +{ + errno = ENOENT; + return(-1); +} + +/* end of syscalls.c */