From fc2ec62978ac749d9f731fbc768e48e4f0c4a8f9 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 26 Mar 2018 12:10:15 +0200 Subject: bsps/m68k: Move libcpu content to bsps This patch is a part of the BSP source reorganization. Update #3285. --- c/src/lib/libcpu/m68k/Makefile.am | 14 ---- c/src/lib/libcpu/m68k/shared/misc/m68kidle.c | 34 --------- c/src/lib/libcpu/m68k/shared/misc/memProbe.c | 105 --------------------------- 3 files changed, 153 deletions(-) delete mode 100644 c/src/lib/libcpu/m68k/shared/misc/m68kidle.c delete mode 100644 c/src/lib/libcpu/m68k/shared/misc/memProbe.c (limited to 'c/src/lib/libcpu') diff --git a/c/src/lib/libcpu/m68k/Makefile.am b/c/src/lib/libcpu/m68k/Makefile.am index f012d5d0db..b0bbc36107 100644 --- a/c/src/lib/libcpu/m68k/Makefile.am +++ b/c/src/lib/libcpu/m68k/Makefile.am @@ -4,20 +4,6 @@ include $(top_srcdir)/../../../automake/compile.am noinst_PROGRAMS = -if shared - -## shared/misc - -if mcf5272 -M68K_CPPFLAGS = -Dmcf5272 -endif - -noinst_PROGRAMS += shared/misc.rel -shared_misc_rel_SOURCES = shared/misc/m68kidle.c shared/misc/memProbe.c -shared_misc_rel_CPPFLAGS = $(AM_CPPFLAGS) $(M68K_CPPFLAGS) -shared_misc_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) -endif - if m68040 ## m68040/fpsp noinst_PROGRAMS += m68040/fpsp.rel diff --git a/c/src/lib/libcpu/m68k/shared/misc/m68kidle.c b/c/src/lib/libcpu/m68k/shared/misc/m68kidle.c deleted file mode 100644 index 96e1288095..0000000000 --- a/c/src/lib/libcpu/m68k/shared/misc/m68kidle.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Motorola MC68xxx Dependent Idle Body Source - * - * This kernel routine is the idle thread. The idle thread runs any time - * no other thread is ready to run. This thread loops forever with - * interrupts enabled. - */ - -/* - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - */ - -#include -#include - -void *_CPU_Thread_Idle_body( uintptr_t ignored ) -{ -#if defined(mcf5272) - for( ; ; ) { - __asm__ volatile( "nop" ); - __asm__ volatile( "nop" ); - } -#else - for( ; ; ) { - /* supervisor mode, all interrupts on */ - __asm__ volatile( "stop #0x3000":::"cc" ); - } -#endif -} diff --git a/c/src/lib/libcpu/m68k/shared/misc/memProbe.c b/c/src/lib/libcpu/m68k/shared/misc/memProbe.c deleted file mode 100644 index d352f76b6e..0000000000 --- a/c/src/lib/libcpu/m68k/shared/misc/memProbe.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Address Probing for M68k/ColdFire - */ - -#include -#include -#include - -#if (M68K_COLDFIRE_ARCH == 1) -# define EXCEPTION_FRAME_PC_OFFSET "4" -#else -# define EXCEPTION_FRAME_PC_OFFSET "2" -#endif - -typedef int (*MemProber)(void *from, void *to); -int memProbeByte(void *from, void *to); -int memProbeShort(void *from, void *to); -int memProbeLong(void *from, void *to); -int memProbeCatcher(void); -rtems_status_code bspExtMemProbe(void *addr, int write, int size, void *pval); - -__asm__( - ".text\n" - "memProbeByte: \n" - " move.l %sp@(4),%a0\n" - " move.b %a0@,%d0 \n" - " move.l %sp@(8),%a0\n" - " move.b %d0,%a0@ \n" - " bra.b 1f \n" - "memProbeShort: \n" - " move.l %sp@(4),%a0\n" - " move.w %a0@,%d0 \n" - " move.l %sp@(8),%a0\n" - " move.w %d0,%a0@ \n" - " bra.b 1f \n" - "memProbeLong: \n" - " move.l %sp@(4),%a0\n" - " move.l %a0@,%d0 \n" - " move.l %sp@(8),%a0\n" - " move.l %d0,%a0@ \n" - "1: nop \n" - " moveq.l #1,%d0 \n" - " rts \n" - "memProbeCatcher: \n" - " move.l #1f,%d0 \n" - " move.l %d0,%sp@(" EXCEPTION_FRAME_PC_OFFSET ")\n" - " rte \n" - "1: clr.l %d0 \n" - " rts \n" -); - -rtems_status_code -bspExtMemProbe(void *addr, int write, int size, void *pval) -{ - rtems_status_code rval=RTEMS_SUCCESSFUL; - rtems_interrupt_level level; - unsigned long buf; - MemProber probe; - void *saveVector; - void **exceptionPointer; - void *vbr; - - /* - * Sanity check - */ - switch (size) { - case sizeof(char): probe=memProbeByte; break; - case sizeof(short): probe=memProbeShort; break; - case sizeof(long): probe=memProbeLong; break; - default: return RTEMS_INVALID_SIZE; - } - - /* - * use a buffer to make sure we don't end up probing 'pval'. - */ - if (write && pval) - memcpy(&buf, pval, size); - - /* - * Get location of access fault exception - */ - m68k_get_vbr(vbr); - exceptionPointer = (void **)((char *)vbr + (2 * 4)); - - /* - * Probe! - */ - rtems_interrupt_disable(level); - saveVector = *exceptionPointer; - *exceptionPointer = memProbeCatcher; - if (write) { - if (probe(&buf, addr) == 0) - rval = RTEMS_INVALID_ADDRESS; - } - else { - if (probe(addr, &buf) == 0) - rval = RTEMS_INVALID_ADDRESS; - } - *exceptionPointer = saveVector; - rtems_interrupt_enable(level); - - if (!write && pval && (rval == RTEMS_SUCCESSFUL)) - memcpy(pval, &buf, size); - return rval; -} -- cgit v1.2.3