diff options
-rw-r--r-- | c/src/lib/libcpu/m68k/ChangeLog | 8 | ||||
-rw-r--r-- | c/src/lib/libcpu/m68k/configure.ac | 19 | ||||
-rw-r--r-- | c/src/lib/libcpu/m68k/shared/misc/Makefile.am | 12 | ||||
-rw-r--r-- | c/src/lib/libcpu/m68k/shared/misc/m68kidle.c | 43 |
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 +} |