[PATCH]: Newlib port for 68hc11/68hc12
Stephane Carrez
Stephane.Carrez@worldnet.fr
Mon Oct 1 06:32:00 GMT 2001
Hi!
The patch below is the port of Newlib for 68hc11/68hc12 microcontrollers.
I'm using this for gcc validation (together with libgloss and gdb's simulator).
Would you agree to integrate it in Newlib?
Stephane
2001-10-01 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* NEWS: Mention 68HC11/68HC12 port.
* configure.host: Recognize m6811-elf and m6812-elf targets.
* libc/include/machine/setjmp.h (_JBLEN): Define for 68hc11/68hc12.
* libc/include/machine/ieeefp.h (__IEEE_BIG_ENDIAN): Define for 68HC11.
(_DOUBLE_IS_32BITS): Define when compiling with -fshort-double.
* libc/include/sys/config.h (_DOUBLE_IS_32BITS): Likewise.
(INT_MAX, UINT_MAX): Define according to __INT_MAX__.
(_POINTER_INT): Define to short.
(__IEEE_BIG_ENDIAN): Define for 68HC11.
(vfiprintf, _vfiprintf_r): Rename the low level formatting functions
to avoid having the support for floating point (too big for 68HC11).
* libc/machine/m68hc11/Makefile.am: New file.
* libc/machine/m68hc11/Makefile.in: Generate.
* libc/machine/m68hc11/configure.in: New file.
* libc/machine/m68hc11/configure: Generate.
* libc/machine/m68hc11/aclocal.m4: New file.
* libc/machine/m68hc11/setjmp.S: New file.
* libc/sys/m68hc11/Makefile.am: New file.
* libc/sys/m68hc11/Makefile.in: Generate.
* libc/sys/m68hc11/configure.in: New file.
* libc/sys/m68hc11/configure: Generate.
* libc/sys/m68hc11/aclocal.m4: New file.
* libc/sys/m68hc11/crt0.S: New file (from gcc/config/m68hc11).
* libc/sys/m68hc11/sci-inout.S: New file.
* libc/sys/m68hc11/syscalls.c: New file.
diff --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/NEWS newlib-m68hc11/newlib/NEWS
--- newlib/newlib/NEWS Mon Oct 1 14:15:04 2001
+++ newlib-m68hc11/newlib/NEWS Sat Aug 4 15:56:40 2001
@@ -1,3 +1,7 @@
+*** Major changes in newlib version 1.9.1:
+
+* Motorola 68HC11 and 68HC12 support
+
*** Major changes in newlib version 1.9.0:
* i[3456]86-pc-linux support
diff --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/configure.host newlib-m68hc11/newlib/configure.host
--- newlib/newlib/configure.host Mon Oct 1 14:15:04 2001
+++ newlib-m68hc11/newlib/configure.host Mon Oct 1 10:36:56 2001
@@ -109,6 +109,13 @@ case "${host_cpu}" in
m32r*)
machine_dir=m32r
;;
+
+ m68hc11|m6811|m68hc12|m6812)
+ machine_dir=m68hc11
+ newlib_cflags="-DPREFER_SIZE_OVER_SPEED -Os"
+ CFLAGS="-g -Os"
+ ;;
+
m68*)
machine_dir=m68k
;;
@@ -267,6 +274,11 @@ case "${host}" in
##newlib_cflags="${newlib_cflags} -idirafter ${gcc_dir}include"
;;
+ m68hc11-*-*|m6811-*-*|m6812-*-*|m68hc12-*-*)
+ sys_dir=m68hc11
+ syscalls_dir=
+ ;;
+
m68k-sun-sunos*)
unix_dir=unix
;;
@@ -419,6 +431,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 --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/include/machine/ieeefp.h newlib-m68hc11/newlib/libc/include/machine/ieeefp.h
--- newlib/newlib/libc/include/machine/ieeefp.h Mon Oct 1 14:15:06 2001
+++ newlib-m68hc11/newlib/libc/include/machine/ieeefp.h Sat Aug 4 15:38:42 2001
@@ -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 --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/include/machine/setjmp.h newlib-m68hc11/newlib/libc/include/machine/setjmp.h
--- newlib/newlib/libc/include/machine/setjmp.h Mon Oct 1 14:15:07 2001
+++ newlib-m68hc11/newlib/libc/include/machine/setjmp.h Mon Oct 1 11:18:07 2001
@@ -25,6 +25,12 @@
#define _JBLEN 34
#endif
+#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
+/* Save PC,SP,FP and 8 soft registers. */
+#define _JBLEN 11
+#define _JBTYPE short
+#endif
+
#if defined(__Z8001__) || defined(__Z8002__)
/* 16 regs + pc */
#define _JBLEN 20
diff --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/include/sys/config.h newlib-m68hc11/newlib/libc/include/sys/config.h
--- newlib/newlib/libc/include/sys/config.h Mon Oct 1 14:15:07 2001
+++ newlib-m68hc11/newlib/libc/include/sys/config.h Mon Oct 1 11:22:27 2001
@@ -43,6 +43,35 @@
#define __IEEE_BIG_ENDIAN
#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
+
+/* Floating point support for printf produces executables that are arround
+ 64K (the full address space). Rename the normal vfprintf to vffprintf
+ and the vfiprintf to vfprintf so that the integer version is used
+ by default. */
+#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 /* __mc68hc11__ || __mc68hc12__ */
+
#ifdef ___AM29K__
#define _FLOAT_RET double
#endif
diff --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/machine/m68hc11/Makefile.am newlib-m68hc11/newlib/libc/machine/m68hc11/Makefile.am
--- newlib/newlib/libc/machine/m68hc11/Makefile.am Thu Jan 1 01:00:00 1970
+++ newlib-m68hc11/newlib/libc/machine/m68hc11/Makefile.am Sat Aug 4 15:38:42 2001
@@ -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 --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/machine/m68hc11/aclocal.m4 newlib-m68hc11/newlib/libc/machine/m68hc11/aclocal.m4
--- newlib/newlib/libc/machine/m68hc11/aclocal.m4 Thu Jan 1 01:00:00 1970
+++ newlib-m68hc11/newlib/libc/machine/m68hc11/aclocal.m4 Sat Aug 4 15:38:42 2001
@@ -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 --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/machine/m68hc11/configure.in newlib-m68hc11/newlib/libc/machine/m68hc11/configure.in
--- newlib/newlib/libc/machine/m68hc11/configure.in Thu Jan 1 01:00:00 1970
+++ newlib-m68hc11/newlib/libc/machine/m68hc11/configure.in Sat Aug 4 15:38:42 2001
@@ -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 --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/machine/m68hc11/setjmp.S newlib-m68hc11/newlib/libc/machine/m68hc11/setjmp.S
--- newlib/newlib/libc/machine/m68hc11/setjmp.S Thu Jan 1 01:00:00 1970
+++ newlib-m68hc11/newlib/libc/machine/m68hc11/setjmp.S Mon Oct 1 11:09:06 2001
@@ -0,0 +1,153 @@
+/* setjmp/longjmp routines for M68HC11 & M68HC12.
+ Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+
+This file is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file with other programs, and to distribute
+those programs without any restriction coming from the use of this
+file. (The General Public License restrictions do apply in other
+respects; for example, they cover modification of the file, and
+distribution when not linked into another program.)
+
+This file is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#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 --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/sys/m68hc11/Makefile.am newlib-m68hc11/newlib/libc/sys/m68hc11/Makefile.am
--- newlib/newlib/libc/sys/m68hc11/Makefile.am Thu Jan 1 01:00:00 1970
+++ newlib-m68hc11/newlib/libc/sys/m68hc11/Makefile.am Sat Sep 29 11:28:16 2001
@@ -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 --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/sys/m68hc11/aclocal.m4 newlib-m68hc11/newlib/libc/sys/m68hc11/aclocal.m4
--- newlib/newlib/libc/sys/m68hc11/aclocal.m4 Thu Jan 1 01:00:00 1970
+++ newlib-m68hc11/newlib/libc/sys/m68hc11/aclocal.m4 Mon Oct 1 11:29:29 2001
@@ -0,0 +1,291 @@
+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-malloc-debugging - currently only supported for Cygwin
+AC_ARG_ENABLE(malloc-debugging,
+[ --enable-malloc-debugging indicate malloc debugging requested],
+[case "${enableval}" in
+ yes) malloc_debugging=yes ;;
+ no) malloc_debugging=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for malloc-debugging option) ;;
+ esac], [malloc_debugging=])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 --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/sys/m68hc11/configure.in newlib-m68hc11/newlib/libc/sys/m68hc11/configure.in
--- newlib/newlib/libc/sys/m68hc11/configure.in Thu Jan 1 01:00:00 1970
+++ newlib-m68hc11/newlib/libc/sys/m68hc11/configure.in Fri Sep 28 22:50:29 2001
@@ -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 --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/sys/m68hc11/crt0.S newlib-m68hc11/newlib/libc/sys/m68hc11/crt0.S
--- newlib/newlib/libc/sys/m68hc11/crt0.S Thu Jan 1 01:00:00 1970
+++ newlib-m68hc11/newlib/libc/sys/m68hc11/crt0.S Sat Sep 29 11:26:24 2001
@@ -0,0 +1,88 @@
+/* Startup code for M68HC11.
+ Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+
+This file is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file with other programs, and to distribute
+those programs without any restriction coming from the use of this
+file. (The General Public License restrictions do apply in other
+respects; for example, they cover modification of the file, and
+distribution when not linked into another program.)
+
+This file is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* As a special exception, if you link this library with other files,
+ some of which are compiled with GCC, to produce an executable,
+ this library does not by itself cause the resulting executable
+ to be covered by the GNU General Public License.
+ This exception does not however invalidate any other reasons why
+ the executable file might be covered by the GNU General Public License. */
+
+;-----------------------------------------
+; 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 --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/sys/m68hc11/sci-inout.S newlib-m68hc11/newlib/libc/sys/m68hc11/sci-inout.S
--- newlib/newlib/libc/sys/m68hc11/sci-inout.S Thu Jan 1 01:00:00 1970
+++ newlib-m68hc11/newlib/libc/sys/m68hc11/sci-inout.S Fri Sep 28 22:54:40 2001
@@ -0,0 +1,147 @@
+/* M68HC11/M68HC12 serial line operations
+ Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+ Written by Stephane Carrez (stcarrez@worldnet.fr)
+
+This file is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file with other programs, and to distribute
+those programs without any restriction coming from the use of this
+file. (The General Public License restrictions do apply in other
+respects; for example, they cover modification of the file, and
+distribution when not linked into another program.)
+
+This file is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#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 --exclude=Makefile.in --exclude=configure --exclude=*.orig --exclude=CVS --exclude=*~ --exclude=ChangeLog* -Nrup newlib/newlib/libc/sys/m68hc11/syscalls.c newlib-m68hc11/newlib/libc/sys/m68hc11/syscalls.c
--- newlib/newlib/libc/sys/m68hc11/syscalls.c Thu Jan 1 01:00:00 1970
+++ newlib-m68hc11/newlib/libc/sys/m68hc11/syscalls.c Fri Sep 28 23:49:45 2001
@@ -0,0 +1,164 @@
+/* pseudo system calls for M68HC11 & M68HC12.
+ Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+
+This file is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file with other programs, and to distribute
+those programs without any restriction coming from the use of this
+file. (The General Public License restrictions do apply in other
+respects; for example, they cover modification of the file, and
+distribution when not linked into another program.)
+
+This file is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/times.h>
+#include <unistd.h>
+#include <errno.h>
+
+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 */
More information about the Newlib
mailing list