mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-01 21:25:46 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f810577581 |
51
ChangeLog
51
ChangeLog
@@ -1,54 +1,3 @@
|
||||
2004-10-18 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* VERSION: Updated to rtems-4.6.2.
|
||||
|
||||
2004-10-18 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* aclocal/version.m4: Updated to rtems-4.6.2.
|
||||
|
||||
2004-08-18 Ralf Corsepius <ralf_corsepius@rtems.org>
|
||||
|
||||
PR 673/make_build
|
||||
* config-ml.in: Quote 'cd "${ml_origdir}"'.
|
||||
Quote 'cd "${ML_POPDIR}"'.
|
||||
|
||||
2004-08-18 Ralf Corsepius <ralf_corsepius@rtems.org>
|
||||
|
||||
PR 673/make_build
|
||||
* aclocal/ppc.m4 (RTEMS_PPC_EXCEPTIONS): Quote ac_popdir uses.
|
||||
* aclocal/target.m4 (_RTEMS_POP_BUILDDIR): Ditto.
|
||||
* acinclude.m4 (_RTEMS_CONFIG_SUBDIR): Quote ac_popdir uses.
|
||||
|
||||
2004-08-18 Ralf Corsepius <ralf_corsepius@rtems.org>
|
||||
|
||||
* acinclude.m4: Fix m4-underquoting.
|
||||
|
||||
2004-08-18 Ralf Corsepius <ralf_corsepius@rtems.org>
|
||||
|
||||
* aclocal/bsp-alias.m4, aclocal/bsp-arg-enable.m4,
|
||||
aclocal/canonical-host.m4, aclocal/canonical-target-name.m4,
|
||||
aclocal/canonicalize-tools.m4, aclocal/check-bsps.m4,
|
||||
aclocal/check-cpu.m4, aclocal/check-custom-bsp.m4, aclocal/check-cxx.m4,
|
||||
aclocal/check-itron.m4, aclocal/check-multiprocessing.m4,
|
||||
aclocal/check-networking.m4, aclocal/check-newlib.m4,
|
||||
aclocal/check-posix.m4, aclocal/check-rdbg.m4, aclocal/check-tool.m4,
|
||||
aclocal/config-subdirs.m4, aclocal/enable-bare.m4,
|
||||
aclocal/enable-cxx.m4, aclocal/enable-inlines.m4,
|
||||
aclocal/enable-itron.m4, aclocal/enable-multiprocessing.m4,
|
||||
aclocal/enable-networking.m4, aclocal/enable-posix.m4,
|
||||
aclocal/enable-rdbg.m4, aclocal/enable-rtemsbsp.m4,
|
||||
aclocal/enable-tests.m4, aclocal/env-rtemsbsp.m4,
|
||||
aclocal/gcc-isystem.m4, aclocal/gcc-pipe.m4, aclocal/gcc-specs.m4,
|
||||
aclocal/i386-gas-code16.m4, aclocal/multilib.m4, aclocal/path-ksh.m4,
|
||||
aclocal/path-perl.m4, aclocal/prog-cc.m4, aclocal/prog-cxx.m4,
|
||||
aclocal/project-root.m4, aclocal/rtems-debug.m4,
|
||||
aclocal/rtems-test-no-pause.m4, aclocal/rtems-top.m4,
|
||||
aclocal/target.m4, aclocal/tool-paths.m4: Fix m4-underquoting.
|
||||
|
||||
2004-04-08 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* aclocal/version.m4: Updated to rtems-4.6.1.
|
||||
|
||||
2004-02-03 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* VERSION: Updated to rtems-4.6.0.
|
||||
|
||||
@@ -261,7 +261,7 @@ if test "$no_recursion" != yes; then
|
||||
AC_MSG_ERROR([$ac_sub_configure failed for $ac_dir])
|
||||
fi
|
||||
|
||||
cd "$ac_popdir"
|
||||
cd $ac_popdir
|
||||
done
|
||||
fi
|
||||
fi
|
||||
@@ -332,7 +332,7 @@ m4_divert_text([DEFAULTS],
|
||||
m4_expand_once([_RTEMS_COMMANDS_POST_CONFIG_SUBDIRS])
|
||||
])
|
||||
|
||||
AC_DEFUN([_RTEMS_BUILD_CONFIG_PREPARE],[
|
||||
AC_DEFUN(_RTEMS_BUILD_CONFIG_PREPARE,[
|
||||
## # Record the configure arguments in Makefile.
|
||||
m4_ifdef([_RTEMS_BUILD_CONFIGDIRS_LIST],
|
||||
[
|
||||
@@ -358,7 +358,7 @@ m4_divert_text([DEFAULTS],
|
||||
m4_expand_once([_RTEMS_COMMANDS_POST_CONFIG_SUBDIRS])
|
||||
])
|
||||
|
||||
AC_DEFUN([_RTEMS_HOST_CONFIG_PREPARE],[
|
||||
AC_DEFUN(_RTEMS_HOST_CONFIG_PREPARE,[
|
||||
m4_ifdef([_RTEMS_HOST_CONFIGDIRS_LIST],
|
||||
[
|
||||
m4_expand_once([_RTEMS_TOOLS([host],[HOST])])
|
||||
@@ -382,7 +382,7 @@ m4_divert_text([DEFAULTS],
|
||||
m4_expand_once([_RTEMS_COMMANDS_POST_CONFIG_SUBDIRS])
|
||||
])
|
||||
|
||||
AC_DEFUN([_RTEMS_TARGET_CONFIG_PREPARE],[
|
||||
AC_DEFUN(_RTEMS_TARGET_CONFIG_PREPARE,[
|
||||
m4_ifdef([_RTEMS_TARGET_CONFIGDIRS_LIST],
|
||||
[
|
||||
m4_expand_once([_RTEMS_TOOLS([target],[TARGET])])
|
||||
|
||||
@@ -4,7 +4,7 @@ dnl
|
||||
|
||||
dnl _RTEMS_BSP_ALIAS(BSP_ALIAS,RTEMS_BSP_FAMILY)
|
||||
dnl Internal subroutine to RTEMS_BSP_ALIAS
|
||||
AC_DEFUN([_RTEMS_BSP_ALIAS],
|
||||
AC_DEFUN(_RTEMS_BSP_ALIAS,
|
||||
[# account for "aliased" bsps which share source code
|
||||
case $1 in
|
||||
simcpu32) $2=sim68000 ;; # BSVC CPU32 variant
|
||||
@@ -34,7 +34,7 @@ AC_DEFUN([_RTEMS_BSP_ALIAS],
|
||||
|
||||
dnl RTEMS_BSP_ALIAS(BSP_ALIAS,RTEMS_BSP_FAMILY)
|
||||
dnl convert a bsp alias $1 into its bsp directory RTEMS_BSP_FAMILY
|
||||
AC_DEFUN([RTEMS_BSP_ALIAS],
|
||||
AC_DEFUN(RTEMS_BSP_ALIAS,
|
||||
[_RTEMS_BSP_ALIAS(m4_if([$1],,[$RTEMS_BSP],[$1]),
|
||||
m4_if([$2],,[RTEMS_BSP_FAMILY],[$2]))]
|
||||
)
|
||||
|
||||
@@ -9,7 +9,7 @@ dnl Configure scripts will receive <bsp-value> if <RTEMS_BSP> matches the
|
||||
dnl actual value of the shell variable RTEMS_BSP (cf. RTEMS_ENV_RTEMSBSP),
|
||||
dnl and the raw value passed to --enable-FEATURE otherwise.
|
||||
dnl
|
||||
AC_DEFUN([RTEMS_BSP_ARG_ENABLE],
|
||||
AC_DEFUN(RTEMS_BSP_ARG_ENABLE,
|
||||
[AC_REQUIRE([RTEMS_ENV_RTEMSBSP])
|
||||
AC_ARG_ENABLE([$1],[$2],
|
||||
[enableval=`echo "[$enable_]patsubst([$1], -, _)" | sed -e "s%^${RTEMS_BSP}:%%"`
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_CANONICAL_HOST],
|
||||
AC_DEFUN(RTEMS_CANONICAL_HOST,
|
||||
[dnl
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
RTEMS_HOST=$host_os
|
||||
|
||||
@@ -8,7 +8,7 @@ dnl target naming conventions "processor-vendor-os"
|
||||
dnl Therefore autoconf's AC_CANONICAL_TARGET will fail for them
|
||||
dnl and we have to fix it for rtems ourselves
|
||||
|
||||
AC_DEFUN([RTEMS_CANONICAL_TARGET_CPU],
|
||||
AC_DEFUN(RTEMS_CANONICAL_TARGET_CPU,
|
||||
[
|
||||
AC_CANONICAL_TARGET
|
||||
AC_MSG_CHECKING(rtems target cpu)
|
||||
|
||||
@@ -4,7 +4,7 @@ dnl
|
||||
dnl Set target tools
|
||||
dnl
|
||||
|
||||
AC_DEFUN([RTEMS_CANONICALIZE_TOOLS],
|
||||
AC_DEFUN(RTEMS_CANONICALIZE_TOOLS,
|
||||
[AC_REQUIRE([RTEMS_PROG_CC])dnl
|
||||
|
||||
dnl FIXME: What shall be done if these tools are not available?
|
||||
|
||||
@@ -4,7 +4,7 @@ dnl Report all available bsps for a target,
|
||||
dnl check if a bsp-subdirectory is present for all bsps found
|
||||
dnl
|
||||
dnl RTEMS_CHECK_BSPS(bsp_list)
|
||||
AC_DEFUN([RTEMS_CHECK_BSPS],
|
||||
AC_DEFUN(RTEMS_CHECK_BSPS,
|
||||
[
|
||||
AC_REQUIRE([RTEMS_CHECK_CPU])dnl sets RTEMS_CPU, target
|
||||
AC_REQUIRE([RTEMS_TOP])dnl sets RTEMS_TOPdir
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
dnl $Id$
|
||||
|
||||
dnl check if RTEMS support a cpu
|
||||
AC_DEFUN([RTEMS_CHECK_CPU],
|
||||
AC_DEFUN(RTEMS_CHECK_CPU,
|
||||
[dnl
|
||||
AC_REQUIRE([RTEMS_TOP])
|
||||
AC_REQUIRE([RTEMS_CANONICAL_TARGET_CPU])
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_CHECK_CUSTOM_BSP],[
|
||||
AC_DEFUN(RTEMS_CHECK_CUSTOM_BSP,[
|
||||
AC_REQUIRE([RTEMS_TOP])
|
||||
|
||||
AC_MSG_CHECKING([for make/custom/[$]$1.cfg])
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
dnl
|
||||
AC_DEFUN([RTEMS_CHECK_CXX],
|
||||
AC_DEFUN(RTEMS_CHECK_CXX,
|
||||
[dnl
|
||||
AC_REQUIRE([RTEMS_CHECK_CPU])dnl
|
||||
AC_REQUIRE([RTEMS_PROG_CC_FOR_TARGET])dnl
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
dnl
|
||||
AC_DEFUN([RTEMS_CHECK_ITRON_API],
|
||||
AC_DEFUN(RTEMS_CHECK_ITRON_API,
|
||||
[dnl
|
||||
AC_REQUIRE([RTEMS_CHECK_CPU])dnl
|
||||
AC_REQUIRE([RTEMS_ENABLE_ITRON])dnl
|
||||
@@ -28,7 +28,7 @@ fi
|
||||
AC_SUBST(HAS_ITRON_API)dnl
|
||||
])
|
||||
|
||||
AC_DEFUN([RTEMS_DEFINE_ITRON_API],
|
||||
AC_DEFUN(RTEMS_DEFINE_ITRON_API,
|
||||
[AC_REQUIRE([RTEMS_CHECK_ITRON_API])dnl
|
||||
if test x"${HAS_ITRON_API}" = x"yes";
|
||||
then
|
||||
|
||||
@@ -2,7 +2,7 @@ dnl
|
||||
dnl $Id$
|
||||
dnl
|
||||
|
||||
AC_DEFUN([RTEMS_CHECK_MULTIPROCESSING],
|
||||
AC_DEFUN(RTEMS_CHECK_MULTIPROCESSING,
|
||||
[dnl
|
||||
AC_REQUIRE([RTEMS_ENABLE_MULTILIB])dnl
|
||||
AC_REQUIRE([RTEMS_ENV_RTEMSBSP])dnl
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
dnl
|
||||
AC_DEFUN([RTEMS_CHECK_NETWORKING],
|
||||
AC_DEFUN(RTEMS_CHECK_NETWORKING,
|
||||
[dnl
|
||||
AC_REQUIRE([RTEMS_CHECK_CPU])dnl
|
||||
AC_REQUIRE([RTEMS_ENABLE_NETWORKING])dnl
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_CHECK_NEWLIB],
|
||||
AC_DEFUN(RTEMS_CHECK_NEWLIB,
|
||||
[dnl
|
||||
AC_REQUIRE([RTEMS_PROG_CC_FOR_TARGET])dnl
|
||||
AC_REQUIRE([RTEMS_CANONICALIZE_TOOLS])dnl
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
dnl
|
||||
AC_DEFUN([RTEMS_CHECK_POSIX_API],
|
||||
AC_DEFUN(RTEMS_CHECK_POSIX_API,
|
||||
[dnl
|
||||
AC_REQUIRE([RTEMS_CHECK_CPU])dnl
|
||||
AC_REQUIRE([RTEMS_ENABLE_POSIX])dnl
|
||||
@@ -28,7 +28,7 @@ fi
|
||||
AC_SUBST(HAS_POSIX_API)dnl
|
||||
])
|
||||
|
||||
AC_DEFUN([RTEMS_DEFINE_POSIX_API],
|
||||
AC_DEFUN(RTEMS_DEFINE_POSIX_API,
|
||||
[AC_REQUIRE([RTEMS_CHECK_POSIX_API])dnl
|
||||
AS_IF(
|
||||
[test x"${HAS_POSIX_API}" = x"yes"],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
dnl
|
||||
AC_DEFUN([RTEMS_CHECK_RDBG],
|
||||
AC_DEFUN(RTEMS_CHECK_RDBG,
|
||||
[dnl
|
||||
AC_REQUIRE([RTEMS_TOP])dnl
|
||||
AC_REQUIRE([RTEMS_CHECK_CPU])dnl
|
||||
|
||||
@@ -3,7 +3,7 @@ dnl $Id$
|
||||
## Check for a cross tool, similar to AC_CHECK_TOOL, but do not fall back to
|
||||
## the un-prefixed version of PROG-TO-CHECK-FOR.
|
||||
dnl RTEMS_CHECK_TOOL(VARIABLE, PROG-TO-CHECK-FOR[, VALUE-IF-NOT-FOUND [, PATH]])
|
||||
AC_DEFUN([RTEMS_CHECK_TOOL],
|
||||
AC_DEFUN(RTEMS_CHECK_TOOL,
|
||||
[
|
||||
AS_IF([test "x$build_alias" != "x$host_alias"],
|
||||
[rtems_tool_prefix=${ac_tool_prefix}])
|
||||
|
||||
@@ -11,7 +11,7 @@ dnl
|
||||
dnl
|
||||
dnl _AC_DOTS(PATH)
|
||||
dnl
|
||||
AC_DEFUN([_AC_DOTS],[
|
||||
AC_DEFUN(_AC_DOTS,[
|
||||
# A "../" for each directory in $1.
|
||||
ac_dots=`echo $1 | \
|
||||
sed -e 's%^\./%%' -e 's%[[^/]]$%&/%' -e 's%[[^/]]*/%../%g'`
|
||||
@@ -20,7 +20,7 @@ AC_DEFUN([_AC_DOTS],[
|
||||
dnl
|
||||
dnl _RTEMS_ADJUST_SRCDIR(REVAR,CONFIG_DIR[,TARGET_SUBDIR])
|
||||
dnl
|
||||
AC_DEFUN([_RTEMS_ADJUST_SRCDIR],[
|
||||
AC_DEFUN(_RTEMS_ADJUST_SRCDIR,[
|
||||
_AC_DOTS(ifelse([$3], ,[$2],[$3/$2]))
|
||||
|
||||
case "$srcdir" in
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
AC_DEFUN([RTEMS_ENABLE_BARE],
|
||||
AC_DEFUN(RTEMS_ENABLE_BARE,
|
||||
[
|
||||
AC_ARG_ENABLE(bare-cpu-cflags,
|
||||
[AC_HELP_STRING([--enable-bare-cpu-cflags],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_ENABLE_CXX],
|
||||
AC_DEFUN(RTEMS_ENABLE_CXX,
|
||||
[
|
||||
AC_ARG_ENABLE(cxx,
|
||||
[AC_HELP_STRING([--enable-cxx],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_ENABLE_INLINES],
|
||||
AC_DEFUN(RTEMS_ENABLE_INLINES,
|
||||
[AC_ARG_ENABLE(rtems-inlines,
|
||||
[AC_HELP_STRING([--enable-rtems-inlines],
|
||||
[enable RTEMS inline functions (default:enabled, disable to use macros)])],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_ENABLE_ITRON],
|
||||
AC_DEFUN(RTEMS_ENABLE_ITRON,
|
||||
[
|
||||
## AC_BEFORE([$0], [RTEMS_CHECK_ITRON_API])dnl
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_ENABLE_MULTIPROCESSING],
|
||||
AC_DEFUN(RTEMS_ENABLE_MULTIPROCESSING,
|
||||
[
|
||||
AC_ARG_ENABLE(multiprocessing,
|
||||
[AC_HELP_STRING([--enable-multiprocessing],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_ENABLE_NETWORKING],
|
||||
AC_DEFUN(RTEMS_ENABLE_NETWORKING,
|
||||
[
|
||||
## AC_BEFORE([$0], [RTEMS_CHECK_NETWORKING])dnl
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_ENABLE_POSIX],
|
||||
AC_DEFUN(RTEMS_ENABLE_POSIX,
|
||||
[
|
||||
## AC_BEFORE([$0], [RTEMS_CHECK_POSIX_API])dnl
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_ENABLE_RDBG],
|
||||
AC_DEFUN(RTEMS_ENABLE_RDBG,
|
||||
[
|
||||
AC_BEFORE([$0], [RTEMS_CHECK_RDBG])dnl
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ dnl $Id$
|
||||
dnl Override the set of BSPs to be built.
|
||||
dnl used by the toplevel configure script
|
||||
dnl RTEMS_ENABLE_RTEMSBSP(rtems_bsp_list)
|
||||
AC_DEFUN([RTEMS_ENABLE_RTEMSBSP],
|
||||
AC_DEFUN(RTEMS_ENABLE_RTEMSBSP,
|
||||
[
|
||||
AC_BEFORE([$0], [RTEMS_ENV_RTEMSBSP])
|
||||
AC_ARG_ENABLE(rtemsbsp,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_ENABLE_TESTS],
|
||||
AC_DEFUN(RTEMS_ENABLE_TESTS,
|
||||
[
|
||||
# If the tests are enabled, then find all the test suite Makefiles
|
||||
AC_MSG_CHECKING([if the test suites are enabled? ])
|
||||
|
||||
@@ -2,7 +2,7 @@ dnl $Id$
|
||||
|
||||
dnl Pass a single BSP via an environment variable
|
||||
dnl used by per BSP configure scripts
|
||||
AC_DEFUN([RTEMS_ENV_RTEMSBSP],
|
||||
AC_DEFUN(RTEMS_ENV_RTEMSBSP,
|
||||
[dnl
|
||||
AC_BEFORE([$0], [RTEMS_ENABLE_RTEMSBSP])dnl
|
||||
AC_BEFORE([$0], [RTEMS_PROJECT_ROOT])dnl
|
||||
|
||||
@@ -4,7 +4,7 @@ dnl
|
||||
dnl Check whether the gcc accepts -isystem
|
||||
dnl
|
||||
|
||||
AC_DEFUN([RTEMS_GCC_ISYSTEM],
|
||||
AC_DEFUN(RTEMS_GCC_ISYSTEM,
|
||||
[AC_REQUIRE([RTEMS_PROG_CC])
|
||||
AC_CACHE_CHECK(whether $CC accepts -isystem,rtems_cv_gcc_isystem,
|
||||
[
|
||||
|
||||
@@ -4,7 +4,7 @@ dnl
|
||||
dnl Check whether the target compiler accepts -pipe
|
||||
dnl
|
||||
|
||||
AC_DEFUN([RTEMS_GCC_PIPE],
|
||||
AC_DEFUN(RTEMS_GCC_PIPE,
|
||||
[AC_REQUIRE([RTEMS_PROG_CC])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_CACHE_CHECK(whether $CC accepts --pipe,rtems_cv_gcc_pipe,
|
||||
|
||||
@@ -4,7 +4,7 @@ dnl
|
||||
dnl Check whether the target compiler accepts -specs
|
||||
dnl
|
||||
|
||||
AC_DEFUN([RTEMS_GCC_SPECS],
|
||||
AC_DEFUN(RTEMS_GCC_SPECS,
|
||||
[AC_REQUIRE([RTEMS_PROG_CC])
|
||||
AC_CACHE_CHECK(whether $CC accepts -specs,rtems_cv_gcc_specs,
|
||||
[
|
||||
|
||||
@@ -5,7 +5,7 @@ dnl
|
||||
dnl check for i386 gas supporting 16 bit mode
|
||||
dnl - binutils 2.9.1.0.7 and higher
|
||||
|
||||
AC_DEFUN([RTEMS_I386_GAS_CODE16],
|
||||
AC_DEFUN(RTEMS_I386_GAS_CODE16,
|
||||
[ if test "${host_cpu}" = "i386"; then
|
||||
AC_CACHE_CHECK([for 16 bit mode assembler support],
|
||||
rtems_cv_prog_gas_code16,
|
||||
|
||||
@@ -2,7 +2,7 @@ dnl This provides configure definitions used for multilib support
|
||||
|
||||
dnl parts of these macros are derived from newlib-1.8.2's multilib support
|
||||
|
||||
AC_DEFUN([RTEMS_ENABLE_MULTILIB],
|
||||
AC_DEFUN(RTEMS_ENABLE_MULTILIB,
|
||||
[
|
||||
AC_ARG_ENABLE(multilib,
|
||||
AC_HELP_STRING([--enable-multilib],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_PATH_KSH],
|
||||
AC_DEFUN(RTEMS_PATH_KSH,
|
||||
[
|
||||
dnl NOTE: prefer bash over ksh over sh
|
||||
AC_PATH_PROGS(KSH,bash ksh sh)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_PATH_PERL],
|
||||
AC_DEFUN(RTEMS_PATH_PERL,
|
||||
[
|
||||
AC_PATH_PROG(PERL,perl)
|
||||
if test -z "$PERL" ; then
|
||||
|
||||
@@ -80,7 +80,7 @@ if test "$no_recursion" != yes; then
|
||||
AC_MSG_ERROR([$ac_sub_configure failed for $ac_subdir])
|
||||
fi
|
||||
|
||||
cd "$ac_popdir"
|
||||
cd $ac_popdir
|
||||
done
|
||||
fi
|
||||
])
|
||||
|
||||
@@ -4,7 +4,7 @@ dnl
|
||||
dnl Check for target gcc
|
||||
dnl
|
||||
|
||||
AC_DEFUN([RTEMS_PROG_CC],
|
||||
AC_DEFUN(RTEMS_PROG_CC,
|
||||
[
|
||||
AC_BEFORE([$0], [AC_PROG_CPP])dnl
|
||||
AC_BEFORE([$0], [AC_PROG_CC])dnl
|
||||
@@ -22,7 +22,7 @@ AC_PROG_CPP
|
||||
AM_CONDITIONAL(RTEMS_USE_GCC,test x"$GCC" = x"yes")
|
||||
])
|
||||
|
||||
AC_DEFUN([RTEMS_PROG_CC_FOR_TARGET],
|
||||
AC_DEFUN(RTEMS_PROG_CC_FOR_TARGET,
|
||||
[
|
||||
dnl check target cc
|
||||
RTEMS_PROG_CC
|
||||
|
||||
@@ -4,7 +4,7 @@ dnl
|
||||
dnl Check for target g++
|
||||
dnl
|
||||
|
||||
AC_DEFUN([RTEMS_PROG_CXX_FOR_TARGET],
|
||||
AC_DEFUN(RTEMS_PROG_CXX_FOR_TARGET,
|
||||
[
|
||||
AC_BEFORE([$0], [RTEMS_CANONICALIZE_TOOLS])dnl
|
||||
AC_REQUIRE([RTEMS_ENABLE_CXX])
|
||||
|
||||
@@ -12,7 +12,7 @@ dnl RTEMS_ROOT .. path to the top of a bsp's build directory
|
||||
dnl [Applied by custom/*.cfg, depredicated otherwise]
|
||||
dnl
|
||||
|
||||
AC_DEFUN([RTEMS_PROJECT_ROOT],
|
||||
AC_DEFUN(RTEMS_PROJECT_ROOT,
|
||||
[dnl
|
||||
AC_REQUIRE([RTEMS_TOP])
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
## $Id$
|
||||
|
||||
AC_DEFUN([RTEMS_ENABLE_RTEMS_DEBUG],
|
||||
AC_DEFUN(RTEMS_ENABLE_RTEMS_DEBUG,
|
||||
[
|
||||
AC_ARG_ENABLE(rtems-debug,
|
||||
AC_HELP_STRING([--enable-rtems-debug],[enable RTEMS_DEBUG]),
|
||||
@@ -11,7 +11,7 @@ AC_HELP_STRING([--enable-rtems-debug],[enable RTEMS_DEBUG]),
|
||||
esac],[enable_rtems_debug=no])
|
||||
])
|
||||
|
||||
AC_DEFUN([RTEMS_CHECK_RTEMS_DEBUG],
|
||||
AC_DEFUN(RTEMS_CHECK_RTEMS_DEBUG,
|
||||
[AC_REQUIRE([RTEMS_ENABLE_RTEMS_DEBUG])
|
||||
AS_IF([test x"${enable_rtems_debug}" = x"yes"]
|
||||
[AC_DEFINE_UNQUOTED(RTEMS_DEBUG,1,[if RTEMS_DEBUG is enabled])])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
AC_DEFUN([RTEMS_ENABLE_RTEMS_TEST_NO_PAUSE],
|
||||
AC_DEFUN(RTEMS_ENABLE_RTEMS_TEST_NO_PAUSE,
|
||||
[AC_ARG_ENABLE(test-no-pause,
|
||||
AC_HELP_STRING([--disable-test-no-pause],[disable RTEMS_TEST_NO_PAUSE]),
|
||||
[case "${enableval}" in
|
||||
@@ -8,7 +8,7 @@ AC_HELP_STRING([--disable-test-no-pause],[disable RTEMS_TEST_NO_PAUSE]),
|
||||
esac],[RTEMS_TEST_NO_PAUSE=yes])
|
||||
])
|
||||
|
||||
AC_DEFUN([RTEMS_CHECK_RTEMS_TEST_NO_PAUSE],
|
||||
AC_DEFUN(RTEMS_CHECK_RTEMS_TEST_NO_PAUSE,
|
||||
[AC_REQUIRE([RTEMS_ENABLE_RTEMS_TEST_NO_PAUSE])
|
||||
if test x"${RTEMS_TEST_NO_PAUSE}" = x"yes";
|
||||
then
|
||||
|
||||
@@ -7,7 +7,7 @@ dnl RTEMS_TOP($1)
|
||||
dnl
|
||||
dnl $1 .. relative path from this configure.in to the toplevel configure.in
|
||||
dnl
|
||||
AC_DEFUN([RTEMS_TOP],
|
||||
AC_DEFUN(RTEMS_TOP,
|
||||
[dnl
|
||||
AC_REQUIRE([RTEMS_VERSIONING])
|
||||
AC_CONFIG_AUX_DIR([$1])
|
||||
|
||||
@@ -2,7 +2,7 @@ dnl $Id$
|
||||
|
||||
## HACK: Work-around to structural issue with RTEMS
|
||||
## The macros below violate most autoconf and canonicalization standards
|
||||
AC_DEFUN([RTEMS_CONFIG_BUILD_SUBDIRS],
|
||||
AC_DEFUN(RTEMS_CONFIG_BUILD_SUBDIRS,
|
||||
[AC_REQUIRE([_RTEMS_OUTPUT_BUILD_SUBDIRS])
|
||||
RTEMS_BUILD_SUBDIRS="$RTEMS_BUILD_SUBDIRS [$1]"
|
||||
])
|
||||
@@ -86,7 +86,7 @@ dnl
|
||||
dnl
|
||||
dnl _RTEMS_PUSH_BUILDDIR(SUBDIR)
|
||||
dnl
|
||||
AC_DEFUN([_RTEMS_PUSH_BUILDDIR],
|
||||
AC_DEFUN(_RTEMS_PUSH_BUILDDIR,
|
||||
[
|
||||
# _RTEMS_PUSH_BUILDDIR
|
||||
echo configuring in $1
|
||||
@@ -103,15 +103,15 @@ AC_DEFUN([_RTEMS_PUSH_BUILDDIR],
|
||||
dnl
|
||||
dnl _RTEMS_POP_BUILDDIR
|
||||
dnl
|
||||
AC_DEFUN([_RTEMS_POP_BUILDDIR],
|
||||
AC_DEFUN(_RTEMS_POP_BUILDDIR,
|
||||
[
|
||||
cd "$ac_popdir"
|
||||
cd $ac_popdir
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl _RTEMS_GIVEN_INSTALL
|
||||
dnl
|
||||
AC_DEFUN([_RTEMS_GIVEN_INSTALL],
|
||||
AC_DEFUN(_RTEMS_GIVEN_INSTALL,
|
||||
[
|
||||
ifdef([AC_PROVIDE_AC_PROG_INSTALL],[
|
||||
case "$ac_given_INSTALL" in
|
||||
@@ -124,7 +124,7 @@ ifdef([AC_PROVIDE_AC_PROG_INSTALL],[
|
||||
dnl
|
||||
dnl _RTEMS_SUB_SRCDIR(AC_CONFIG_DIR[,TARGET_SUBDIR])
|
||||
dnl
|
||||
AC_DEFUN([_RTEMS_SUB_SRCDIR],[
|
||||
AC_DEFUN(_RTEMS_SUB_SRCDIR,[
|
||||
# _RTEMS_SUB_SRCDIR
|
||||
_RTEMS_ADJUST_SRCDIR(ac_sub_srcdir,$1,$2)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
AC_DEFUN([RTEMS_TOOLPATHS],
|
||||
AC_DEFUN(RTEMS_TOOLPATHS,
|
||||
[
|
||||
# tooldir='$(exec_prefix)/'$target_alias
|
||||
# Temporary work-around until building in source tree is supported
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
AC_DEFUN([RTEMS_VERSIONING],
|
||||
m4_define([_RTEMS_VERSION],[4.6.2]))
|
||||
m4_define([_RTEMS_VERSION],[4.6.0]))
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
2004-08-17 Ralf Corsepius <ralf_corsepius@rtems.org>
|
||||
|
||||
* acinclude.m4 (_RTEMS_CONFIG_SUBDIR): Quote ac_popdir uses.
|
||||
|
||||
2003-12-14 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* support/Makefile.am: Pass @RTEMS_BSP@ to AM_CPPFLAGS.
|
||||
|
||||
@@ -79,7 +79,7 @@ if test "$no_recursion" != yes; then
|
||||
AC_MSG_ERROR([$ac_sub_configure failed for $ac_subdir])
|
||||
fi
|
||||
|
||||
cd "$ac_popdir"
|
||||
cd $ac_popdir
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
2004-09-27 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
PR 679/bsps
|
||||
* startup/linkcmds: Add gnu.linkonce.d and .gcc_except_table.
|
||||
|
||||
2003-09-04 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* clock/ckinit.c, console/console.c, include/bsp.h, include/coverhd.h,
|
||||
|
||||
@@ -48,8 +48,6 @@ SECTIONS
|
||||
{
|
||||
_sdata = .;
|
||||
*(.data);
|
||||
*(.gnu.linkonce.d*)
|
||||
*(.gcc_except_table)
|
||||
_edata = .;
|
||||
}
|
||||
_data_start = ADDR(.data) ;
|
||||
|
||||
@@ -1,16 +1,3 @@
|
||||
2004-10-13 Eric Norum <norume@aps.anl.gov>
|
||||
|
||||
PR 688/bsps
|
||||
* Makefile.am clock/todcfg.c: Add support for MC146818A TOD chip.
|
||||
|
||||
2004-05-21 Till Strauman <strauman@slac.stanford.edu>
|
||||
|
||||
* PR 624/bsps
|
||||
startup/bspstart.c: When probing the memory, make sure not to
|
||||
corrupt the application. Only probe addresses beyond rtemsFreeMemStart.
|
||||
* Let IBMPC_outch() convert LF -> CRLF to avoid printk scrambling
|
||||
the screen.
|
||||
|
||||
2003-10-02 Till Strauman <strauman@slac.stanford.edu>
|
||||
|
||||
PR 502/bsps
|
||||
|
||||
@@ -2,11 +2,10 @@
|
||||
## $Id$
|
||||
##
|
||||
|
||||
VPATH = @srcdir@:@srcdir@/../../shared/tod:@srcdir@/../../../shared
|
||||
|
||||
PGM = $(ARCH)/clock.rel
|
||||
|
||||
C_FILES = ckinit.c todcfg.c tod.c
|
||||
C_FILES = ckinit.c rtc.c
|
||||
clock_rel_OBJECTS = $(C_FILES:%.c=$(ARCH)/%.$(OBJEXT))
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/compile.am
|
||||
@@ -26,6 +25,6 @@ all-local: $(ARCH) $(clock_rel_OBJECTS) $(PGM)
|
||||
|
||||
.PRECIOUS: $(PGM)
|
||||
|
||||
EXTRA_DIST =
|
||||
EXTRA_DIST = ckinit.c rtc.c
|
||||
|
||||
include $(top_srcdir)/../../../../../../automake/local.am
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
* This file contains the RTC driver table for Motorola shared BSPs.
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
#include <libchip/rtc.h>
|
||||
#include <libchip/mc146818a.h>
|
||||
|
||||
/* The following table configures the RTC drivers used in this BSP */
|
||||
rtc_tbl RTC_Table[] = {
|
||||
{
|
||||
"/dev/rtc", /* sDeviceName */
|
||||
RTC_MC146818A, /* deviceType */
|
||||
&mc146818a_fns, /* pDeviceFns */
|
||||
mc146818a_probe, /* deviceProbe */
|
||||
NULL, /* pDeviceParams */
|
||||
0x70, /* ulCtrlPort1 */
|
||||
0x00, /* ulDataPort */
|
||||
mc146818a_get_register, /* getRegister */
|
||||
mc146818a_set_register /* setRegister */
|
||||
}
|
||||
};
|
||||
|
||||
/* Some information used by the RTC driver */
|
||||
|
||||
#define NUM_RTCS (sizeof(RTC_Table)/sizeof(rtc_tbl))
|
||||
|
||||
unsigned long RTC_Count = NUM_RTCS;
|
||||
|
||||
rtems_device_minor_number RTC_Minor;
|
||||
@@ -270,11 +270,8 @@ _IBMPC_outch(char c)
|
||||
{
|
||||
static int escaped = 0;
|
||||
|
||||
if ( ! (escaped = handleEscape(escaped, c)) ) {
|
||||
if ( '\n' == c )
|
||||
videoPutChar('\r');
|
||||
if ( ! (escaped = handleEscape(escaped, c)) )
|
||||
videoPutChar(c);
|
||||
}
|
||||
} /* _IBMPC_outch */
|
||||
|
||||
|
||||
|
||||
@@ -82,18 +82,12 @@ void bsp_postdriver_hook(void);
|
||||
void bsp_pretasking_hook(void)
|
||||
{
|
||||
rtems_unsigned32 topAddr, val;
|
||||
int i, lowest;
|
||||
int i;
|
||||
|
||||
|
||||
if (rtemsFreeMemStart & (CPU_ALIGNMENT - 1)) /* not aligned => align it */
|
||||
rtemsFreeMemStart = (rtemsFreeMemStart+CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1);
|
||||
|
||||
/* find the lowest 1M boundary to probe */
|
||||
lowest = ((rtemsFreeMemStart + (1<<20)) >> 20) + 1;
|
||||
if ( lowest < 2 )
|
||||
lowest = 2;
|
||||
|
||||
|
||||
if(_heap_size == 0)
|
||||
{
|
||||
/*
|
||||
@@ -101,13 +95,13 @@ void bsp_pretasking_hook(void)
|
||||
* between 2M and 2048M.
|
||||
* let us first write
|
||||
*/
|
||||
for(i=2048; i>=lowest; i--)
|
||||
for(i=2048; i>=2; i--)
|
||||
{
|
||||
topAddr = i*1024*1024 - 4;
|
||||
*(volatile rtems_unsigned32 *)topAddr = topAddr;
|
||||
}
|
||||
|
||||
for(i=lowest; i<=2048; i++)
|
||||
for(i=2; i<=2048; i++)
|
||||
{
|
||||
topAddr = i*1024*1024 - 4;
|
||||
val = *(rtems_unsigned32 *)topAddr;
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
2003-11-01 Greg Menke <gregory.menke@gsfc.nasa.gov>
|
||||
|
||||
PR 608/bsps
|
||||
* pci/pcibios.c: BusCountPCI().
|
||||
|
||||
2003-12-29 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* shared/io/Makefile.am: Remove (Unused).
|
||||
|
||||
@@ -218,64 +218,6 @@ pcib_find_by_class(int classCode, int idx, int *sig)
|
||||
#define PCI_MAX_DEVICES 16
|
||||
#define PCI_MAX_FUNCTIONS 8
|
||||
|
||||
#define PCI_VENDOR_ID 0x00 /* 16 bits */
|
||||
#define PCI_DEVICE_ID 0x02 /* 16 bits */
|
||||
#define PCI_CLASS_REVISION 0x08
|
||||
#define PCI_HEADER_TYPE 0x0e
|
||||
#define PCI_SUBORDINATE_BUS 0x1a
|
||||
|
||||
#define PCI_CLASS_BRIDGE_PCI 0x0604
|
||||
|
||||
static unsigned8 ucBusCount = 0xff;
|
||||
|
||||
int
|
||||
BusCountPCI()
|
||||
{
|
||||
if( ucBusCount == 0xff )
|
||||
{
|
||||
unsigned char bus,dev,hd;
|
||||
unsigned int d;
|
||||
int sig;
|
||||
|
||||
ucBusCount = 0;
|
||||
|
||||
for(bus=0; bus< 0xff; bus++)
|
||||
{
|
||||
for(dev=0; dev<PCI_MAX_DEVICES; dev++)
|
||||
{
|
||||
sig = PCIB_DEVSIG_MAKE(bus,dev,0);
|
||||
pcib_conf_read32(sig, PCI_VENDOR_ID, &d);
|
||||
|
||||
if( d != -1 )
|
||||
{
|
||||
pcib_conf_read32(sig, PCI_CLASS_REVISION, &d);
|
||||
|
||||
if( (d >> 16) == PCI_CLASS_BRIDGE_PCI )
|
||||
{
|
||||
pcib_conf_read8(sig, PCI_SUBORDINATE_BUS, &hd);
|
||||
|
||||
if( hd > ucBusCount )
|
||||
ucBusCount = hd;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if( ucBusCount == 0 )
|
||||
{
|
||||
printk("BusCountPCI() found 0 busses, assuming 1\n");
|
||||
ucBusCount = 1;
|
||||
}
|
||||
else if( ucBusCount == 0xff )
|
||||
{
|
||||
printk("BusCountPCI() found 0xff busses, assuming 1\n");
|
||||
ucBusCount = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return ucBusCount;
|
||||
}
|
||||
|
||||
int
|
||||
BSP_pciFindDevice( unsigned short vendorid, unsigned short deviceid,
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
2004-03-05 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
PR 505/bsps
|
||||
* setvec.c: Rework to remove punned pointer warning generated by gcc
|
||||
3.3 and newer.
|
||||
|
||||
2003-09-04 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* bspspuriousinit.c, m68000spurious.c, m68kpretaskinghook.c, setvec.c,
|
||||
|
||||
@@ -26,13 +26,13 @@ m68k_isr_entry set_vector( /* returns old vector */
|
||||
int type /* RTEMS or RAW intr */
|
||||
)
|
||||
{
|
||||
rtems_isr_entry previous_isr;
|
||||
m68k_isr_entry previous_isr;
|
||||
|
||||
if ( type )
|
||||
rtems_interrupt_catch( handler, vector, &previous_isr );
|
||||
rtems_interrupt_catch( handler, vector, (rtems_isr_entry *) &previous_isr );
|
||||
else {
|
||||
_CPU_ISR_install_raw_handler( vector, handler, (void *)&previous_isr );
|
||||
}
|
||||
return (m68k_isr_entry) previous_isr;
|
||||
return previous_isr;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
2004-10-15 Gene Smith <gene.smith@seimens.com>
|
||||
|
||||
PR 691/bsps
|
||||
* startup/linkcmds: Correct bug in linker script.
|
||||
|
||||
2003-12-16 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
PR 533/bsps
|
||||
|
||||
@@ -145,6 +145,7 @@ SECTIONS
|
||||
PROVIDE(_heap_end = heap.end);
|
||||
/* reserve 64KByte for stack... */
|
||||
stack.end = heap.end + 64K;
|
||||
PROVIDE(_end = stack.end);
|
||||
|
||||
.line 0 : { *(.line) }
|
||||
.debug 0 : { *(.debug) }
|
||||
|
||||
@@ -1,13 +1,3 @@
|
||||
2004-09-27 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
PR 680/bsps
|
||||
* network/if_hdlcsubr.c: Add missing #include <rtems/rtems_bsdnet.h>.
|
||||
|
||||
2004-04-07 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
PR 602/bsps
|
||||
* irq/irq.h: Fix typo.
|
||||
|
||||
2003-12-19 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
PR 545/bsps
|
||||
|
||||
@@ -348,7 +348,7 @@ int BSP_rtems_irq_mngt_get(rtems_irq_global_settings**);
|
||||
extern void BSP_rtems_irq_mng_init(unsigned cpuId);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -48,8 +48,6 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <rtems/rtems_bsdnet.h>
|
||||
|
||||
#include <sys/param.h>
|
||||
/*#include <sys/systm.h>
|
||||
#include <sys/kernel.h> */
|
||||
|
||||
@@ -1,26 +1,88 @@
|
||||
2004-09-27 Greg Menke <gregory.menke@gsfc.nasa.gov>
|
||||
2003-10-22 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
PR 606/bsps
|
||||
* bootloader/pci.c: Fixed IO remapping so buses >= 1 are remapped.
|
||||
Reduced PCI space to match bat2. Fixed incorrect region size
|
||||
calculation in pci_read_bases. Set PCI latency timers to known
|
||||
sane values. Changed bridge PCI settings to minimum sane instead
|
||||
of whatever sounded neat in the PCI spec. Force pf regions to
|
||||
memory mapped to preserve byte access.
|
||||
PR 510/bsps
|
||||
* irq/irq.h: Add extern C wrapper.
|
||||
|
||||
2003-09-29 Till Strauman <strauman@slac.stanford.edu>
|
||||
|
||||
2004-09-27 Greg Menke <gregory.menke@gsfc.nasa.gov>
|
||||
PR 497/bsps
|
||||
* ChangeLog, bootloader/head.S, startup/bspstart.c: Disable code that
|
||||
returned to the firmware when the loader starts.
|
||||
* startup/sbrk.c: New file.
|
||||
|
||||
PR 606/bsps
|
||||
* bootloader/pci.c: Fixed IO remapping so buses >= 1 are remapped.
|
||||
Reduced PCI space to match bat2. Fixed incorrect region size
|
||||
calculation in pci_read_bases. Set PCI latency timers to known
|
||||
sane values. Changed bridge PCI settings to minimum sane instead
|
||||
of whatever sounded neat in the PCI spec. Force pf regions to
|
||||
memory mapped to preserve byte access.
|
||||
2003-09-26 Till Strauman <strauman@slac.stanford.edu>
|
||||
|
||||
PR 496/bsps
|
||||
* startup/sbrk.c: New file.
|
||||
* startup/bspstart.c: This patch implements 'sbrk'
|
||||
for the powerpc-shared BSP to work around what's known as the
|
||||
'32Mb problem' in combination with run-time loaded code.
|
||||
GCC normally generates (PowerPC) code doing 'short jumps' which
|
||||
requires all text segments being in the same 32Mb area of memory.
|
||||
However, some run-time loaders use (e.g. heap-) memory violating the
|
||||
stated limitation on hardware with more than 32Mb of memory.
|
||||
(NOTE: portable loaders are probably not even aware of this
|
||||
GCC/CPU specific problem.)
|
||||
|
||||
This patch implements a simple workaround: At boot time, the system is
|
||||
only provided with 32Mb of memory. The user is supposed to load all
|
||||
necessary modules prior to that limit being exhausted. Once that
|
||||
happens, newlib/malloc end up trying to 'sbrk()' for more memory and
|
||||
the implementation provided by this patch will then make the rest of
|
||||
the physical memory available.
|
||||
|
||||
2003-09-26 Till Straumann <strauman@slac.stanford.edu>
|
||||
|
||||
PR 497/bsps
|
||||
* bootloader/head.S: Let the bootloader shut down the
|
||||
network interface. NOTE: this involves a PPCBug system
|
||||
call and will hence fail if other software is used
|
||||
to boot. Need to #undef USE_PPCBUG in such cases!
|
||||
|
||||
2003-09-04 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* bootloader/bootldr.h, bootloader/em86.c, bootloader/em86real.S,
|
||||
bootloader/exception.S, bootloader/head.S, bootloader/lib.c,
|
||||
bootloader/misc.c, bootloader/mm.c, bootloader/pci.c,
|
||||
clock/p_clock.c, console/console.c, console/consoleIo.h,
|
||||
console/inch.c, console/keyboard.h, console/polled_io.c,
|
||||
include/bsp.h, irq/i8259.c, irq/irq.c, irq/irq.h, irq/irq_asm.S,
|
||||
irq/irq_init.c, motorola/motorola.c, motorola/motorola.h,
|
||||
openpic/openpic.c, openpic/openpic.h, pci/pci.c, residual/residual.c,
|
||||
start/start.S, startup/bspstart.c, vectors/vectors.h,
|
||||
vectors/vectors_init.c: URL for license changed.
|
||||
|
||||
2003-08-21 Till Strauman <strauman@slac.stanford.edu>
|
||||
|
||||
PR 456/bsps
|
||||
* irq/irq.c: Fix race condition when installing an ISR.
|
||||
|
||||
2003-08-05 Till Strauman <strauman@slac.stanford.edu>
|
||||
|
||||
PR 437/bsps
|
||||
* irq/irc.c: calls to bspIo/printk must not use '%i' format which is
|
||||
apparently not supported
|
||||
* pci/pci.c: calls to bspIo/printk must not use '%i' format which is
|
||||
apparently not supported
|
||||
|
||||
2003-07-18 Till Straumann <strauman@slac.stanford.edu>
|
||||
|
||||
PR 288/rtems
|
||||
* irq/irq_asm.S, startup/bspstart.c: _ISR_Nest_level is now properly
|
||||
maintained and any BSP which does not do so will trip a panic in the
|
||||
shared code.
|
||||
|
||||
2003-07-18 Till Straumann <strauman@slac.stanford.edu>
|
||||
|
||||
PR 415/bsps
|
||||
* pci/detect_raven_bridge.c, startup/bspstart.c:
|
||||
This patch reverts enabling MCP interrupts for the motorola_powerpc
|
||||
BSPs. REASON: pci config space scanning (as e.g. done by the DEC
|
||||
Ethernet driver) would raise machine check exceptions.
|
||||
|
||||
2003-07-16 Greg Menke <gregory.menke@gsfc.nasa.gov>
|
||||
|
||||
PR 428/bsps
|
||||
PR 432/bsps
|
||||
* bootloader/pci.c: Re-instated code that prevents remapping small
|
||||
IO regions, which if remapped would cause i8259 registers to move
|
||||
@@ -53,16 +115,6 @@
|
||||
Support enabling MCP exceptions on the host bridge. This can
|
||||
be used for memory probing on the VME bus.
|
||||
|
||||
2003-04-15 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
PR 386/bsps
|
||||
* vme/vmeconfig.c: Removed declaration of _BSP_vme_bridge_irq.
|
||||
|
||||
2003-04-15 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
PR 386/bsps
|
||||
* vme/vmeconfig.c: Removed declaration of _BSP_vme_bridge_irq.
|
||||
|
||||
2003-04-10 Till Straumann <strauman@slac.stanford.edu>
|
||||
|
||||
PR 379/bsps
|
||||
@@ -104,22 +156,6 @@
|
||||
code on non-VME BSPs without triggering linkage of the vmeUniverse
|
||||
driver.
|
||||
|
||||
2003-03-25 Till Straumann <strauman@slac.stanford.edu>
|
||||
|
||||
PR 349/bsps
|
||||
* irq/irq.c, vme/VME.h, vme/vmeconfig.c: Fixes library dependency
|
||||
on the vmeUniverse driver. It is now possible to use the ppc/shared/irq
|
||||
code on non-VME BSPs without triggering linkage of the vmeUniverse
|
||||
driver.
|
||||
|
||||
2003-03-25 Till Straumann <strauman@slac.stanford.edu>
|
||||
|
||||
PR 349/bsps
|
||||
* irq/irq.c, vme/VME.h, vme/vmeconfig.c: Fixes library dependency
|
||||
on the vmeUniverse driver. It is now possible to use the ppc/shared/irq
|
||||
code on non-VME BSPs without triggering linkage of the vmeUniverse
|
||||
driver.
|
||||
|
||||
2003-03-18 Till Straumann <strauman@slac.stanford.edu>
|
||||
|
||||
PR 356/bsps
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
* found in found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* pci.c,v 1.3 2003/06/13 17:39:44 joel Exp
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
@@ -25,13 +25,17 @@
|
||||
#include <libcpu/page.h>
|
||||
#include <bsp/consoleIo.h>
|
||||
|
||||
|
||||
|
||||
typedef unsigned int u32;
|
||||
|
||||
|
||||
/*
|
||||
#define DEBUG
|
||||
#define PCI_DEBUG
|
||||
*/
|
||||
|
||||
|
||||
/* Used to reorganize PCI space on stupid machines which spread resources
|
||||
* across a wide address space. This is bad when P2P bridges are present
|
||||
* or when it limits the mappings that a resource hog like a PCI<->VME
|
||||
@@ -230,12 +234,8 @@ static void insert_resource(pci_resource *r) {
|
||||
** hardware, its just the builtin stuff we're tiptoeing around.
|
||||
**
|
||||
** Gregm, 7/16/2003
|
||||
**
|
||||
** Gregm, changed 11/2003 so IO devices only on bus 0 zero are not
|
||||
** remapped. This covers the builtin pc-like io devices- but
|
||||
** properly maps IO devices on higher busses.
|
||||
*/
|
||||
if( r->dev->bus->number == 0 )
|
||||
if( r->dev->bus->number <= 1 )
|
||||
{
|
||||
if ((r->type==PCI_BASE_ADDRESS_SPACE_IO)
|
||||
? (r->base && r->base <0x10000)
|
||||
@@ -508,11 +508,11 @@ static void reconfigure_bus_space(u_char bus, u_char type, pci_area_head *h)
|
||||
#define BUS0_IO_START 0x10000
|
||||
#define BUS0_IO_END 0x1ffff
|
||||
#define BUS0_MEM_START 0x1000000
|
||||
#define BUS0_MEM_END 0x3f00000
|
||||
#define BUS0_MEM_END 0xaffffff
|
||||
|
||||
#define BUSREST_IO_START 0x20000
|
||||
#define BUSREST_IO_END 0x7ffff
|
||||
#define BUSREST_MEM_START 0x4000000
|
||||
#define BUSREST_MEM_START 0xb000000
|
||||
#define BUSREST_MEM_END 0x10000000
|
||||
|
||||
|
||||
@@ -570,7 +570,8 @@ static void reconfigure_pci(void) {
|
||||
(PCI_BASE_ADDRESS_SPACE_MEMORY|
|
||||
PCI_BASE_ADDRESS_MEM_TYPE_64)) {
|
||||
pci_write_config_dword(r->dev,
|
||||
PCI_BASE_ADDRESS_1+(r->reg<<2),
|
||||
PCI_BASE_ADDRESS_1+
|
||||
(r->reg<<2),
|
||||
0);
|
||||
}
|
||||
}
|
||||
@@ -808,31 +809,12 @@ void pci_read_bases(struct pci_dev *dev, unsigned int howmany)
|
||||
if ((l&PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
|
||||
r->type = l&~PCI_BASE_ADDRESS_IO_MASK;
|
||||
r->base = l&PCI_BASE_ADDRESS_IO_MASK;
|
||||
/* r->size = ~(ml&PCI_BASE_ADDRESS_IO_MASK)+1; */
|
||||
r->size = ~(ml&PCI_BASE_ADDRESS_IO_MASK)+1;
|
||||
} else {
|
||||
r->type = l&~PCI_BASE_ADDRESS_MEM_MASK;
|
||||
r->base = l&PCI_BASE_ADDRESS_MEM_MASK;
|
||||
/* r->size = ~(ml&PCI_BASE_ADDRESS_MEM_MASK)+1; */
|
||||
r->size = ~(ml&PCI_BASE_ADDRESS_MEM_MASK)+1;
|
||||
}
|
||||
|
||||
/* find the first bit set to one after the base
|
||||
address type bits to find length of region */
|
||||
{
|
||||
unsigned int c= 16 , val= 0;
|
||||
while( !(val= ml & c) ) c <<= 1;
|
||||
r->size = val;
|
||||
}
|
||||
|
||||
#ifdef PCI_DEBUG
|
||||
printk(" readbase bus %d, (%04x:%04x), base %08x, size %08x, type %d\n",
|
||||
r->dev->bus->number,
|
||||
r->dev->vendor,
|
||||
r->dev->device,
|
||||
r->base,
|
||||
r->size,
|
||||
r->type );
|
||||
#endif
|
||||
|
||||
/* Check for the blacklisted entries */
|
||||
insert_resource(r);
|
||||
}
|
||||
@@ -1195,9 +1177,6 @@ static void recursive_bus_reconfigure( struct pci_bus *pbus )
|
||||
{
|
||||
pdev= childbus->self;
|
||||
|
||||
pcibios_write_config_byte(pdev->bus->number, pdev->devfn, PCI_LATENCY_TIMER, 0x80 );
|
||||
pcibios_write_config_byte(pdev->bus->number, pdev->devfn, PCI_SEC_LATENCY_TIMER, 0x80 );
|
||||
|
||||
{
|
||||
struct _addr_start addrhold;
|
||||
unsigned8 base8, limit8;
|
||||
@@ -1221,7 +1200,7 @@ static void recursive_bus_reconfigure( struct pci_bus *pbus )
|
||||
|
||||
|
||||
/*
|
||||
** use the current values & the saved ones to figure out
|
||||
**use the current values & the saved ones to figure out
|
||||
** the address spaces for the bridge
|
||||
*/
|
||||
|
||||
@@ -1274,7 +1253,6 @@ static void recursive_bus_reconfigure( struct pci_bus *pbus )
|
||||
|
||||
|
||||
|
||||
|
||||
if( astart.start_prefetch == addrhold.start_prefetch )
|
||||
{
|
||||
limit16 = 0;
|
||||
@@ -1294,20 +1272,18 @@ static void recursive_bus_reconfigure( struct pci_bus *pbus )
|
||||
pcibios_write_config_word(pdev->bus->number, pdev->devfn, PCI_PREF_MEMORY_BASE, base16 );
|
||||
pcibios_write_config_dword(pdev->bus->number, pdev->devfn, PCI_PREF_LIMIT_UPPER32, 0);
|
||||
pcibios_write_config_word(pdev->bus->number, pdev->devfn, PCI_PREF_MEMORY_LIMIT, limit16 );
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef WRITE_BRIDGE_ENABLE
|
||||
pcibios_write_config_word(pdev->bus->number,
|
||||
pdev->devfn,
|
||||
PCI_BRIDGE_CONTROL,
|
||||
(unsigned16)( 0 ));
|
||||
pcibios_write_config_word(pdev->bus->number, pdev->devfn, PCI_BRIDGE_CONTROL, (unsigned16)( PCI_BRIDGE_CTL_PARITY |
|
||||
PCI_BRIDGE_CTL_SERR ));
|
||||
|
||||
pcibios_write_config_word(pdev->bus->number,
|
||||
pdev->devfn,
|
||||
PCI_COMMAND,
|
||||
(unsigned16)( PCI_COMMAND_IO |
|
||||
pcibios_write_config_word(pdev->bus->number, pdev->devfn, PCI_COMMAND, (unsigned16)( PCI_COMMAND_IO |
|
||||
PCI_COMMAND_MEMORY |
|
||||
PCI_COMMAND_MASTER ));
|
||||
PCI_COMMAND_MASTER |
|
||||
PCI_COMMAND_PARITY |
|
||||
PCI_COMMAND_SERR ));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -1343,18 +1319,7 @@ static void recursive_bus_reconfigure( struct pci_bus *pbus )
|
||||
|
||||
while( (r= enum_device_resources( pdev, i++ )) )
|
||||
{
|
||||
/*
|
||||
** Force all memory spaces to be non-prefetchable because
|
||||
** on the pci bus, byte-wise reads against prefetchable
|
||||
** memory are applied as 32 bit reads, which is a pain
|
||||
** when you're trying to talk to hardware. This is a
|
||||
** little sub-optimal because the algorithm doesn't sort
|
||||
** the address regions to pack them in, OTOH, perhaps its
|
||||
** not so bad because the inefficient packing will help
|
||||
** avoid buffer overflow/underflow problems.
|
||||
*/
|
||||
#if 0
|
||||
if( (r->type & PCI_BASE_ADDRESS_MEM_PREFETCH) )
|
||||
if( r->type & PCI_BASE_ADDRESS_MEM_PREFETCH )
|
||||
{
|
||||
/* prefetchable space */
|
||||
|
||||
@@ -1368,8 +1333,7 @@ static void recursive_bus_reconfigure( struct pci_bus *pbus )
|
||||
printk("pci: pf %08X, size %08X, alloc %08X\n", r->base, r->size, alloc );
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
if( r->type & PCI_BASE_ADDRESS_SPACE_IO )
|
||||
else if( r->type & PCI_BASE_ADDRESS_SPACE_IO )
|
||||
{
|
||||
/* io space */
|
||||
|
||||
@@ -1472,10 +1436,6 @@ void pci_init(void)
|
||||
reconfigure_pci();
|
||||
|
||||
print_pci_resources("Allocated PCI resources:\n");
|
||||
|
||||
#if 0
|
||||
print_pci_info();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
C_FILES = bspstart.c pgtbl_setup.c pgtbl_activate.c
|
||||
|
||||
EXTRA_DIST = bspstart.c pgtbl_setup.c pgtbl_activate.c
|
||||
noinst_DATA = linkcmds
|
||||
|
||||
EXTRA_DIST = bspstart.c linkcmds pgtbl_setup.c pgtbl_activate.c
|
||||
|
||||
include $(top_srcdir)/../../../../../automake/local.am
|
||||
|
||||
200
c/src/lib/libbsp/powerpc/shared/startup/linkcmds
Normal file
200
c/src/lib/libbsp/powerpc/shared/startup/linkcmds
Normal file
@@ -0,0 +1,200 @@
|
||||
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
|
||||
"elf32-powerpc")
|
||||
OUTPUT_ARCH(powerpc)
|
||||
ENTRY(_start)
|
||||
/* Do we need any of these for elf?
|
||||
__DYNAMIC = 0; */
|
||||
PROVIDE (__stack = 0);
|
||||
MEMORY {
|
||||
VECTORS : ORIGIN = 0x0 , LENGTH = 0x3000
|
||||
CODE : ORIGIN = 0x3000 , LENGTH = 0x400000
|
||||
}
|
||||
SECTIONS
|
||||
{
|
||||
.entry_point_section :
|
||||
{
|
||||
*(.entry_point_section)
|
||||
} > VECTORS
|
||||
|
||||
/*
|
||||
* This section is used only if NO_DYNAMIC_EXCEPTION_VECTOR_INSTALL
|
||||
* is defined in vectors/vectors.S
|
||||
*/
|
||||
.vectors :
|
||||
{
|
||||
*(.vectors)
|
||||
} > VECTORS
|
||||
|
||||
/* Read-only sections, merged into text segment: */
|
||||
.interp : { *(.interp) } > CODE
|
||||
.hash : { *(.hash) } > CODE
|
||||
.dynsym : { *(.dynsym) } > CODE
|
||||
.dynstr : { *(.dynstr) } > CODE
|
||||
.gnu.version : { *(.gnu.version) } > CODE
|
||||
.gnu.version_d : { *(.gnu.version_d) } > CODE
|
||||
.gnu.version_r : { *(.gnu.version_r) } > CODE
|
||||
.rela.text :
|
||||
{ *(.rela.text) *(.rela.gnu.linkonce.t*) } > CODE
|
||||
.rela.data :
|
||||
{ *(.rela.data) *(.rela.gnu.linkonce.d*) } > CODE
|
||||
.rela.rodata :
|
||||
{ *(.rela.rodata) *(.rela.gnu.linkonce.r*) } > CODE
|
||||
.rela.got : { *(.rela.got) } > CODE
|
||||
.rela.got1 : { *(.rela.got1) } > CODE
|
||||
.rela.got2 : { *(.rela.got2) } > CODE
|
||||
.rela.ctors : { *(.rela.ctors) } > CODE
|
||||
.rela.dtors : { *(.rela.dtors) } > CODE
|
||||
.rela.init : { *(.rela.init) } > CODE
|
||||
.rela.fini : { *(.rela.fini) } > CODE
|
||||
.rela.bss : { *(.rela.bss) } > CODE
|
||||
.rela.plt : { *(.rela.plt) } > CODE
|
||||
.rela.sdata : { *(.rela.sdata) } > CODE
|
||||
.rela.sbss : { *(.rela.sbss) } > CODE
|
||||
.rela.sdata2 : { *(.rela.sdata2) } > CODE
|
||||
.rela.sbss2 : { *(.rela.sbss2) } > CODE
|
||||
.text :
|
||||
{
|
||||
*(.text)
|
||||
|
||||
/*
|
||||
* Special FreeBSD sysctl sections.
|
||||
*/
|
||||
. = ALIGN (16);
|
||||
__start_set_sysctl_set = .;
|
||||
*(set_sysctl_*);
|
||||
__stop_set_sysctl_set = ABSOLUTE(.);
|
||||
*(set_domain_*);
|
||||
*(set_pseudo_*);
|
||||
|
||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
||||
*(.gnu.warning)
|
||||
*(.gnu.linkonce.t*)
|
||||
} > CODE
|
||||
.init : { _init = .; *(.init) } >CODE
|
||||
.fini : { _fini = .; *(.fini) } >CODE
|
||||
.rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > CODE
|
||||
.rodata1 : { *(.rodata1) } > CODE
|
||||
.eh_frame : { *.(eh_frame) } >CODE
|
||||
.sdata2 : { *(.sdata2) *(.gnu.linkonce.s2.*) } >CODE
|
||||
.sbss2 : { *(.sbss2) *(.gnu.linkonce.sb2.*) } >CODE
|
||||
_etext = .;
|
||||
PROVIDE (etext = .);
|
||||
/* Adjust the address for the data segment. We want to adjust up to
|
||||
the same address within the page on the next page up. It would
|
||||
be more correct to do this:
|
||||
. = ALIGN(0x40000) + (ALIGN(8) & (0x40000 - 1));
|
||||
The current expression does not correctly handle the case of a
|
||||
text segment ending precisely at the end of a page; it causes the
|
||||
data segment to skip a page. The above expression does not have
|
||||
this problem, but it will currently (2/95) cause BFD to allocate
|
||||
a single segment, combining both text and data, for this case.
|
||||
This will prevent the text segment from being shared among
|
||||
multiple executions of the program; I think that is more
|
||||
important than losing a page of the virtual address space (note
|
||||
that no actual memory is lost; the page which is skipped can not
|
||||
be referenced). */
|
||||
. = ALIGN(0x1000);
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
*(.gnu.linkonce.d*)
|
||||
CONSTRUCTORS
|
||||
} > CODE
|
||||
.data1 : { *(.data1) } > CODE
|
||||
PROVIDE (__EXCEPT_START__ = .);
|
||||
.gcc_except_table : { *(.gcc_except_table) } > CODE
|
||||
PROVIDE (__EXCEPT_END__ = .);
|
||||
.got1 : { *(.got1) } > CODE
|
||||
.dynamic : { *(.dynamic) } > CODE
|
||||
/* Put .ctors and .dtors next to the .got2 section, so that the pointers
|
||||
get relocated with -mrelocatable. Also put in the .fixup pointers.
|
||||
The current compiler no longer needs this, but keep it around for 2.7.2 */
|
||||
PROVIDE (_GOT2_START_ = .);
|
||||
.got2 : { *(.got2) } > CODE
|
||||
PROVIDE (__CTOR_LIST__ = .);
|
||||
.ctors : { *(.ctors) } > CODE
|
||||
PROVIDE (__CTOR_END__ = .);
|
||||
PROVIDE (__DTOR_LIST__ = .);
|
||||
.dtors : { *(.dtors) } > CODE
|
||||
PROVIDE (__DTOR_END__ = .);
|
||||
PROVIDE (_FIXUP_START_ = .);
|
||||
.fixup : { *(.fixup) } > CODE
|
||||
PROVIDE (_FIXUP_END_ = .);
|
||||
PROVIDE (_GOT2_END_ = .);
|
||||
PROVIDE (_GOT_START_ = .);
|
||||
.got : { *(.got) } > CODE
|
||||
.got.plt : { *(.got.plt) } > CODE
|
||||
PROVIDE (_GOT_END_ = .);
|
||||
/* We want the small data sections together, so single-instruction offsets
|
||||
can access them all, and initialized data all before uninitialized, so
|
||||
we can shorten the on-disk segment size. */
|
||||
.sdata : { *(.sdata) *(.gnu.linkonce.s.*) } >CODE
|
||||
_edata = .;
|
||||
PROVIDE (edata = .);
|
||||
.sbss :
|
||||
{
|
||||
PROVIDE (__sbss_start = .);
|
||||
*(.sbss)
|
||||
*(.scommon)
|
||||
*(.dynsbss)
|
||||
PROVIDE (__sbss_end = .);
|
||||
} > CODE
|
||||
.plt : { *(.plt) } > CODE
|
||||
.bss :
|
||||
{
|
||||
PROVIDE (__bss_start = .);
|
||||
*(.dynbss)
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
. = ALIGN(16);
|
||||
} > CODE
|
||||
. = ALIGN(16);
|
||||
_end = . ;
|
||||
__rtems_end = . ;
|
||||
PROVIDE (end = .);
|
||||
/DISCARD/ :
|
||||
{
|
||||
*(.comment)
|
||||
}
|
||||
|
||||
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
|
||||
/* DWARF debug sections.
|
||||
Symbols in the DWARF debugging sections are relative to the beginning
|
||||
of the section so we begin them at 0. */
|
||||
/* DWARF 1 */
|
||||
.debug 0 : { *(.debug) }
|
||||
.line 0 : { *(.line) }
|
||||
|
||||
/* GNU DWARF 1 extensions */
|
||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
||||
|
||||
/* DWARF 1.1 and DWARF 2 */
|
||||
.debug_aranges 0 : { *(.debug_aranges) }
|
||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||
|
||||
/* DWARF 2 */
|
||||
.debug_info 0 : { *(.debug_info) }
|
||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||
.debug_line 0 : { *(.debug_line) }
|
||||
.debug_frame 0 : { *(.debug_frame) }
|
||||
.debug_str 0 : { *(.debug_str) }
|
||||
.debug_loc 0 : { *(.debug_loc) }
|
||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
||||
|
||||
/* SGI/MIPS DWARF 2 extensions */
|
||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
||||
.debug_typenames 0 : { *(.debug_typenames) }
|
||||
.debug_varnames 0 : { *(.debug_varnames) }
|
||||
/* These must appear regardless of . */
|
||||
}
|
||||
@@ -1,8 +1,3 @@
|
||||
2004-10-13 Eric Norum <norume@aps.anl.gov>
|
||||
|
||||
PR 688/bsps
|
||||
* shared/tod.c: Set RTEMS time during TOD initialization
|
||||
|
||||
2003-09-26 Cedric Aubert <cedric_aubert@yahoo.fr>
|
||||
|
||||
PR 501/rtems_misc
|
||||
|
||||
@@ -98,7 +98,6 @@ rtems_device_driver rtc_initialize(
|
||||
}
|
||||
}
|
||||
|
||||
setRealTimeToRTEMS();
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
2004-02-09 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
PR make_build/574
|
||||
* Makefile.am: Re-added since missing for some reason.
|
||||
|
||||
2004-02-03 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* Makefile.am: Removed.
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
ACLOCAL_AMFLAGS = -I ../../../../../aclocal
|
||||
|
||||
VPATH = @srcdir@:@srcdir@/../shared/src
|
||||
|
||||
C_FILES = cache.c cache_aligned_malloc.c cache_manager.c displayCpu.c page.c
|
||||
OBJS = $(C_FILES:%.c=$(ARCH)/%.$(OBJEXT))
|
||||
|
||||
include_libcpudir = $(includedir)/libcpu
|
||||
|
||||
noinst_HEADERS = cache_.h
|
||||
include_libcpu_HEADERS = cpu.h cpuModel.h cache.h
|
||||
|
||||
S_FILES = cpuModel.S idtr.S
|
||||
OBJS += $(S_FILES:%.S=$(ARCH)/%.$(OBJEXT))
|
||||
|
||||
include $(top_srcdir)/../../../../../automake/compile.am
|
||||
include $(top_srcdir)/../../../../../automake/lib.am
|
||||
|
||||
AM_CPPFLAGS += -I$(srcdir)
|
||||
|
||||
$(PROJECT_INCLUDE)/libcpu:
|
||||
$(mkinstalldirs) $@
|
||||
|
||||
$(PROJECT_INCLUDE)/libcpu/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
cache.h: $(top_srcdir)/../shared/include/cache.h
|
||||
cp $< $@
|
||||
|
||||
PREINSTALL_FILES = $(PROJECT_INCLUDE)/libcpu \
|
||||
$(include_libcpu_HEADERS:%=$(PROJECT_INCLUDE)/libcpu/%)
|
||||
|
||||
all-local: $(ARCH) $(PREINSTALL_FILES) $(OBJS)
|
||||
|
||||
CLEANFILES = cache.h
|
||||
|
||||
EXTRA_DIST = cache.c cache_.h cpu.h cpuModel.S cpuModel.h displayCpu.c idt.c \
|
||||
idtr.S page.c registers.h
|
||||
|
||||
include $(top_srcdir)/../../../../../automake/local.am
|
||||
|
||||
2
c/src/lib/libcpu/i960/include/.cvsignore
Normal file
2
c/src/lib/libcpu/i960/include/.cvsignore
Normal file
@@ -0,0 +1,2 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,13 +1,3 @@
|
||||
2004-05-22 Till Strauman <strauman@slac.stanford.edu>
|
||||
|
||||
PR 619/bsps
|
||||
* mpc6xx/clock/c_clock.c: The PPC decrementer must be reloaded on each
|
||||
clock tick. Currently, this is done by just reloading a fixed value.
|
||||
The attached patch takes into account the time that elapsed since the
|
||||
decrementer crossed zero in order to adjust the value to be
|
||||
re-loaded. Without the patch, the effective system clock cycle is
|
||||
increased by the exception handler latency.
|
||||
|
||||
2003-09-04 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* mpc6xx/clock/c_clock.c, mpc6xx/clock/c_clock.h,
|
||||
|
||||
@@ -73,23 +73,21 @@ void clockOn(void* unused)
|
||||
* Return values: NONE
|
||||
*
|
||||
*/
|
||||
|
||||
void clockIsr()
|
||||
{
|
||||
int decr;
|
||||
/*
|
||||
* The driver has seen another tick.
|
||||
*/
|
||||
do {
|
||||
asm volatile ("mfdec %0; add %0, %0, %1; mtdec %0":"=r"(decr):"r"(Clock_Decrementer_value));
|
||||
|
||||
Clock_driver_ticks += 1;
|
||||
PPC_Set_decrementer( Clock_Decrementer_value );
|
||||
|
||||
/*
|
||||
* Real Time Clock counter/timer is set to automatically reload.
|
||||
*/
|
||||
rtems_clock_tick();
|
||||
} while ( decr < 0 );
|
||||
Clock_driver_ticks += 1;
|
||||
|
||||
/*
|
||||
* Real Time Clock counter/timer is set to automatically reload.
|
||||
*/
|
||||
|
||||
rtems_clock_tick();
|
||||
}
|
||||
|
||||
int clockIsOn(void* unused)
|
||||
@@ -146,18 +144,6 @@ rtems_device_driver Clock_initialize(
|
||||
Clock_Decrementer_value = (BSP_bus_frequency/BSP_time_base_divisor)*
|
||||
(rtems_configuration_get_microseconds_per_tick()/1000);
|
||||
|
||||
/* set the decrementer now, prior to installing the handler
|
||||
* so no interrupts will happen in a while.
|
||||
*/
|
||||
PPC_Set_decrementer( (unsigned)-1 );
|
||||
|
||||
/* if a decrementer exception was pending, it is cleared by
|
||||
* executing the default (nop) handler at this point;
|
||||
* The next exception will then be taken by our clock handler.
|
||||
* Clock handler installation initializes the decrementer to
|
||||
* the correct value.
|
||||
*/
|
||||
|
||||
if (!BSP_connect_clock_handler ()) {
|
||||
printk("Unable to initialize system clock\n");
|
||||
rtems_fatal_error_occurred(1);
|
||||
@@ -204,7 +190,10 @@ rtems_device_driver Clock_control(
|
||||
clockIsr();
|
||||
else if (args->command == rtems_build_name('N', 'E', 'W', ' '))
|
||||
{
|
||||
Clock_initialize(major, minor, 0);
|
||||
if (!BSP_connect_clock_handler ()) {
|
||||
printk("Error installing clock interrupt handler!\n");
|
||||
rtems_fatal_error_occurred(1);
|
||||
}
|
||||
}
|
||||
done:
|
||||
return RTEMS_SUCCESSFUL;
|
||||
|
||||
2
c/src/lib/libcpu/powerpc/mpc8260/include/.cvsignore
Normal file
2
c/src/lib/libcpu/powerpc/mpc8260/include/.cvsignore
Normal file
@@ -0,0 +1,2 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
2
c/src/lib/libcpu/powerpc/mpc8xx/include/.cvsignore
Normal file
2
c/src/lib/libcpu/powerpc/mpc8xx/include/.cvsignore
Normal file
@@ -0,0 +1,2 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
@@ -1,32 +1,3 @@
|
||||
2004-10-13 Eric Norum <norume@aps.anl.gov>
|
||||
|
||||
PR 688/bsps
|
||||
* rtc/rtc.h, rtc/mc146818a.c, rtc/mc146818a.h, rtc/mc146818a_ioreg.c:
|
||||
New files. Add libchip driver for MC146818A (and several
|
||||
Dallas Semiconductor) TOD chips.
|
||||
|
||||
2004-10-13 Eric Norum <norume@aps.anl.gov>
|
||||
|
||||
PR 686/networking
|
||||
* network/if_fxp.c: Fix lockup in if_fxp.c, add additional device code.
|
||||
|
||||
2004-04-09 Greg Menke <gregory.menke@gsfc.nasa.gov>
|
||||
|
||||
PR 607/networking
|
||||
* network/dec21140.c: Made PCI configuration minimum sane instead
|
||||
of fully specifying unused PCI features.
|
||||
|
||||
2004-05-21 Till Strauman <strauman@slac.stanford.edu>
|
||||
|
||||
PR 625/networking
|
||||
* network/dec21140.c: Prevent name clashes by making 'ld_le32()' etc.
|
||||
static inlines. Let dec21140 attach routine return an error rather
|
||||
than panic if no chip is detected (thus allowing for probing).
|
||||
* network/elnk.c: Let elnk bail out if autoneg never completes
|
||||
instead of looping forever. Avoid divide by zero (crashed my PC).
|
||||
* network/if_fxp.c: Enable more fxp chip variants but warn that
|
||||
they are UNTESTED.
|
||||
|
||||
2003-09-26 Cedric Aubert <cedric_aubert@yahoo.fr>
|
||||
|
||||
PR 499/rtems_misc
|
||||
|
||||
@@ -243,12 +243,12 @@ extern void Wait_X_ms( unsigned int timeToWait );
|
||||
#define rtems_bsp_delay_in_bus_cycles(cycle) Wait_X_ms( cycle/100 )
|
||||
#define CPU_CACHE_ALIGNMENT_FOR_BUFFER PG_SIZE
|
||||
|
||||
static inline void st_le32(volatile unsigned32 *addr, unsigned32 value)
|
||||
inline void st_le32(volatile unsigned32 *addr, unsigned32 value)
|
||||
{
|
||||
*(addr)=value ;
|
||||
}
|
||||
|
||||
static inline unsigned32 ld_le32(volatile unsigned32 *addr)
|
||||
inline unsigned32 ld_le32(volatile unsigned32 *addr)
|
||||
{
|
||||
return(*addr);
|
||||
}
|
||||
@@ -1061,10 +1061,7 @@ rtems_dec21140_driver_attach (struct rtems_bsdnet_ifconfig *config, int attach)
|
||||
if ( diag == PCIB_ERR_SUCCESS)
|
||||
printk( "DEC/Intel 21143 PCI network card found\n" );
|
||||
else
|
||||
{
|
||||
printk("No DEC/Intel 21140/3 PCI network card found !!\n");
|
||||
return 0;
|
||||
}
|
||||
rtems_panic("DEC PCI network card not found !!\n");
|
||||
}
|
||||
#endif
|
||||
#if defined(__PPC)
|
||||
@@ -1173,7 +1170,8 @@ rtems_dec21140_driver_attach (struct rtems_bsdnet_ifconfig *config, int attach)
|
||||
PCI_BASE_ADDRESS_1,
|
||||
&lvalue);
|
||||
|
||||
tmp = (unsigned int)(lvalue & (unsigned int)(~MEM_MASK)) + (unsigned int)PCI_MEM_BASE;
|
||||
tmp = (unsigned int)(lvalue & (unsigned int)(~MEM_MASK))
|
||||
+ (unsigned int)PCI_MEM_BASE;
|
||||
|
||||
sc->base = (unsigned int *)(tmp);
|
||||
|
||||
@@ -1192,9 +1190,11 @@ rtems_dec21140_driver_attach (struct rtems_bsdnet_ifconfig *config, int attach)
|
||||
#if defined(__PPC)
|
||||
pci_write_config_word(pbus, pdev, pfun,
|
||||
PCI_COMMAND,
|
||||
(unsigned16) ( PCI_COMMAND_IO |
|
||||
PCI_COMMAND_MEMORY |
|
||||
PCI_COMMAND_MASTER ) );
|
||||
(unsigned16) ( PCI_COMMAND_MEMORY |
|
||||
PCI_COMMAND_MASTER |
|
||||
PCI_COMMAND_INVALIDATE |
|
||||
PCI_COMMAND_WAIT |
|
||||
PCI_COMMAND_FAST_BACK ) );
|
||||
#endif
|
||||
#if defined(__i386__)
|
||||
pcib_conf_write16(signature, 0x04, ( 0x2 | 0x4 | 0x10 | 0x80 | 0x200) );
|
||||
|
||||
@@ -204,12 +204,12 @@ extern void Wait_X_ms( unsigned int timeToWait );
|
||||
#define rtems_bsp_delay_in_bus_cycles(cycle) Wait_X_ms( cycle/100 )
|
||||
#define CPU_CACHE_ALIGNMENT_FOR_BUFFER PG_SIZE
|
||||
|
||||
static inline void st_le32(volatile unsigned32 *addr, unsigned32 value)
|
||||
inline void st_le32(volatile unsigned32 *addr, unsigned32 value)
|
||||
{
|
||||
*(addr)=value ;
|
||||
}
|
||||
|
||||
static inline unsigned32 ld_le32(volatile unsigned32 *addr)
|
||||
inline unsigned32 ld_le32(volatile unsigned32 *addr)
|
||||
{
|
||||
return(*addr);
|
||||
}
|
||||
@@ -2669,9 +2669,7 @@ elnk_init (void *arg)
|
||||
xl_miibus_writereg(sc, 0x18, MII_ANAR, ANAR_10 | ANAR_TX | ANAR_10_FD | ANAR_TX_FD ); /* ANAR_T4 */
|
||||
xl_miibus_writereg(sc, 0x18, MII_BMCR, BMCR_STARTNEG | BMCR_AUTOEN );
|
||||
|
||||
|
||||
for (i=0; ((sr = xl_miibus_readreg(sc, 0x18, MII_BMSR)) & BMSR_ACOMP) == 0 && i < 20; i++)
|
||||
DELAY(10000);
|
||||
while( ((sr = xl_miibus_readreg(sc, 0x18, MII_BMSR)) & BMSR_ACOMP) == 0 );
|
||||
}
|
||||
|
||||
|
||||
@@ -2999,7 +2997,7 @@ elnk_stats (struct elnk_softc *sc)
|
||||
printf(" interrupts:%-9d txcmp_ints:%-5d avg_chain_len:%-4d\n",
|
||||
sc->xl_stats.device_interrupts,
|
||||
sc->xl_stats.txcomplete_ints,
|
||||
numLengths ? (totalLengths / numLengths) : -1 );
|
||||
(totalLengths / numLengths) );
|
||||
}
|
||||
|
||||
printf(" carrier_lost:%-5d sqe_errs:%-5d\n",
|
||||
@@ -3122,6 +3120,8 @@ struct el_boards
|
||||
int pbus,pdev,pfun, vid, did, tindex;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Attach an ELNK driver to the system
|
||||
*/
|
||||
|
||||
@@ -182,11 +182,8 @@ static u_char fxp_cb_config_template[] = {
|
||||
struct fxp_ident {
|
||||
u_int16_t devid;
|
||||
char *name;
|
||||
int warn;
|
||||
};
|
||||
|
||||
#define UNTESTED 1
|
||||
|
||||
/*
|
||||
* Claim various Intel PCI device identifiers for this driver. The
|
||||
* sub-vendor and sub-device field are extensively used to identify
|
||||
@@ -194,20 +191,28 @@ struct fxp_ident {
|
||||
* them.
|
||||
*/
|
||||
static struct fxp_ident fxp_ident_table[] = {
|
||||
{ 0x1229, "Intel Pro 10/100B/100+ Ethernet", UNTESTED },
|
||||
{ 0x2449, "Intel Pro/100 Ethernet", UNTESTED },
|
||||
{ 0x1209, "Intel Embedded 10/100 Ethernet", 0 },
|
||||
{ 0x1029, "Intel Pro/100 Ethernet", UNTESTED },
|
||||
{ 0x1030, "Intel Pro/100 Ethernet", 0 },
|
||||
{ 0x1031, "Intel Pro/100 Ethernet", UNTESTED },
|
||||
{ 0x1032, "Intel Pro/100 Ethernet", UNTESTED },
|
||||
{ 0x1033, "Intel Pro/100 Ethernet", UNTESTED },
|
||||
{ 0x1034, "Intel Pro/100 Ethernet", UNTESTED },
|
||||
{ 0x1035, "Intel Pro/100 Ethernet", UNTESTED },
|
||||
{ 0x1036, "Intel Pro/100 Ethernet", UNTESTED },
|
||||
{ 0x1037, "Intel Pro/100 Ethernet", UNTESTED },
|
||||
{ 0x1038, "Intel Pro/100 Ethernet", UNTESTED },
|
||||
{ 0x103B, "Intel Pro/100 Ethernet (82801BD PRO/100 VM (LOM))", 0 },
|
||||
#ifdef NOTUSED
|
||||
/* currently untested */
|
||||
{ 0x1229, "Intel Pro 10/100B/100+ Ethernet" },
|
||||
{ 0x2449, "Intel Pro/100 Ethernet" },
|
||||
#endif
|
||||
{ 0x1209, "Intel Embedded 10/100 Ethernet" },
|
||||
#ifdef NOTUSED
|
||||
/* currently untested */
|
||||
{ 0x1029, "Intel Pro/100 Ethernet" },
|
||||
#endif
|
||||
{ 0x1030, "Intel Pro/100 Ethernet" },
|
||||
#ifdef NOTUSED
|
||||
/* currently untested */
|
||||
{ 0x1031, "Intel Pro/100 Ethernet" },
|
||||
{ 0x1032, "Intel Pro/100 Ethernet" },
|
||||
{ 0x1033, "Intel Pro/100 Ethernet" },
|
||||
{ 0x1034, "Intel Pro/100 Ethernet" },
|
||||
{ 0x1035, "Intel Pro/100 Ethernet" },
|
||||
{ 0x1036, "Intel Pro/100 Ethernet" },
|
||||
{ 0x1037, "Intel Pro/100 Ethernet" },
|
||||
{ 0x1038, "Intel Pro/100 Ethernet" },
|
||||
#endif
|
||||
{ 0, NULL },
|
||||
};
|
||||
|
||||
@@ -468,13 +473,8 @@ rtems_fxp_attach(struct rtems_bsdnet_ifconfig *config, int attaching)
|
||||
DBGLVL_PRINTK(2,"fxp_attach: find_devid returned %d "
|
||||
"and pci signature 0x%x\n",
|
||||
i,sc->pci_signature);
|
||||
if (PCIB_ERR_SUCCESS == i) {
|
||||
if ( UNTESTED == fxp_ident_table[j].warn ) {
|
||||
device_printf(dev,"WARNING: this chip version has NOT been reported to work under RTEMS yet.\n");
|
||||
device_printf(dev," If it works OK, report it as tested in 'c/src/libchip/network/if_fxp.c'\n");
|
||||
}
|
||||
if (PCIB_ERR_SUCCESS == i)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1681,17 +1681,13 @@ fxp_init(void *xsc)
|
||||
struct fxp_cb_tx *txp;
|
||||
int i, prm, s;
|
||||
|
||||
rtems_task_wake_after(100);
|
||||
DBGLVL_PRINTK(2,"fxp_init called\n");
|
||||
|
||||
s = splimp();
|
||||
/*
|
||||
* Cancel any pending I/O
|
||||
*/
|
||||
/*
|
||||
* Add line suggested by "Eugene Denisov" <dea@sendmail.ru>
|
||||
* on Tue, 16 Mar 2004 13:10:15 +0300
|
||||
*/
|
||||
sc->stat_ch = fxp_timeout_stopped;
|
||||
fxp_stop(sc);
|
||||
|
||||
prm = (ifp->if_flags & IFF_PROMISC) ? 1 : 0;
|
||||
|
||||
@@ -10,12 +10,11 @@ LIB = $(ARCH)/$(LIBNAME).a
|
||||
|
||||
C_FILES = rtcprobe.c icm7170.c icm7170_reg.c icm7170_reg2.c icm7170_reg4.c \
|
||||
icm7170_reg8.c m48t08.c m48t08_reg.c m48t08_reg2.c m48t08_reg4.c \
|
||||
m48t08_reg8.c \
|
||||
mc146818a.c mc146818a_ioreg.c
|
||||
m48t08_reg8.c
|
||||
|
||||
OBJS = $(C_FILES:%.c=$(ARCH)/%.$(OBJEXT))
|
||||
|
||||
include_libchip_HEADERS = rtc.h icm7170.h m48t08.h mc146818a.h
|
||||
include_libchip_HEADERS = rtc.h icm7170.h m48t08.h
|
||||
|
||||
include $(top_srcdir)/../../../automake/compile.am
|
||||
include $(top_srcdir)/../../../automake/lib.am
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
The mc146818a driver supports:
|
||||
Motorola
|
||||
MC146818A
|
||||
MC146818B
|
||||
Dallas Semiconductor
|
||||
DS12885
|
||||
DS12887
|
||||
DS1685
|
||||
DS1687
|
||||
This is the Time-of-Day chip used in 'IBM-PC/AT compatible' machines.
|
||||
@@ -1,179 +0,0 @@
|
||||
/*
|
||||
* This file interfaces with the real-time clock found in
|
||||
* a Motorola MC146818A (common on PC hardware)
|
||||
*
|
||||
* Year 2K Notes:
|
||||
*
|
||||
* This chip only uses a two digit field to store the year. This
|
||||
* code uses the RTEMS Epoch as a pivot year. This lets us map the
|
||||
* two digit year field as follows:
|
||||
*
|
||||
* + two digit years 0-87 are mapped to 2000-2087.
|
||||
* + two digit years 88-99 are mapped to 1988-1999.
|
||||
*
|
||||
* This is less than the time span supported by RTEMS.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
#include <rtems.h>
|
||||
#include <libchip/rtc.h>
|
||||
#include <libchip/mc146818a.h>
|
||||
#include <bsp.h>
|
||||
|
||||
#define From_BCD( _x ) ((((_x) >> 4) * 10) + ((_x) & 0x0F))
|
||||
#define To_BCD( _x ) ((((_x) / 10) << 4) + ((_x) % 10))
|
||||
|
||||
/*
|
||||
* See if chip is present
|
||||
*/
|
||||
boolean mc146818a_probe(
|
||||
int minor
|
||||
)
|
||||
{
|
||||
unsigned32 mc146818a;
|
||||
getRegister_f getReg;
|
||||
unsigned32 value;
|
||||
|
||||
/*
|
||||
* Verify that chip is present and that time is valid
|
||||
*/
|
||||
mc146818a = RTC_Table[ minor ].ulCtrlPort1;
|
||||
getReg = RTC_Table[ minor ].getRegister;
|
||||
value = (*getReg)( mc146818a, MC146818A_STATUSD );
|
||||
if ((value == 0) || (value == 0xFF))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize chip
|
||||
*/
|
||||
void mc146818a_initialize(
|
||||
int minor
|
||||
)
|
||||
{
|
||||
unsigned32 mc146818a;
|
||||
getRegister_f getReg;
|
||||
setRegister_f setReg;
|
||||
|
||||
mc146818a = RTC_Table[ minor ].ulCtrlPort1;
|
||||
getReg = RTC_Table[ minor ].getRegister;
|
||||
setReg = RTC_Table[ minor ].setRegister;
|
||||
|
||||
(*setReg)( mc146818a, MC146818A_STATUSA, MC146818ASA_DIVIDER|MC146818ASA_1024 );
|
||||
(*setReg)( mc146818a, MC146818A_STATUSB, MC146818ASB_24HR );
|
||||
}
|
||||
|
||||
/*
|
||||
* Read time from chip
|
||||
*/
|
||||
int mc146818a_get_time(
|
||||
int minor,
|
||||
rtems_time_of_day *time
|
||||
)
|
||||
{
|
||||
unsigned32 mc146818a;
|
||||
getRegister_f getReg;
|
||||
unsigned32 value;
|
||||
rtems_interrupt_level level;
|
||||
|
||||
mc146818a = RTC_Table[ minor ].ulCtrlPort1;
|
||||
getReg = RTC_Table[ minor ].getRegister;
|
||||
|
||||
/*
|
||||
* No time if power failed
|
||||
*/
|
||||
if (((*getReg)( mc146818a, MC146818A_STATUSD ) & MC146818ASD_PWR) == 0)
|
||||
return -1;
|
||||
|
||||
/*
|
||||
* Wait for time update to complete
|
||||
*/
|
||||
rtems_interrupt_disable( level );
|
||||
while (((*getReg)( mc146818a, MC146818A_STATUSA ) & MC146818ASA_TUP) != 0) {
|
||||
rtems_interrupt_flash( level );
|
||||
}
|
||||
|
||||
/*
|
||||
* Read the time (we have at least 244 usec to do this)
|
||||
*/
|
||||
value = (*getReg)( mc146818a, MC146818A_YEAR );
|
||||
value = From_BCD( value );
|
||||
if ( value < 88 )
|
||||
time->year = 2000 + value;
|
||||
else
|
||||
time->year = 1900 + value;
|
||||
|
||||
value = (*getReg)( mc146818a, MC146818A_MONTH );
|
||||
time->month = From_BCD( value );
|
||||
|
||||
value = (*getReg)( mc146818a, MC146818A_DAY );
|
||||
time->day = From_BCD( value );
|
||||
|
||||
value = (*getReg)( mc146818a, MC146818A_HRS );
|
||||
time->hour = From_BCD( value );
|
||||
|
||||
value = (*getReg)( mc146818a, MC146818A_MIN );
|
||||
time->minute = From_BCD( value );
|
||||
|
||||
value = (*getReg)( mc146818a, MC146818A_SEC );
|
||||
rtems_interrupt_enable( level );
|
||||
time->second = From_BCD( value );
|
||||
time->ticks = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set time into chip
|
||||
*/
|
||||
int mc146818a_set_time(
|
||||
int minor,
|
||||
rtems_time_of_day *time
|
||||
)
|
||||
{
|
||||
unsigned32 mc146818a;
|
||||
getRegister_f getReg;
|
||||
setRegister_f setReg;
|
||||
|
||||
mc146818a = RTC_Table[ minor ].ulCtrlPort1;
|
||||
getReg = RTC_Table[ minor ].getRegister;
|
||||
setReg = RTC_Table[ minor ].setRegister;
|
||||
|
||||
/*
|
||||
* Stop the RTC
|
||||
*/
|
||||
(*setReg)( mc146818a, MC146818A_STATUSB, MC146818ASB_HALT|MC146818ASB_24HR );
|
||||
|
||||
if ( time->year >= 2088 )
|
||||
rtems_fatal_error_occurred( RTEMS_INVALID_NUMBER );
|
||||
|
||||
(*setReg)( mc146818a, MC146818A_YEAR, To_BCD(time->year % 100) );
|
||||
(*setReg)( mc146818a, MC146818A_MONTH, To_BCD(time->month) );
|
||||
(*setReg)( mc146818a, MC146818A_DAY, To_BCD(time->day) );
|
||||
(*setReg)( mc146818a, MC146818A_HRS, To_BCD(time->hour) );
|
||||
(*setReg)( mc146818a, MC146818A_MIN, To_BCD(time->minute) );
|
||||
(*setReg)( mc146818a, MC146818A_SEC, To_BCD(time->second) );
|
||||
|
||||
/*
|
||||
* Restart the RTC
|
||||
*/
|
||||
(*setReg)( mc146818a, MC146818A_STATUSB, MC146818ASB_24HR );
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Driver function table
|
||||
*/
|
||||
rtc_fns mc146818a_fns = {
|
||||
mc146818a_initialize,
|
||||
mc146818a_get_time,
|
||||
mc146818a_set_time
|
||||
};
|
||||
@@ -1,70 +0,0 @@
|
||||
/*
|
||||
* This file contains the definitions for the following real-time clocks:
|
||||
*
|
||||
* + Motorola MC146818A
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __LIBCHIP_MC146818A_h
|
||||
#define __LIBCHIP_MC146818A_h
|
||||
|
||||
/*
|
||||
* Register addresses within chip
|
||||
*/
|
||||
#define MC146818A_SEC 0x00 /* seconds */
|
||||
#define MC146818A_SECALRM 0x01 /* seconds alarm */
|
||||
#define MC146818A_MIN 0x02 /* minutes */
|
||||
#define MC146818A_MINALRM 0x03 /* minutes alarm */
|
||||
#define MC146818A_HRS 0x04 /* hours */
|
||||
#define MC146818A_HRSALRM 0x05 /* hours alarm */
|
||||
#define MC146818A_WDAY 0x06 /* week day */
|
||||
#define MC146818A_DAY 0x07 /* day of month */
|
||||
#define MC146818A_MONTH 0x08 /* month of year */
|
||||
#define MC146818A_YEAR 0x09 /* month of year */
|
||||
|
||||
#define MC146818A_STATUSA 0x0a /* status register A */
|
||||
#define MC146818ASA_TUP 0x80 /* time update in progress */
|
||||
#define MC146818ASA_DIVIDER 0x20 /* divider for 32768 crystal */
|
||||
#define MC146818ASA_1024 0x06 /* divide to 1024 Hz */
|
||||
|
||||
#define MC146818A_STATUSB 0x0b /* status register B */
|
||||
#define MC146818ASB_DST 0x01 /* Daylight Savings Time */
|
||||
#define MC146818ASB_24HR 0x02 /* 0 = 12 hours, 1 = 24 hours */
|
||||
#define MC146818ASB_HALT 0x80 /* stop clock updates */
|
||||
|
||||
#define MC146818A_STATUSD 0x0d /* status register D */
|
||||
#define MC146818ASD_PWR 0x80 /* clock lost power */
|
||||
|
||||
|
||||
/*
|
||||
* Driver function table
|
||||
*/
|
||||
extern rtc_fns mc146818a_fns;
|
||||
boolean mc146818a_probe(
|
||||
int minor
|
||||
);
|
||||
|
||||
/*
|
||||
* Default register access routines
|
||||
*/
|
||||
unsigned32 mc146818a_get_register(
|
||||
unsigned32 ulCtrlPort,
|
||||
unsigned8 ucRegNum
|
||||
);
|
||||
|
||||
void mc146818a_set_register(
|
||||
unsigned32 ulCtrlPort,
|
||||
unsigned8 ucRegNum,
|
||||
unsigned32 ucData
|
||||
);
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
@@ -1,45 +0,0 @@
|
||||
/*
|
||||
* This file contains a typical set of register access routines which may be
|
||||
* used with the MC146818A chip if accesses to the chip are as follows:
|
||||
*
|
||||
* + registers are in I/O space
|
||||
* + registers are accessed as bytes
|
||||
* + registers are only byte-aligned (no address gaps)
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <rtems.h>
|
||||
#include <bsp.h>
|
||||
|
||||
unsigned32 mc146818a_get_register(
|
||||
unsigned32 ulCtrlPort,
|
||||
unsigned8 ucRegNum
|
||||
)
|
||||
{
|
||||
unsigned8 val;
|
||||
unsigned8 tmp;
|
||||
|
||||
outport_byte( ulCtrlPort, ucRegNum );
|
||||
inport_byte( 0x84, tmp ); /* Hack a delay to give chip time to settle */
|
||||
inport_byte( ulCtrlPort+1, val );
|
||||
inport_byte( 0x84, tmp ); /* Hack a delay to give chip time to settle */
|
||||
return val;
|
||||
}
|
||||
|
||||
void mc146818a_set_register(
|
||||
unsigned32 ulCtrlPort,
|
||||
unsigned8 ucRegNum,
|
||||
unsigned32 ucData
|
||||
)
|
||||
{
|
||||
outport_byte( ulCtrlPort, ucRegNum );
|
||||
outport_byte( ulCtrlPort+1, (unsigned8)ucData );
|
||||
}
|
||||
@@ -32,9 +32,7 @@ typedef struct _rtc_fns {
|
||||
typedef enum {
|
||||
RTC_M48T08, /* SGS-Thomsom M48T08 or M48T18 */
|
||||
RTC_ICM7170, /* Harris ICM-7170 */
|
||||
RTC_CUSTOM, /* BSP specific driver */
|
||||
RTC_MC146818A /* Motorola MC146818A */
|
||||
|
||||
RTC_CUSTOM /* BSP specific driver */
|
||||
} rtc_devs;
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
2004-04-03 Wilfried Busalski <w.busalski@lancier-monitoring.de>
|
||||
|
||||
PR 599/pppd
|
||||
* pppd/chat.c: Fre memory that is allocated to fix leak.
|
||||
|
||||
2003-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: Use rtems-bugs@rtems.com as bug report email address.
|
||||
|
||||
@@ -82,18 +82,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
Fixes and some Changes by Wilfried Busalski Lancier-Monitoring GmbH Germany
|
||||
wilfried.busalski@muenster.de
|
||||
|
||||
Fixes: put_string() Free memory allocated by clean()
|
||||
get_string() Free memory allocated by clean()
|
||||
chat_main() Will Distroy's no more the chat-script
|
||||
getnextcommand() sepatator changed to '@'
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
@@ -221,53 +209,43 @@ char *s;
|
||||
return dup_mem(s, strlen (s) + 1);
|
||||
}
|
||||
|
||||
char *getnextcommand(char *string,char *buff)
|
||||
char *getnextcommand(char **string)
|
||||
{
|
||||
char *token;
|
||||
int len;
|
||||
|
||||
token=strchr(string,'@');
|
||||
if (token==NULL){
|
||||
char *buf=*string,*res;
|
||||
res=strchr(buf,'|');
|
||||
if (res==NULL)
|
||||
return NULL;
|
||||
}
|
||||
len=token-string;
|
||||
if(len > 78 ){
|
||||
len=78;
|
||||
}
|
||||
memcpy(buff,string,len);
|
||||
buff[len]=0;
|
||||
return(token+1);
|
||||
*res='\0';
|
||||
*string=res+1;
|
||||
return buf;
|
||||
}
|
||||
|
||||
int chatmain(int fd, int mode, char *pScript)
|
||||
{
|
||||
char arg[80];
|
||||
char *script;
|
||||
char *arg;
|
||||
|
||||
/* initialize exit code */
|
||||
exit_code = 0;
|
||||
ttyfd = fd;
|
||||
|
||||
script=pScript;
|
||||
|
||||
if ( debug ) {
|
||||
dbglog("chat_main: %s\n", script);
|
||||
dbglog("chat_main: %s\n", pScript);
|
||||
}
|
||||
|
||||
/* get first expect string */
|
||||
script = getnextcommand(script,arg);
|
||||
while (( script != NULL ) && ( exit_code == 0 )) {
|
||||
arg = getnextcommand(&pScript);
|
||||
while (( arg != NULL ) && ( exit_code == 0 )) {
|
||||
/* process the expect string */
|
||||
chat_expect(arg);
|
||||
if ( exit_code == 0 ) {
|
||||
/* get the next send string */
|
||||
script = getnextcommand(script,arg);
|
||||
if ( script != NULL ) {
|
||||
arg = getnextcommand(&pScript);
|
||||
if ( arg != NULL ) {
|
||||
/* process the send string */
|
||||
chat_send(arg);
|
||||
|
||||
/* get the next expect string */
|
||||
script = getnextcommand(script,arg);
|
||||
arg = getnextcommand(&pScript);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -517,43 +495,43 @@ char *s;
|
||||
char *reply;
|
||||
|
||||
if (strcmp(s, "HANGUP") == 0) {
|
||||
++hup_next;
|
||||
++hup_next;
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(s, "ABORT") == 0) {
|
||||
++abort_next;
|
||||
return;
|
||||
++abort_next;
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(s, "CLR_ABORT") == 0) {
|
||||
++clear_abort_next;
|
||||
return;
|
||||
++clear_abort_next;
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(s, "REPORT") == 0) {
|
||||
++report_next;
|
||||
return;
|
||||
++report_next;
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(s, "CLR_REPORT") == 0) {
|
||||
++clear_report_next;
|
||||
return;
|
||||
++clear_report_next;
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(s, "TIMEOUT") == 0) {
|
||||
++timeout_next;
|
||||
return;
|
||||
++timeout_next;
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(s, "ECHO") == 0) {
|
||||
++echo_next;
|
||||
return;
|
||||
++echo_next;
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(s, "SAY") == 0) {
|
||||
++say_next;
|
||||
return;
|
||||
++say_next;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -620,11 +598,11 @@ register char *s;
|
||||
/* char file_data[STR_LEN]; */
|
||||
|
||||
if (say_next) {
|
||||
say_next = 0;
|
||||
s = clean(s, 1);
|
||||
write(2, s, strlen(s));
|
||||
say_next = 0;
|
||||
s = clean(s, 1);
|
||||
write(2, s, strlen(s));
|
||||
free(s);
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
if (hup_next) {
|
||||
@@ -639,56 +617,53 @@ register char *s;
|
||||
}
|
||||
|
||||
if (abort_next) {
|
||||
char *s1;
|
||||
char *s1;
|
||||
|
||||
abort_next = 0;
|
||||
if ( n_aborts < MAX_ABORTS ) {
|
||||
s1 = clean(s, 0);
|
||||
if (( strlen(s1) <= strlen(s) ) && ( strlen(s1) < sizeof(fail_buffer))) {
|
||||
abort_string[n_aborts++] = s1;
|
||||
}
|
||||
free(s1);
|
||||
}
|
||||
return;
|
||||
abort_next = 0;
|
||||
if ( n_aborts < MAX_ABORTS ) {
|
||||
s1 = clean(s, 0);
|
||||
if (( strlen(s1) <= strlen(s) ) &&
|
||||
( strlen(s1) < sizeof(fail_buffer))) {
|
||||
|
||||
abort_string[n_aborts++] = s1;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (clear_abort_next) {
|
||||
clear_abort_next = 0;
|
||||
return;
|
||||
clear_abort_next = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (report_next) {
|
||||
report_next = 0;
|
||||
return;
|
||||
report_next = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (clear_report_next) {
|
||||
clear_report_next = 0;
|
||||
return;
|
||||
clear_report_next = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (timeout_next) {
|
||||
timeout_next = 0;
|
||||
timeout = atoi(s);
|
||||
timeout_next = 0;
|
||||
timeout = atoi(s);
|
||||
|
||||
if (timeout <= 0){
|
||||
timeout = DEFAULT_CHAT_TIMEOUT;
|
||||
}
|
||||
return;
|
||||
if (timeout <= 0)
|
||||
timeout = DEFAULT_CHAT_TIMEOUT;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(s, "EOT") == 0){
|
||||
s = "^D\\c";
|
||||
}
|
||||
else{
|
||||
if (strcmp(s, "BREAK") == 0){
|
||||
s = "\\K\\c";
|
||||
}
|
||||
if (strcmp(s, "EOT") == 0)
|
||||
s = "^D\\c";
|
||||
else if (strcmp(s, "BREAK") == 0)
|
||||
s = "\\K\\c";
|
||||
|
||||
if (!put_string(s)) {
|
||||
exit_code = 2;
|
||||
}
|
||||
}
|
||||
if (!put_string(s)) {
|
||||
exit_code = 2;
|
||||
}
|
||||
}
|
||||
|
||||
static int get_char()
|
||||
@@ -715,14 +690,16 @@ int c;
|
||||
{
|
||||
char ch = c;
|
||||
|
||||
return(write(ttyfd, &ch, 1));
|
||||
write(ttyfd, &ch, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int write_char (c)
|
||||
int c;
|
||||
{
|
||||
if (put_char(c) < 1) {
|
||||
return (0);
|
||||
if (put_char(c) < 0) {
|
||||
return (0);
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
@@ -730,49 +707,41 @@ int c;
|
||||
static int put_string (s)
|
||||
register char *s;
|
||||
{
|
||||
char *out,*free_ptr=0;
|
||||
|
||||
quiet = 0;
|
||||
out = free_ptr = clean(s, 1);
|
||||
while (*out) {
|
||||
register char c = *out++;
|
||||
s = clean(s, 1);
|
||||
while (*s) {
|
||||
register char c = *s++;
|
||||
|
||||
if (c != '\\') {
|
||||
if (!write_char (c)){
|
||||
free(free_ptr);
|
||||
return 0;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (c != '\\') {
|
||||
if (!write_char (c))
|
||||
return 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
c = *out++;
|
||||
c = *s++;
|
||||
switch (c) {
|
||||
case 'd':
|
||||
sleep(1);
|
||||
break;
|
||||
|
||||
switch (c) {
|
||||
case 'd':
|
||||
sleep(1);
|
||||
break;
|
||||
case 'K':
|
||||
break_sequence();
|
||||
break;
|
||||
|
||||
case 'K':
|
||||
break_sequence();
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
case 'p':
|
||||
#if 0 /* FIXME!!! */
|
||||
usleep(10000); /* 1/100th of a second (arg is microseconds) */
|
||||
usleep(10000); /* 1/100th of a second (arg is microseconds) */
|
||||
#else
|
||||
sleep(1);
|
||||
sleep(1);
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
if (!write_char (c)){
|
||||
free(free_ptr);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (!write_char (c))
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
free(free_ptr);
|
||||
|
||||
return (1);
|
||||
}
|
||||
@@ -780,13 +749,12 @@ register char *s;
|
||||
/*
|
||||
* 'Wait for' this string to appear on this file descriptor.
|
||||
*/
|
||||
static int get_string(in_string)
|
||||
register char *in_string;
|
||||
static int get_string(string)
|
||||
register char *string;
|
||||
{
|
||||
int c, len, minlen;
|
||||
register char *s = temp2, *end = s + STR_LEN;
|
||||
char *logged = temp2;
|
||||
char *string=0;
|
||||
struct termios tios;
|
||||
|
||||
memset(temp2, 0, sizeof(temp2));
|
||||
@@ -796,14 +764,13 @@ register char *in_string;
|
||||
tios.c_cc[VTIME] = timeout*10/MAX_TIMEOUTS;
|
||||
tcsetattr(ttyfd, TCSANOW, &tios);
|
||||
|
||||
string = clean(in_string, 0);
|
||||
string = clean(string, 0);
|
||||
len = strlen(string);
|
||||
minlen = (len > sizeof(fail_buffer)? len: sizeof(fail_buffer)) - 1;
|
||||
|
||||
if (len > STR_LEN) {
|
||||
exit_code = 1;
|
||||
free(string);
|
||||
return 0;
|
||||
exit_code = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (len == 0) {
|
||||
@@ -813,19 +780,12 @@ register char *in_string;
|
||||
while ( (c = get_char()) >= 0) {
|
||||
int n, abort_len;
|
||||
|
||||
if(c == '\n' || c == '\r'){
|
||||
s = temp2;
|
||||
*s=0;
|
||||
}
|
||||
else{
|
||||
*s++ = c;
|
||||
*s=0;
|
||||
}
|
||||
*s++ = c;
|
||||
*s=0;
|
||||
|
||||
if (s - temp2 >= len &&
|
||||
c == string[len - 1] &&
|
||||
strncmp(s - len, string, len) == 0) {
|
||||
free(string);
|
||||
return (1);
|
||||
}
|
||||
|
||||
@@ -835,7 +795,6 @@ register char *in_string;
|
||||
|
||||
exit_code = n + 4;
|
||||
strcpy(fail_reason = fail_buffer, abort_string[n]);
|
||||
free(string);
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
@@ -852,7 +811,5 @@ register char *in_string;
|
||||
}
|
||||
|
||||
exit_code = 3;
|
||||
free(string);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,3 @@
|
||||
2004-03-05 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* psxmsgq01/init.c, psxtimer/psxtimer.c: Eliminate warning from
|
||||
previous patch.
|
||||
|
||||
2004-02-26 Sébastien Barré <sbarre@sdelcc.com>
|
||||
|
||||
PR 582/core
|
||||
* psxmsgq01/init.c, psxmsgq01/psxmsgq01.scn: Fix the POSIX message
|
||||
queue test so more of it runs now.
|
||||
|
||||
2003-09-04 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* psx01/init.c, psx01/system.h, psx01/task.c, psx02/init.c,
|
||||
|
||||
@@ -1004,13 +1004,10 @@ void verify_with_threads()
|
||||
int status;
|
||||
pthread_t id;
|
||||
Test_Message_t *ptr;
|
||||
#if 0
|
||||
unsigned int priority;
|
||||
char message[100];
|
||||
#endif
|
||||
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* Create a task then block until the task sends the message.
|
||||
* Task tests set attributes so one queue will have a thread
|
||||
@@ -1025,7 +1022,7 @@ void verify_with_threads()
|
||||
fatal_int_service_status( status, -1, "mq_receive error return status");
|
||||
fatal_posix_service_status( errno, EAGAIN, "mq_receive errno EAGAIN");
|
||||
print_current_time( "Init: ", "" );
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Create a task then block until the task sends the message.
|
||||
* Task tests set attributes so one queue will have a thread
|
||||
@@ -1038,11 +1035,8 @@ void verify_with_threads()
|
||||
Read_msg_from_que( BLOCKING, 0 ); /* Block until init writes */
|
||||
print_current_time( "Init: ", "" );
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* Fill the queue then create a task then block until the task receives a message.
|
||||
* Task tests set attributes so one queue will have a thread
|
||||
* blocked while attributes are changed.
|
||||
* Create a task then block until the task reads a message.
|
||||
*/
|
||||
|
||||
Start_Test( "multi-thread Task 4 Send Test" );
|
||||
@@ -1055,7 +1049,7 @@ void verify_with_threads()
|
||||
fatal_posix_service_status( errno, EAGAIN, "mq_send errno EAGAIN");
|
||||
verify_queues_full( "Init:" );
|
||||
empty_message_queues( "Init:" );
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Create a task then block until the task reads a message.
|
||||
*/
|
||||
|
||||
@@ -4,8 +4,8 @@ Init: mq_open - Create with maxmsg (-1) (EINVAL)
|
||||
Init: mq_open - Create with msgsize (-1) (EINVAL)
|
||||
Init: mq_open - Open new mq without create flag (ENOENT)
|
||||
Init: mq_open - Open with too long of a name (ENAMETOOLONG)
|
||||
Init: mq_open - SUCCESSFUL
|
||||
Init: mq_open - Create an Existing mq (EEXIST)
|
||||
Init: mq_open - SUCCESSFUL
|
||||
Init: mq_open - system is out of resources (ENFILE)
|
||||
Init: mq_close and mq_unlink (mq3...mqn) - SUCCESSFUL
|
||||
Init: Open Test Queues
|
||||
@@ -52,6 +52,7 @@ Init: Init: mq_timedreceive - on queue Qnoblock Init: 0 sec 0 us
|
||||
Init: Init: mq_timedreceive - on queue Qblock Init: 1 sec 0 us
|
||||
Init: Init: mq_timedreceive - on queue Qdefault Init: 1 sec 0 us
|
||||
_______________mq_open functionality
|
||||
Init: mq_open - Open an existing mq ( same id )
|
||||
_______________mq_notify
|
||||
Init: mq_notify - Unopened message queue (EBADF)
|
||||
_____mq_notify - notify when Qnoblock gets a message
|
||||
@@ -69,20 +70,38 @@ Init: mq_notify - Remove notification with null
|
||||
Init: Verify No Signal when send
|
||||
Init: mq_send - to Qnoblock msg: 12345678 priority 31
|
||||
waiting on any signal for 3 seconds.
|
||||
_______________multi-thread Task 4 Receive Test
|
||||
Init: mq_receive - Empty queue changes to non-blocking (EAGAIN)
|
||||
Task_4: Fri Jan 1 00:00:18 1988
|
||||
Task_4: Set queue to non-blocking
|
||||
Task_4: Return queue to blocking
|
||||
Task_4: pthread_exit
|
||||
Init: Fri Jan 1 00:00:18 1988
|
||||
_______________multi-thread Task 1 Test
|
||||
Task_1: Fri Jan 1 00:00:20 1988
|
||||
Task_1: Fri Jan 1 00:00:18 1988
|
||||
Task_1: mq_send - to Qblock msg: 12345678 priority 31
|
||||
Task_1: pthread_exit
|
||||
Init: Fri Jan 1 00:00:20 1988
|
||||
Init: Fri Jan 1 00:00:18 1988
|
||||
_______________multi-thread Task 4 Send Test
|
||||
Init: Verify Queues are empty
|
||||
Init: Fill Queues with messages
|
||||
Init: Verify Queues are full
|
||||
Init: mq_send - Full queue changes to non-blocking (EAGAIN)
|
||||
Task_4: Fri Jan 1 00:00:18 1988
|
||||
Task_4: Set queue to non-blocking
|
||||
Task_4: Return queue to blocking
|
||||
Task_4: pthread_exit
|
||||
Init: Verify Queues are full
|
||||
Init: Empty all Queues
|
||||
_______________multi-thread Task 2 Test
|
||||
Init: Verify Queues are empty
|
||||
Init: Fill Queues with messages
|
||||
Init: Verify Queues are full
|
||||
Init: mq_send - to Qblock msg: Last priority 32
|
||||
Task_2: Fri Jan 1 00:00:21 1988
|
||||
Task_2: Fri Jan 1 00:00:18 1988
|
||||
Task_2: Verify Queues are full
|
||||
Task_2: pthread_exit
|
||||
Init: Fri Jan 1 00:00:21 1988
|
||||
Init: Fri Jan 1 00:00:18 1988
|
||||
Init: Verify Queues are full
|
||||
Init: Empty all Queues
|
||||
_______________multi-thread Task 3 Test
|
||||
@@ -90,7 +109,7 @@ Init: Verify Queues are empty
|
||||
Init: Fill Queues with messages
|
||||
Init: Verify Queues are full
|
||||
Init: mq_send - Block while thread deletes queue (EBADF)
|
||||
Task_3: Fri Jan 1 00:00:21 1988
|
||||
Task_3: Fri Jan 1 00:00:18 1988
|
||||
_______________Unlink and Close All Files
|
||||
Task_3: pthread_exit
|
||||
*** END OF POSIX MESSAGE QUEUE TEST ***
|
||||
|
||||
@@ -328,7 +328,7 @@ void *POSIX_Init (
|
||||
params_c.period.tv_nsec = 000000000; /* nanoseconds */
|
||||
params_c.signo = SIGALRM;
|
||||
if (pthread_create (&tc, &attr, task_c, ¶ms_c) != 0) {
|
||||
perror ("Error in thread create for task c\n");
|
||||
perror ("Error in trhead create for task c\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +1,3 @@
|
||||
2004-03-30 David Querbach <querbach@realtime.bc.ca>
|
||||
|
||||
PR 595/tests
|
||||
* sp13/fillbuff.c, sp13/init.c, sp13/putbuff.c, sp13/system.h,
|
||||
sp13/task1.c, sp13/task2.c: Fill_buffer() in fillbuff.c overruns the
|
||||
supplied buffer due to confusion in the definition of MESSAGE_SIZE.
|
||||
Some files in the sp13 test treat MESSAGE_SIZE as a count of bytes,
|
||||
others treat it as a count of longs.
|
||||
|
||||
2004-03-30 David Querbach <querbach@realtime.bc.ca>
|
||||
|
||||
PR 596/tests
|
||||
* sp32/init.c: A missing definition of TEST_INIT before including
|
||||
<tmacros.h> means that buffered output will not work even if selected
|
||||
in buffer_test_io.h.
|
||||
|
||||
2003-12-16 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
PR 544/tests
|
||||
|
||||
@@ -21,19 +21,26 @@
|
||||
|
||||
#include "system.h"
|
||||
|
||||
#define MESSAGE_SIZE (sizeof(long) * 4)
|
||||
|
||||
void Fill_buffer(
|
||||
char *source,
|
||||
long *buffer
|
||||
)
|
||||
{
|
||||
char *p;
|
||||
int i, j;
|
||||
|
||||
int i;
|
||||
/*
|
||||
memcpy( buffer, source, 16 );
|
||||
*/
|
||||
p = source;
|
||||
for ( i = 0 ; i < MESSAGE_SIZE / sizeof(long) ; i++ ) {
|
||||
buffer[i] = 0;
|
||||
for ( j = sizeof(long) - 1; j >= 0; j-- ) {
|
||||
buffer[i] |= *p++ << (8 * j);
|
||||
}
|
||||
for ( i=0 ; i<MESSAGE_SIZE ; i++ ) {
|
||||
buffer[i] = *p++;
|
||||
buffer[i] <<= 8;
|
||||
buffer[i] |= *p++;
|
||||
buffer[i] <<= 8;
|
||||
buffer[i] |= *p++;
|
||||
buffer[i] <<= 8;
|
||||
buffer[i] |= *p++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
#define TEST_INIT
|
||||
#include "system.h"
|
||||
|
||||
#define MESSAGE_SIZE (sizeof(long) * 4)
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
)
|
||||
|
||||
@@ -20,18 +20,21 @@
|
||||
|
||||
#include "system.h"
|
||||
|
||||
#define MESSAGE_SIZE (4)
|
||||
|
||||
void Put_buffer(
|
||||
long *buffer
|
||||
)
|
||||
{
|
||||
int i, j;
|
||||
char c;
|
||||
|
||||
for ( i = 0; i < MESSAGE_SIZE / sizeof(long); i++ ) {
|
||||
for ( j = sizeof(long) - 1; j >= 0; j-- ) {
|
||||
if ( (c = (buffer[i] >> (8 * j)) & 0xFF) == 0 )
|
||||
return;
|
||||
printf( "%c", c );
|
||||
}
|
||||
int i;
|
||||
/*
|
||||
printf( "%16s", (char *)buffer );
|
||||
*/
|
||||
for ( i=0 ; i< MESSAGE_SIZE ; i++ ) {
|
||||
printf( "%c%c%c%c", (char) (buffer[i] >> 24),
|
||||
(char) (buffer[i] >> 16 & 0xff),
|
||||
(char) (buffer[i] >> 8 & 0xff),
|
||||
(char) (buffer[i] >> 0 & 0xff) );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -66,8 +66,4 @@ TEST_EXTERN rtems_name Task_name[ 4 ]; /* array of task names */
|
||||
TEST_EXTERN rtems_id Queue_id[ 4 ]; /* array of queue ids */
|
||||
TEST_EXTERN rtems_name Queue_name[ 4 ]; /* array of queue names */
|
||||
|
||||
/* test configuration */
|
||||
|
||||
#define MESSAGE_SIZE (sizeof(long) * 4) /* must be multiple of sizeof(long) */
|
||||
|
||||
/* end of include file */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user