This is the mail archive of the newlib@sources.redhat.com mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[PATCH]: Newlib port for 68hc11/68hc12


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 */

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]