From 1e2c61136a53e96e97e5d5a70b2ef114940f34f0 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 9 Aug 2006 21:01:16 +0000 Subject: 2006-08-09 Kolja Waschk * 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. --- c/src/lib/libcpu/ChangeLog | 6 +++ c/src/lib/libcpu/nios2/Makefile.am | 34 ++++++++++++++ c/src/lib/libcpu/nios2/configure.ac | 33 ++++++++++++++ c/src/lib/libcpu/nios2/preinstall.am | 26 +++++++++++ c/src/lib/libcpu/nios2/shared/cache/cache.c | 67 ++++++++++++++++++++++++++++ c/src/lib/libcpu/nios2/shared/cache/cache_.h | 34 ++++++++++++++ c/src/lib/libcpu/nios2/shared/misc/memcpy.c | 21 +++++++++ 7 files changed, 221 insertions(+) create mode 100644 c/src/lib/libcpu/nios2/Makefile.am create mode 100644 c/src/lib/libcpu/nios2/configure.ac create mode 100644 c/src/lib/libcpu/nios2/preinstall.am create mode 100644 c/src/lib/libcpu/nios2/shared/cache/cache.c create mode 100644 c/src/lib/libcpu/nios2/shared/cache/cache_.h create mode 100644 c/src/lib/libcpu/nios2/shared/misc/memcpy.c (limited to 'c/src') 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 + + * 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 * 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 +#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 + +#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 + +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; +} -- cgit v1.2.3