summaryrefslogtreecommitdiff
path: root/arch/mips/sni
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2015-11-27 19:17:01 +0100
committerRalf Baechle <ralf@linux-mips.org>2015-11-27 19:20:37 +0100
commitc861519fcf95b2d46cb4275903423b43ae150a40 (patch)
tree7e17dcbb79a0a12dc06eae6d1bc3a5a3d8fa58ce /arch/mips/sni
parent1ec218373b8ebda821aec00bb156a9c94fad9cd4 (diff)
MIPS: Fix delay loops which may be removed by GCC.
GCC 4.1 and newer remove empty loops. This becomes a problem when delay loops get removed. Fixed by rewriting to user the proper Linux interface for such delays. Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Reported-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Acked-by: John Crispin <blogic@openwrt.org>
Diffstat (limited to 'arch/mips/sni')
-rw-r--r--arch/mips/sni/reset.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/mips/sni/reset.c b/arch/mips/sni/reset.c
index 244f9427625b..db8f88b6a3af 100644
--- a/arch/mips/sni/reset.c
+++ b/arch/mips/sni/reset.c
@@ -3,6 +3,8 @@
*
* Reset a SNI machine.
*/
+#include <linux/delay.h>
+
#include <asm/io.h>
#include <asm/reboot.h>
#include <asm/sni.h>
@@ -32,9 +34,9 @@ void sni_machine_restart(char *command)
for (;;) {
for (i = 0; i < 100; i++) {
kb_wait();
- for (j = 0; j < 100000 ; j++)
- /* nothing */;
+ udelay(50);
outb_p(0xfe, 0x64); /* pulse reset low */
+ udelay(50);
}
}
}