summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/sparc
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-11-15 21:40:05 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-11-15 21:40:05 +0000
commitca4060826dead6c97983821a3222238d86136a0c (patch)
treeea20f412ee8d78b1033f191a0e047167499757a3 /c/src/lib/libcpu/sparc
parent2000-11-14 Jiri Gaisler <jgais@ws.estec.esa.nl> (diff)
downloadrtems-ca4060826dead6c97983821a3222238d86136a0c.tar.bz2
2000-11-14 Jiri Gaisler <jgais@ws.estec.esa.nl>
* 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.
Diffstat (limited to 'c/src/lib/libcpu/sparc')
-rw-r--r--c/src/lib/libcpu/sparc/ChangeLog7
-rw-r--r--c/src/lib/libcpu/sparc/Makefile.am2
-rw-r--r--c/src/lib/libcpu/sparc/cache/.cvsignore2
-rw-r--r--c/src/lib/libcpu/sparc/cache/Makefile.am43
-rw-r--r--c/src/lib/libcpu/sparc/cache/cache.c19
-rw-r--r--c/src/lib/libcpu/sparc/cache/cache_.h24
-rw-r--r--c/src/lib/libcpu/sparc/configure.in4
7 files changed, 100 insertions, 1 deletions
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 <jgais@ws.estec.esa.nl>
+
+ * 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 <corsepiu@faw.uni-ulm.de>
* 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 <rtems.h>
+#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 <libcpu/cache.h>
+
+#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)