diff --git a/post/drivers/memory.c b/post/drivers/memory.c
index 4fb9355..d249942 100644
--- a/post/drivers/memory.c
+++ b/post/drivers/memory.c
@@ -279,7 +279,7 @@
 	for (i = 0; i < size / sizeof (ulong); i++) {
 		mem[i] = val;
 		if (i % 1024 == 0)
-			WATCHDOG_RESET();
+			schedule();
 	}
 
 	for (i = 0; i < size / sizeof (ulong) && !ret; i++) {
@@ -292,7 +292,7 @@
 			break;
 		}
 		if (i % 1024 == 0)
-			WATCHDOG_RESET();
+			schedule();
 	}
 
 	return ret;
@@ -308,7 +308,7 @@
 	for (i = 0; i < size / sizeof (ulong); i++) {
 		mem[i] = 1 << (i % 32);
 		if (i % 1024 == 0)
-			WATCHDOG_RESET();
+			schedule();
 	}
 
 	for (i = 0; i < size / sizeof (ulong) && !ret; i++) {
@@ -321,7 +321,7 @@
 			break;
 		}
 		if (i % 1024 == 0)
-			WATCHDOG_RESET();
+			schedule();
 	}
 
 	return ret;
@@ -337,7 +337,7 @@
 	for (i = 0; i < size / sizeof (ulong); i++) {
 		mem[i] = i;
 		if (i % 1024 == 0)
-			WATCHDOG_RESET();
+			schedule();
 	}
 
 	for (i = 0; i < size / sizeof (ulong) && !ret; i++) {
@@ -350,7 +350,7 @@
 			break;
 		}
 		if (i % 1024 == 0)
-			WATCHDOG_RESET();
+			schedule();
 	}
 
 	return ret;
@@ -366,7 +366,7 @@
 	for (i = 0; i < size / sizeof (ulong); i++) {
 		mem[i] = ~i;
 		if (i % 1024 == 0)
-			WATCHDOG_RESET();
+			schedule();
 	}
 
 	for (i = 0; i < size / sizeof (ulong) && !ret; i++) {
@@ -379,7 +379,7 @@
 			break;
 		}
 		if (i % 1024 == 0)
-			WATCHDOG_RESET();
+			schedule();
 	}
 
 	return ret;
@@ -390,15 +390,15 @@
 	int ret = 0;
 
 	ret = memory_post_dataline((unsigned long long *)start);
-	WATCHDOG_RESET();
+	schedule();
 	if (!ret)
 		ret = memory_post_addrline((ulong *)start, (ulong *)start,
 				size);
-	WATCHDOG_RESET();
+	schedule();
 	if (!ret)
 		ret = memory_post_addrline((ulong *)(start+size-8),
 				(ulong *)start, size);
-	WATCHDOG_RESET();
+	schedule();
 
 	return ret;
 }
@@ -408,25 +408,25 @@
 	int ret = 0;
 
 	ret = memory_post_test1(start, size, 0x00000000);
-	WATCHDOG_RESET();
+	schedule();
 	if (!ret)
 		ret = memory_post_test1(start, size, 0xffffffff);
-	WATCHDOG_RESET();
+	schedule();
 	if (!ret)
 		ret = memory_post_test1(start, size, 0x55555555);
-	WATCHDOG_RESET();
+	schedule();
 	if (!ret)
 		ret = memory_post_test1(start, size, 0xaaaaaaaa);
-	WATCHDOG_RESET();
+	schedule();
 	if (!ret)
 		ret = memory_post_test2(start, size);
-	WATCHDOG_RESET();
+	schedule();
 	if (!ret)
 		ret = memory_post_test3(start, size);
-	WATCHDOG_RESET();
+	schedule();
 	if (!ret)
 		ret = memory_post_test4(start, size);
-	WATCHDOG_RESET();
+	schedule();
 
 	return ret;
 }
