diff --git a/board/mpl/common/memtst.c b/board/mpl/common/memtst.c
index 1393ea1..92c33ba 100644
--- a/board/mpl/common/memtst.c
+++ b/board/mpl/common/memtst.c
@@ -468,32 +468,6 @@
 	 RAM_MemTest_CheckRandomPattern, NULL}
 };
 
-void mem_test_reloc(void)
-{
-	unsigned long addr;
-	int i;
-	for (i=0; i< TEST_STAGES; i++) {
-		addr = (ulong) (test_stage[i].test_write) + gd->reloc_off;
-		test_stage[i].test_write=
-			(void (*) (unsigned long startaddr, unsigned long size,
-						unsigned long *pat))addr;
-		addr = (ulong) (test_stage[i].test_write_desc) + gd->reloc_off;
-		test_stage[i].test_write_desc=(char *)addr;
-		if(test_stage[i].test_check1) {
-			addr = (ulong) (test_stage[i].test_check1) + gd->reloc_off;
-			test_stage[i].test_check1=
-				(void *(*) (int mode, unsigned long startaddr,
-				 unsigned long size, unsigned long *pat))addr;
-		}
-		if(test_stage[i].test_check2) {
-			addr = (ulong) (test_stage[i].test_check2) + gd->reloc_off;
-			test_stage[i].test_check2=
-				(void *(*) (int mode, unsigned long startaddr,
-				 unsigned long size, unsigned long *pat))addr;
-		}
-	}
-}
-
 
 int mem_test (unsigned long start, unsigned long ramsize, int quiet)
 {
diff --git a/board/mpl/mip405/mip405.c b/board/mpl/mip405/mip405.c
index ae8eade..495e9bd 100644
--- a/board/mpl/mip405/mip405.c
+++ b/board/mpl/mip405/mip405.c
@@ -717,7 +717,6 @@
 }
 #endif
 
-extern void mem_test_reloc(void);
 extern int mk_date (char *, struct rtc_time *);
 
 int last_stage_init (void)
@@ -725,7 +724,7 @@
 	unsigned long stop;
 	struct rtc_time newtm;
 	char *s;
-	mem_test_reloc();
+
 	/* write correct LED configuration */
 	if (miiphy_write("ppc_4xx_eth0", 0x1, 0x14, 0x2402) != 0) {
 		printf ("Error writing to the PHY\n");
diff --git a/board/mpl/pati/pati.c b/board/mpl/pati/pati.c
index 1b3b698..e12bc42 100644
--- a/board/mpl/pati/pati.c
+++ b/board/mpl/pati/pati.c
@@ -144,7 +144,6 @@
 
 
 extern int mem_test (unsigned long start, unsigned long ramsize, int quiet);
-extern void mem_test_reloc(void);
 
 /*
  * Get RAM size.
@@ -334,7 +333,6 @@
  ****************************************************************/
 int last_stage_init (void)
 {
-	mem_test_reloc();
 	init_ios();
 	return 0;
 }
diff --git a/board/mpl/vcma9/vcma9.c b/board/mpl/vcma9/vcma9.c
index 3216d63..2b64f44 100644
--- a/board/mpl/vcma9/vcma9.c
+++ b/board/mpl/vcma9/vcma9.c
@@ -312,11 +312,8 @@
 }
 
 
-extern void mem_test_reloc(void);
-
 int last_stage_init(void)
 {
-	mem_test_reloc();
 	checkboard();
 	stdio_print_current_devices();
 	check_env();
