summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/m68k
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2002-08-21 17:43:48 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2002-08-21 17:43:48 +0000
commit06a27bbf3296201d1c49fbf5ec1503f87a3e91e9 (patch)
tree0b26a2f216568632b510903fedf9207275ac0edf /c/src/lib/libcpu/m68k
parent2002-08-21 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-06a27bbf3296201d1c49fbf5ec1503f87a3e91e9.tar.bz2
2002-08-21 Joel Sherrill <joel@OARcorp.com>
* configure.ac, shared/misc/Makefile.am: PR217 required that the idle task be moved to libcpu so it could be more acutely aware of the CPU model. This file was modified to pick up the idle task from there. * shared/misc/m68kidle.c: New file.
Diffstat (limited to 'c/src/lib/libcpu/m68k')
-rw-r--r--c/src/lib/libcpu/m68k/ChangeLog8
-rw-r--r--c/src/lib/libcpu/m68k/configure.ac19
-rw-r--r--c/src/lib/libcpu/m68k/shared/misc/Makefile.am12
-rw-r--r--c/src/lib/libcpu/m68k/shared/misc/m68kidle.c43
4 files changed, 63 insertions, 19 deletions
diff --git a/c/src/lib/libcpu/m68k/ChangeLog b/c/src/lib/libcpu/m68k/ChangeLog
index efbeae21d8..c5f384fdf2 100644
--- a/c/src/lib/libcpu/m68k/ChangeLog
+++ b/c/src/lib/libcpu/m68k/ChangeLog
@@ -1,3 +1,11 @@
+2002-08-21 Joel Sherrill <joel@OARcorp.com>
+
+ * configure.ac, shared/misc/Makefile.am: PR217 required that the
+ idle task be moved to libcpu so it could be more acutely aware of
+ the CPU model. This file was modified to pick up the idle task
+ from there.
+ * shared/misc/m68kidle.c: New file.
+
2002-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* m68040/fpsp/Makefile.am: Use .$(OBJEXT) instead of .o.
diff --git a/c/src/lib/libcpu/m68k/configure.ac b/c/src/lib/libcpu/m68k/configure.ac
index e5bc37f05d..14c952e0c3 100644
--- a/c/src/lib/libcpu/m68k/configure.ac
+++ b/c/src/lib/libcpu/m68k/configure.ac
@@ -27,21 +27,8 @@ RTEMS_CANONICALIZE_TOOLS
RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
RTEMS_CHECK_BSP_CACHE(RTEMS_BSP)
-AM_CONDITIONAL(shared, test "$RTEMS_CPU_MODEL" = "m68020" \
-|| test "$RTEMS_CPU_MODEL" = "m68020" \
-|| test "$RTEMS_CPU_MODEL" = "m68030" \
-|| test "$RTEMS_CPU_MODEL" = "m68lc040" \
-|| test "$RTEMS_CPU_MODEL" = "m68040" \
-|| test "$RTEMS_CPU_MODEL" = "m68ec040" \
-|| test "$RTEMS_CPU_MODEL" = "m68lc040" \
-|| test "$RTEMS_CPU_MODEL" = "m68060" \
-|| test "$RTEMS_CPU_MODEL" = "m68340" \
-|| test "$RTEMS_CPU_MODEL" = "m68360" \
-|| test "$RTEMS_CPU_MODEL" = "m68331" \
-|| test "$RTEMS_CPU_MODEL" = "m68332" \
-|| test "$RTEMS_CPU_MODEL" = "mcpu32" \
-|| test "$RTEMS_CPU_MODEL" = "mcpu32p" \
-)
+# At this time all models should use the shared directory so do this
+AM_CONDITIONAL(shared, true)
AM_CONDITIONAL(m68040, test "$RTEMS_CPU_MODEL" = "m68040")
@@ -59,6 +46,8 @@ AM_CONDITIONAL(mcpu32p, test "$RTEMS_CPU_MODEL" = "m68360" \
|| test "$RTEMS_CPU_MODEL" = "mcpu32p" \
)
+AM_CONDITIONAL(mcf5272, test "$RTEMS_CPU_MODEL" = "mcf5272" )
+
case "$RTEMS_CPU_MODEL" in
mcf5206 ) AC_CONFIG_SUBDIRS([mcf5206]);;
*) ;;
diff --git a/c/src/lib/libcpu/m68k/shared/misc/Makefile.am b/c/src/lib/libcpu/m68k/shared/misc/Makefile.am
index 76db07349a..c11507e5fa 100644
--- a/c/src/lib/libcpu/m68k/shared/misc/Makefile.am
+++ b/c/src/lib/libcpu/m68k/shared/misc/Makefile.am
@@ -3,7 +3,7 @@
##
-C_FILES = memcpy.c
+C_FILES = memcpy.c m68kidle.c
C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.$(OBJEXT))
OBJS = $(C_O_FILES)
@@ -14,13 +14,17 @@ include $(top_srcdir)/../../../../../automake/lib.am
# gcc doesn't recognize difference between the cpu32 and cpu32+ so we have to
if mcpu32p
-MCPU32P_CPPFLAGS = -D__mcpu32p__
+M68K_CPPFLAGS = -D__mcpu32p__
endif
-AM_CPPFLAGS += $(MCPU32P_CPPFLAGS)
+if mcf5272
+M68K_CPPFLAGS = -Dmcf5272
+endif
+
+AM_CPPFLAGS += $(M68K_CPPFLAGS)
all-local: $(ARCH) $(OBJS)
-EXTRA_DIST = memcpy.c
+EXTRA_DIST = memcpy.c m68kidle.c
include $(top_srcdir)/../../../../../automake/local.am
diff --git a/c/src/lib/libcpu/m68k/shared/misc/m68kidle.c b/c/src/lib/libcpu/m68k/shared/misc/m68kidle.c
new file mode 100644
index 0000000000..16aaf504bb
--- /dev/null
+++ b/c/src/lib/libcpu/m68k/shared/misc/m68kidle.c
@@ -0,0 +1,43 @@
+/*
+ * Motorola MC68xxx Dependent Idle Body Source
+ *
+ * COPYRIGHT (c) 1989-2002.
+ * 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.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <rtems/system.h>
+#include <rtems/score/thread.h>
+
+
+/*PAGE
+ *
+ * _Thread_Idle_body
+ *
+ * This kernel routine is the idle thread. The idle thread runs any time
+ * no other thread is ready to run. This thread loops forever with
+ * interrupts enabled.
+ *
+ * Input parameters:
+ * ignored - this parameter is ignored
+ *
+ * Output parameters: NONE
+ */
+
+void _CPU_Thread_Idle_body( void )
+{
+#if defined(mcf5272)
+ for( ; ; ) {
+ asm volatile( "nop" );
+ asm volatile( "nop" );
+ }
+#else
+ for( ; ; )
+ asm volatile( "stop #0x3000" ); /* supervisor mode, all interrupts on */
+#endif
+}