summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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
+}