summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2006-08-09 21:01:16 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2006-08-09 21:01:16 +0000
commit1e2c61136a53e96e97e5d5a70b2ef114940f34f0 (patch)
tree1be4cc6497101d6d94eceeb740e8e45eefead046 /c/src
parent2006-08-09 Kolja Waschk <waschk@telos.de> (diff)
downloadrtems-1e2c61136a53e96e97e5d5a70b2ef114940f34f0.tar.bz2
2006-08-09 Kolja Waschk <waschk@telos.de>
* nios2/Makefile.am, nios2/configure.ac, nios2/preinstall.am, nios2/shared/cache/cache.c, nios2/shared/cache/cache_.h, nios2/shared/misc/memcpy.c: New files.
Diffstat (limited to 'c/src')
-rw-r--r--c/src/lib/libcpu/ChangeLog6
-rw-r--r--c/src/lib/libcpu/nios2/Makefile.am34
-rw-r--r--c/src/lib/libcpu/nios2/configure.ac33
-rw-r--r--c/src/lib/libcpu/nios2/preinstall.am26
-rw-r--r--c/src/lib/libcpu/nios2/shared/cache/cache.c67
-rw-r--r--c/src/lib/libcpu/nios2/shared/cache/cache_.h34
-rw-r--r--c/src/lib/libcpu/nios2/shared/misc/memcpy.c21
7 files changed, 221 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/ChangeLog b/c/src/lib/libcpu/ChangeLog
index 570a3205c0..670c276a8b 100644
--- a/c/src/lib/libcpu/ChangeLog
+++ b/c/src/lib/libcpu/ChangeLog
@@ -1,3 +1,9 @@
+2006-08-09 Kolja Waschk <waschk@telos.de>
+
+ * nios2/Makefile.am, nios2/configure.ac, nios2/preinstall.am,
+ nios2/shared/cache/cache.c, nios2/shared/cache/cache_.h,
+ nios2/shared/misc/memcpy.c: New files.
+
2004-09-29 Joel Sherrill <joel@OARcorp.com>
* README: i960 obsoleted.
diff --git a/c/src/lib/libcpu/nios2/Makefile.am b/c/src/lib/libcpu/nios2/Makefile.am
new file mode 100644
index 0000000000..25283a4d4f
--- /dev/null
+++ b/c/src/lib/libcpu/nios2/Makefile.am
@@ -0,0 +1,34 @@
+##
+## $Id$
+##
+
+ACLOCAL_AMFLAGS = -I ../../../aclocal
+
+include $(top_srcdir)/../../../automake/compile.am
+
+CLEANFILES =
+DISTCLEANFILES =
+noinst_PROGRAMS =
+
+if shared
+include_libcpudir = $(includedir)/libcpu
+
+## shared/cache
+include_libcpu_HEADERS = ../shared/include/cache.h
+noinst_PROGRAMS += shared/cache.rel
+shared_cache_rel_SOURCES = shared/cache/cache.c shared/cache/cache_.h \
+ ../shared/src/cache_aligned_malloc.c \
+ ../shared/src/cache_manager.c
+shared_cache_rel_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/shared/cache
+shared_cache_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+
+## shared/misc
+noinst_PROGRAMS += shared/misc.rel
+shared_misc_rel_SOURCES = shared/misc/memcpy.c
+shared_misc_rel_CPPFLAGS = $(AM_CPPFLAGS) $(NIOS2_CPPFLAGS)
+shared_misc_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+endif
+
+include $(srcdir)/preinstall.am
+
+include $(top_srcdir)/../../../automake/local.am
diff --git a/c/src/lib/libcpu/nios2/configure.ac b/c/src/lib/libcpu/nios2/configure.ac
new file mode 100644
index 0000000000..b50f2e1431
--- /dev/null
+++ b/c/src/lib/libcpu/nios2/configure.ac
@@ -0,0 +1,33 @@
+## Process this file with autoconf to produce a configure script.
+##
+## $Id$
+
+AC_PREREQ(2.59)
+AC_INIT([rtems-c-src-lib-libcpu-nios2],[_RTEMS_VERSION],[rtems-bugs@rtems.com])
+RTEMS_TOP([../../../../..],[../../..])
+
+RTEMS_CANONICAL_TARGET_CPU
+
+AM_INIT_AUTOMAKE([no-define foreign subdir-objects 1.9])
+AM_MAINTAINER_MODE
+
+RTEMS_ENV_RTEMSBSP
+
+RTEMS_PROJECT_ROOT
+
+RTEMS_PROG_CC_FOR_TARGET
+AM_PROG_CC_C_O
+RTEMS_CANONICALIZE_TOOLS
+RTEMS_PROG_CCAS
+
+# At this time all models should use the shared directory so do this
+AM_CONDITIONAL(shared, true)
+
+AC_PATH_PROG([AMPOLISH3],[ampolish3],[])
+AM_CONDITIONAL([AMPOLISH3],[test x"$USE_MAINTAINER_MODE" = x"yes" \
+ && test -n "$AMPOLISH3"])
+
+# Explicitly list all Makefiles here
+AC_CONFIG_FILES([Makefile
+])
+AC_OUTPUT
diff --git a/c/src/lib/libcpu/nios2/preinstall.am b/c/src/lib/libcpu/nios2/preinstall.am
new file mode 100644
index 0000000000..13120b897a
--- /dev/null
+++ b/c/src/lib/libcpu/nios2/preinstall.am
@@ -0,0 +1,26 @@
+## Automatically generated by ampolish3 - Do not edit
+
+if AMPOLISH3
+$(srcdir)/preinstall.am: Makefile.am
+ $(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
+endif
+
+PREINSTALL_DIRS =
+DISTCLEANFILES += $(PREINSTALL_DIRS)
+
+PREINSTALL_FILES =
+CLEANFILES += $(PREINSTALL_FILES)
+
+if shared
+$(PROJECT_INCLUDE)/libcpu/$(dirstamp):
+ @$(mkdir_p) $(PROJECT_INCLUDE)/libcpu
+ @: > $(PROJECT_INCLUDE)/libcpu/$(dirstamp)
+PREINSTALL_DIRS += $(PROJECT_INCLUDE)/libcpu/$(dirstamp)
+
+$(PROJECT_INCLUDE)/libcpu/cache.h: ../shared/include/cache.h $(PROJECT_INCLUDE)/libcpu/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/libcpu/cache.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/libcpu/cache.h
+
+endif
+
+
diff --git a/c/src/lib/libcpu/nios2/shared/cache/cache.c b/c/src/lib/libcpu/nios2/shared/cache/cache.c
new file mode 100644
index 0000000000..25802a3999
--- /dev/null
+++ b/c/src/lib/libcpu/nios2/shared/cache/cache.c
@@ -0,0 +1,67 @@
+/*
+ * Cache Management Support Routines for the MC68040
+ *
+ * $Id$
+ */
+
+#include <rtems.h>
+#include "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.
+ */
+
+void _CPU_cache_freeze_data ( void ) {}
+void _CPU_cache_unfreeze_data ( void ) {}
+void _CPU_cache_freeze_instruction ( void ) {}
+void _CPU_cache_unfreeze_instruction ( void ) {}
+
+void _CPU_cache_flush_1_data_line (
+ const void * d_addr )
+{
+ void * p_address = (void *) _CPU_virtual_to_physical( d_addr );
+}
+
+void _CPU_cache_invalidate_1_data_line (
+ const void * d_addr )
+{
+ void * p_address = (void *) _CPU_virtual_to_physical( d_addr );
+}
+
+void _CPU_cache_flush_entire_data ( void )
+{
+}
+
+void _CPU_cache_invalidate_entire_data ( void )
+{
+}
+
+void _CPU_cache_enable_data ( void )
+{
+}
+
+void _CPU_cache_disable_data ( void )
+{
+}
+
+void _CPU_cache_invalidate_1_instruction_line (
+ const void * i_addr )
+{
+ void * p_address = (void *) _CPU_virtual_to_physical( i_addr );
+}
+
+void _CPU_cache_invalidate_entire_instruction ( void )
+{
+}
+
+void _CPU_cache_enable_instruction ( void )
+{
+}
+
+void _CPU_cache_disable_instruction ( void )
+{
+}
+/* end of file */
diff --git a/c/src/lib/libcpu/nios2/shared/cache/cache_.h b/c/src/lib/libcpu/nios2/shared/cache/cache_.h
new file mode 100644
index 0000000000..62a9fd8541
--- /dev/null
+++ b/c/src/lib/libcpu/nios2/shared/cache/cache_.h
@@ -0,0 +1,34 @@
+/*
+ * M68K Cache Manager Support
+ */
+
+#ifndef __M68K_CACHE_h
+#define __M68K_CACHE_h
+
+#if (defined(__mc68020__) && !defined(__mcpu32__))
+# define M68K_INSTRUCTION_CACHE_ALIGNMENT 16
+#elif defined(__mc68030__)
+# define M68K_INSTRUCTION_CACHE_ALIGNMENT 16
+# define M68K_DATA_CACHE_ALIGNMENT 16
+#elif ( defined(__mc68040__) || defined (__mc68060__) )
+# define M68K_INSTRUCTION_CACHE_ALIGNMENT 16
+# define M68K_DATA_CACHE_ALIGNMENT 16
+#elif ( defined(__mcf5200__) )
+# define M68K_INSTRUCTION_CACHE_ALIGNMENT 16
+# if ( defined(__mcf528x__) )
+# define M68K_DATA_CACHE_ALIGNMENT 16
+# endif
+#endif
+
+#if defined(M68K_DATA_CACHE_ALIGNMENT)
+#define CPU_DATA_CACHE_ALIGNMENT M68K_DATA_CACHE_ALIGNMENT
+#endif
+
+#if defined(M68K_INSTRUCTION_CACHE_ALIGNMENT)
+#define CPU_INSTRUCTION_CACHE_ALIGNMENT M68K_INSTRUCTION_CACHE_ALIGNMENT
+#endif
+
+#include <libcpu/cache.h>
+
+#endif
+/* end of include file */
diff --git a/c/src/lib/libcpu/nios2/shared/misc/memcpy.c b/c/src/lib/libcpu/nios2/shared/misc/memcpy.c
new file mode 100644
index 0000000000..ceae3c6548
--- /dev/null
+++ b/c/src/lib/libcpu/nios2/shared/misc/memcpy.c
@@ -0,0 +1,21 @@
+/*
+ * C library memcpy routine
+ *
+ * This routine shall get code to optimize performance on NIOS II
+ *
+ * The routine is placed in this source directory to ensure that it
+ * is picked up by all applications.
+ */
+
+#include <string.h>
+
+void *
+memcpy(void *s1, const void *s2, size_t n)
+{
+ char *p1 = s1;
+ const char *p2 = s2;
+ size_t left = n;
+
+ while(left > 0) *(p1++) = *(p2++);
+ return s1;
+}