summaryrefslogtreecommitdiffstats
path: root/c/src/lib
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-03-26 12:10:15 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-03-26 15:12:48 +0200
commitfc2ec62978ac749d9f731fbc768e48e4f0c4a8f9 (patch)
tree32c2dfee817f51dfc689ddd2e132873b99360265 /c/src/lib
parentbsps/m68k: Remove unused define (diff)
downloadrtems-fc2ec62978ac749d9f731fbc768e48e4f0c4a8f9.tar.bz2
bsps/m68k: Move libcpu content to bsps
This patch is a part of the BSP source reorganization. Update #3285.
Diffstat (limited to 'c/src/lib')
-rw-r--r--c/src/lib/libbsp/m68k/av5282/Makefile.am5
-rw-r--r--c/src/lib/libbsp/m68k/csb360/Makefile.am4
-rw-r--r--c/src/lib/libbsp/m68k/gen68340/Makefile.am5
-rw-r--r--c/src/lib/libbsp/m68k/gen68360/Makefile.am6
-rw-r--r--c/src/lib/libbsp/m68k/genmcf548x/Makefile.am6
-rw-r--r--c/src/lib/libbsp/m68k/mcf5206elite/Makefile.am4
-rw-r--r--c/src/lib/libbsp/m68k/mcf52235/Makefile.am5
-rw-r--r--c/src/lib/libbsp/m68k/mcf5225x/Makefile.am5
-rw-r--r--c/src/lib/libbsp/m68k/mcf5235/Makefile.am5
-rw-r--r--c/src/lib/libbsp/m68k/mcf5329/Makefile.am5
-rw-r--r--c/src/lib/libbsp/m68k/mrm332/Makefile.am5
-rw-r--r--c/src/lib/libbsp/m68k/mvme147/Makefile.am5
-rw-r--r--c/src/lib/libbsp/m68k/mvme147s/Makefile.am5
-rw-r--r--c/src/lib/libbsp/m68k/mvme162/Makefile.am6
-rw-r--r--c/src/lib/libbsp/m68k/mvme167/Makefile.am3
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/Makefile.am4
-rw-r--r--c/src/lib/libcpu/m68k/Makefile.am14
-rw-r--r--c/src/lib/libcpu/m68k/shared/misc/m68kidle.c34
-rw-r--r--c/src/lib/libcpu/m68k/shared/misc/memProbe.c105
19 files changed, 35 insertions, 196 deletions
diff --git a/c/src/lib/libbsp/m68k/av5282/Makefile.am b/c/src/lib/libbsp/m68k/av5282/Makefile.am
index c41571aebd..527d05ae25 100644
--- a/c/src/lib/libbsp/m68k/av5282/Makefile.am
+++ b/c/src/lib/libbsp/m68k/av5282/Makefile.am
@@ -41,9 +41,8 @@ libbsp_a_SOURCES += network/network.c
endif
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache-mcf5282.c
-
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
include $(top_srcdir)/../../../../automake/local.am
include $(srcdir)/../../../../../../bsps/m68k/av5282/headers.am
diff --git a/c/src/lib/libbsp/m68k/csb360/Makefile.am b/c/src/lib/libbsp/m68k/csb360/Makefile.am
index f4458825dd..6670638207 100644
--- a/c/src/lib/libbsp/m68k/csb360/Makefile.am
+++ b/c/src/lib/libbsp/m68k/csb360/Makefile.am
@@ -33,11 +33,11 @@ libbsp_a_SOURCES += ../../shared/bspreset.c
# console
libbsp_a_SOURCES += console/console-io.c ../../shared/console-polled.c
-# Cache
libbsp_a_SOURCES += ../../../../../../bsps/shared/cache/nocache.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/csb360/start/idle-mcf5272.c
libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel \
../../../libcpu/@RTEMS_CPU@/mcf5272/clock.rel \
../../../libcpu/@RTEMS_CPU@/mcf5272/timer.rel
diff --git a/c/src/lib/libbsp/m68k/gen68340/Makefile.am b/c/src/lib/libbsp/m68k/gen68340/Makefile.am
index 69467e1e78..275e90b31b 100644
--- a/c/src/lib/libbsp/m68k/gen68340/Makefile.am
+++ b/c/src/lib/libbsp/m68k/gen68340/Makefile.am
@@ -38,9 +38,8 @@ libbsp_a_SOURCES += console/console.c console/m340uart.c \
libbsp_a_SOURCES += timer/timer.c
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache.c
-
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
include $(top_srcdir)/../../../../automake/local.am
include $(srcdir)/../../../../../../bsps/m68k/gen68340/headers.am
diff --git a/c/src/lib/libbsp/m68k/gen68360/Makefile.am b/c/src/lib/libbsp/m68k/gen68360/Makefile.am
index daf6719451..a26a894118 100644
--- a/c/src/lib/libbsp/m68k/gen68360/Makefile.am
+++ b/c/src/lib/libbsp/m68k/gen68360/Makefile.am
@@ -43,11 +43,11 @@ libbsp_a_SOURCES += network/network.c
endif
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
if HAS_FPSP
-libbsp_a_LIBADD += ../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/fpsp.rel
+libbsp_a_LIBADD = ../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/fpsp.rel
endif
include $(top_srcdir)/../../../../automake/local.am
diff --git a/c/src/lib/libbsp/m68k/genmcf548x/Makefile.am b/c/src/lib/libbsp/m68k/genmcf548x/Makefile.am
index 111e6d2ce3..72fb216067 100644
--- a/c/src/lib/libbsp/m68k/genmcf548x/Makefile.am
+++ b/c/src/lib/libbsp/m68k/genmcf548x/Makefile.am
@@ -48,15 +48,15 @@ libbsp_a_SOURCES += ../../shared/src/irq-shell.c
libbsp_a_SOURCES += irq/irq.c
libbsp_a_SOURCES += irq/intc-icr-init-values.c
-# Cache
libbsp_a_SOURCES += ../../../../../../bsps/m68k/genmcf548x/start/cache.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
if HAS_NETWORKING
libbsp_a_SOURCES += network/network.c
endif
-libbsp_a_LIBADD = ../../../libcpu/@RTEMS_CPU@/shared/misc.rel \
- ../../../libcpu/@RTEMS_CPU@/mcf548x/mcdma.rel
+libbsp_a_LIBADD = ../../../libcpu/@RTEMS_CPU@/mcf548x/mcdma.rel
include $(top_srcdir)/../../../../automake/local.am
include $(srcdir)/../../../../../../bsps/m68k/genmcf548x/headers.am
diff --git a/c/src/lib/libbsp/m68k/mcf5206elite/Makefile.am b/c/src/lib/libbsp/m68k/mcf5206elite/Makefile.am
index 2e0dbb7b6c..eeee5add77 100644
--- a/c/src/lib/libbsp/m68k/mcf5206elite/Makefile.am
+++ b/c/src/lib/libbsp/m68k/mcf5206elite/Makefile.am
@@ -43,11 +43,11 @@ libbsp_a_SOURCES += tod/ds1307.c tod/todcfg.c ../../shared/tod.c
# nvram
libbsp_a_SOURCES += nvram/nvram.c
-# Cache
libbsp_a_SOURCES += ../../../../../../bsps/shared/cache/nocache.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel \
../../../libcpu/@RTEMS_CPU@/mcf5206/clock.rel \
../../../libcpu/@RTEMS_CPU@/mcf5206/mcfuart.rel \
../../../libcpu/@RTEMS_CPU@/mcf5206/timer.rel \
diff --git a/c/src/lib/libbsp/m68k/mcf52235/Makefile.am b/c/src/lib/libbsp/m68k/mcf52235/Makefile.am
index 95eb6e5950..1fe068e8d3 100644
--- a/c/src/lib/libbsp/m68k/mcf52235/Makefile.am
+++ b/c/src/lib/libbsp/m68k/mcf52235/Makefile.am
@@ -39,9 +39,8 @@ libbsp_a_SOURCES += console/debugio.c
libbsp_a_SOURCES += timer/timer.c
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache-mcf5223x.c
-
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
include $(top_srcdir)/../../../../automake/local.am
include $(srcdir)/../../../../../../bsps/m68k/mcf52235/headers.am
diff --git a/c/src/lib/libbsp/m68k/mcf5225x/Makefile.am b/c/src/lib/libbsp/m68k/mcf5225x/Makefile.am
index 8688f23965..ca45a99ff0 100644
--- a/c/src/lib/libbsp/m68k/mcf5225x/Makefile.am
+++ b/c/src/lib/libbsp/m68k/mcf5225x/Makefile.am
@@ -34,9 +34,8 @@ libbsp_a_SOURCES += console/debugio.c
libbsp_a_SOURCES += timer/timer.c
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache-mcf5225x.c
-
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
include $(top_srcdir)/../../../../automake/local.am
include $(srcdir)/../../../../../../bsps/m68k/mcf5225x/headers.am
diff --git a/c/src/lib/libbsp/m68k/mcf5235/Makefile.am b/c/src/lib/libbsp/m68k/mcf5235/Makefile.am
index f673c1a688..813afcc3d2 100644
--- a/c/src/lib/libbsp/m68k/mcf5235/Makefile.am
+++ b/c/src/lib/libbsp/m68k/mcf5235/Makefile.am
@@ -43,9 +43,8 @@ libbsp_a_SOURCES += network/network.c
endif
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache-mcf5235.c
-
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
include $(top_srcdir)/../../../../automake/local.am
include $(srcdir)/../../../../../../bsps/m68k/mcf5235/headers.am
diff --git a/c/src/lib/libbsp/m68k/mcf5329/Makefile.am b/c/src/lib/libbsp/m68k/mcf5329/Makefile.am
index a26f549f9a..64eda514c2 100644
--- a/c/src/lib/libbsp/m68k/mcf5329/Makefile.am
+++ b/c/src/lib/libbsp/m68k/mcf5329/Makefile.am
@@ -42,9 +42,8 @@ libbsp_a_SOURCES += network/network.c
endif
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache-mcf532x.c
-
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
include $(top_srcdir)/../../../../automake/local.am
include $(srcdir)/../../../../../../bsps/m68k/mcf5329/headers.am
diff --git a/c/src/lib/libbsp/m68k/mrm332/Makefile.am b/c/src/lib/libbsp/m68k/mrm332/Makefile.am
index 7afb990c40..8fadb443d3 100644
--- a/c/src/lib/libbsp/m68k/mrm332/Makefile.am
+++ b/c/src/lib/libbsp/m68k/mrm332/Makefile.am
@@ -39,9 +39,8 @@ libbsp_a_SOURCES += spurious/spinit.c
libbsp_a_SOURCES += timer/timer.c
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache.c
-
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
include $(top_srcdir)/../../../../automake/local.am
include $(srcdir)/../../../../../../bsps/m68k/mrm332/headers.am
diff --git a/c/src/lib/libbsp/m68k/mvme147/Makefile.am b/c/src/lib/libbsp/m68k/mvme147/Makefile.am
index 13b39c4442..4d221dc0aa 100644
--- a/c/src/lib/libbsp/m68k/mvme147/Makefile.am
+++ b/c/src/lib/libbsp/m68k/mvme147/Makefile.am
@@ -38,9 +38,8 @@ libbsp_a_SOURCES += console/console.c ../../shared/dummy_printk_support.c
libbsp_a_SOURCES += timer/timer.c timer/timerisr.S
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache.c
-
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
EXTRA_DIST += times
diff --git a/c/src/lib/libbsp/m68k/mvme147s/Makefile.am b/c/src/lib/libbsp/m68k/mvme147s/Makefile.am
index a0af237c7c..dc7137f126 100644
--- a/c/src/lib/libbsp/m68k/mvme147s/Makefile.am
+++ b/c/src/lib/libbsp/m68k/mvme147s/Makefile.am
@@ -46,9 +46,8 @@ libbsp_a_SOURCES += shmsupp/addrconv.c shmsupp/getcfg.c shmsupp/lock.c \
endif
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache.c
-
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
EXTRA_DIST += times
diff --git a/c/src/lib/libbsp/m68k/mvme162/Makefile.am b/c/src/lib/libbsp/m68k/mvme162/Makefile.am
index 2c0031f61d..1ef0c301de 100644
--- a/c/src/lib/libbsp/m68k/mvme162/Makefile.am
+++ b/c/src/lib/libbsp/m68k/mvme162/Makefile.am
@@ -45,11 +45,11 @@ libbsp_a_SOURCES += ../mvme167/network/network.c
endif
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
-libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
if HAS_FPSP
-libbsp_a_LIBADD += ../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/fpsp.rel
+libbsp_a_LIBADD = ../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/fpsp.rel
endif
EXTRA_DIST += times
diff --git a/c/src/lib/libbsp/m68k/mvme167/Makefile.am b/c/src/lib/libbsp/m68k/mvme167/Makefile.am
index 8c8288cf04..5cedf79c02 100644
--- a/c/src/lib/libbsp/m68k/mvme167/Makefile.am
+++ b/c/src/lib/libbsp/m68k/mvme167/Makefile.am
@@ -42,9 +42,10 @@ libbsp_a_SOURCES += network/network.c
endif
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
libbsp_a_LIBADD = \
- ../../../libcpu/@RTEMS_CPU@/shared/misc.rel \
../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/fpsp.rel
EXTRA_DIST += times
diff --git a/c/src/lib/libbsp/m68k/uC5282/Makefile.am b/c/src/lib/libbsp/m68k/uC5282/Makefile.am
index e382fe46a9..c4b90c5ec5 100644
--- a/c/src/lib/libbsp/m68k/uC5282/Makefile.am
+++ b/c/src/lib/libbsp/m68k/uC5282/Makefile.am
@@ -40,8 +40,8 @@ libbsp_a_SOURCES += network/network.c
endif
libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/cache/cache-mcf5282.c
-
-libbsp_a_LIBADD = ../../../libcpu/@RTEMS_CPU@/shared/misc.rel
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/m68kidle.c
+libbsp_a_SOURCES += ../../../../../../bsps/m68k/shared/memProbe.c
include $(top_srcdir)/../../../../automake/local.am
include $(srcdir)/../../../../../../bsps/m68k/uC5282/headers.am
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 <rtems/system.h>
-#include <rtems/score/thread.h>
-
-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 <bsp.h>
-#include <string.h>
-#include <rtems/m68k/sim.h>
-
-#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;
-}