From ca4060826dead6c97983821a3222238d86136a0c Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 15 Nov 2000 21:40:05 +0000 Subject: 2000-11-14 Jiri Gaisler * Makefile.am, configure.in: Added support for instruction cache enabling based on CPU model. * cache/.cvsignore, cache/Makefile.am, cache/cache.c, cache/cache_.h: New files. --- c/src/lib/libcpu/sparc/ChangeLog | 7 ++++++ c/src/lib/libcpu/sparc/Makefile.am | 2 +- c/src/lib/libcpu/sparc/cache/.cvsignore | 2 ++ c/src/lib/libcpu/sparc/cache/Makefile.am | 43 ++++++++++++++++++++++++++++++++ c/src/lib/libcpu/sparc/cache/cache.c | 19 ++++++++++++++ c/src/lib/libcpu/sparc/cache/cache_.h | 24 ++++++++++++++++++ c/src/lib/libcpu/sparc/configure.in | 4 +++ 7 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 c/src/lib/libcpu/sparc/cache/.cvsignore create mode 100644 c/src/lib/libcpu/sparc/cache/Makefile.am create mode 100644 c/src/lib/libcpu/sparc/cache/cache.c create mode 100644 c/src/lib/libcpu/sparc/cache/cache_.h diff --git a/c/src/lib/libcpu/sparc/ChangeLog b/c/src/lib/libcpu/sparc/ChangeLog index 0987e5b73c..c2f8f91b1a 100644 --- a/c/src/lib/libcpu/sparc/ChangeLog +++ b/c/src/lib/libcpu/sparc/ChangeLog @@ -1,3 +1,10 @@ +2000-11-14 Jiri Gaisler + + * Makefile.am, configure.in: Added support for instruction + cache enabling based on CPU model. + * cache/.cvsignore, cache/Makefile.am, cache/cache.c, + cache/cache_.h: New files. + 2000-11-09 Ralf Corsepius * Makefile.am: Use ... instead of RTEMS_TOPdir in ACLOCAL_AMFLAGS. diff --git a/c/src/lib/libcpu/sparc/Makefile.am b/c/src/lib/libcpu/sparc/Makefile.am index 1b7de24bd3..87ad2ace67 100644 --- a/c/src/lib/libcpu/sparc/Makefile.am +++ b/c/src/lib/libcpu/sparc/Makefile.am @@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = foreign 1.4 ACLOCAL_AMFLAGS = -I ../../../../../aclocal -SUBDIRS = include reg_win syscall +SUBDIRS = include cache reg_win syscall include $(top_srcdir)/../../../../../automake/subdirs.am include $(top_srcdir)/../../../../../automake/local.am diff --git a/c/src/lib/libcpu/sparc/cache/.cvsignore b/c/src/lib/libcpu/sparc/cache/.cvsignore new file mode 100644 index 0000000000..282522db03 --- /dev/null +++ b/c/src/lib/libcpu/sparc/cache/.cvsignore @@ -0,0 +1,2 @@ +Makefile +Makefile.in diff --git a/c/src/lib/libcpu/sparc/cache/Makefile.am b/c/src/lib/libcpu/sparc/cache/Makefile.am new file mode 100644 index 0000000000..1964bbbed6 --- /dev/null +++ b/c/src/lib/libcpu/sparc/cache/Makefile.am @@ -0,0 +1,43 @@ +## +## $Id$ +## + +AUTOMAKE_OPTIONS = foreign 1.4 + +VPATH = @srcdir@:@srcdir@/../../shared/src + +C_FILES = cache.c cache_aligned_malloc.c cache_manager.c +C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o) + +H_FILES = cache_.h +INSTALLED_H_FILES = + +OBJS = $(C_O_FILES) + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../../../../../automake/compile.am +include $(top_srcdir)/../../../../../automake/lib.am + +if has_instruction_cache +AM_CPPFLAGS += -I$(srcdir) -DHAS_INSTRUCTION_CACHE +else +AM_CPPFLAGS += -I$(srcdir) +endif + +$(PROJECT_INCLUDE)/libcpu: + $(mkinstalldirs) $@ + +$(PROJECT_INCLUDE)/libcpu/%.h: %.h + $(INSTALL_DATA) $< $@ + +$(PROJECT_INCLUDE)/libcpu/cache.h: $(top_srcdir)/../shared/include/cache.h + $(INSTALL_DATA) $< $@ + +PREINSTALL_FILES += $(PROJECT_INCLUDE)/libcpu \ + $(PROJECT_INCLUDE)/libcpu/cache.h + +all-local: $(ARCH) $(PREINSTALL_FILES) $(OBJS) + +EXTRA_DIST = cache.c cache_.h + +include $(top_srcdir)/../../../../../automake/local.am diff --git a/c/src/lib/libcpu/sparc/cache/cache.c b/c/src/lib/libcpu/sparc/cache/cache.c new file mode 100644 index 0000000000..d0b2fc5096 --- /dev/null +++ b/c/src/lib/libcpu/sparc/cache/cache.c @@ -0,0 +1,19 @@ +/* + * Cache Management Support Routines for the MC68040 + * + * $Id$ + */ + +#include +#include "cache_.h" + + +#if defined(HAS_INSTRUCTION_CACHE) + +void _CPU_cache_invalidate_entire_instruction ( void ) +{ + asm volatile ("flush"); +} +#endif + +/* end of file */ diff --git a/c/src/lib/libcpu/sparc/cache/cache_.h b/c/src/lib/libcpu/sparc/cache/cache_.h new file mode 100644 index 0000000000..8d54d37e2d --- /dev/null +++ b/c/src/lib/libcpu/sparc/cache/cache_.h @@ -0,0 +1,24 @@ +/* + * SPARC Cache Manager Support + */ + +#ifndef __SPARC_CACHE_h +#define __SPARC_CACHE_h + +/* + * CACHE MANAGER: The following functions are CPU-specific. + * They provide the basic implementation for the rtems_* cache + * management routines. If a given function has no meaning for the CPU, + * it does nothing by default. + * + * FIXME: Some functions simply have not been implemented. + */ + +#if defined(HAS_INSTRUCTION_CACHE) +#define CPU_INSTRUCTION_CACHE_ALIGNMENT 0 +#endif + +#include + +#endif +/* end of include file */ diff --git a/c/src/lib/libcpu/sparc/configure.in b/c/src/lib/libcpu/sparc/configure.in index 1556b39146..d225a90767 100644 --- a/c/src/lib/libcpu/sparc/configure.in +++ b/c/src/lib/libcpu/sparc/configure.in @@ -26,9 +26,13 @@ RTEMS_CANONICALIZE_TOOLS RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP) RTEMS_CHECK_BSP_CACHE(RTEMS_BSP) +AM_CONDITIONAL(has_instruction_cache, test "$RTEMS_CPU_MODEL" = "leon1" \ +|| test "$RTEMS_CPU_MODEL" = "leon2" ) + # Explicitly list all Makefiles here AC_OUTPUT( Makefile +cache/Makefile include/Makefile reg_win/Makefile syscall/Makefile) -- cgit v1.2.3