summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/sparc/cache
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/cache
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/cache')
-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
4 files changed, 88 insertions, 0 deletions
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 */