This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / arch / mips / qemu / q-reset.c
diff --git a/arch/mips/qemu/q-reset.c b/arch/mips/qemu/q-reset.c
new file mode 100644 (file)
index 0000000..dbbe44a
--- /dev/null
@@ -0,0 +1,33 @@
+
+#include <asm/io.h>
+#include <asm/reboot.h>
+#include <asm/cacheflush.h>
+#include <asm/qemu.h>
+
+static void qemu_machine_restart(char *command)
+{
+       volatile unsigned int *reg = (unsigned int *)QEMU_RESTART_REG;
+
+       set_c0_status(ST0_BEV | ST0_ERL);
+       change_c0_config(CONF_CM_CMASK, CONF_CM_UNCACHED);
+       flush_cache_all();
+       write_c0_wired(0);
+       *reg = 42;
+       while (1)
+               cpu_wait();
+}
+
+static void qemu_machine_halt(void)
+{
+       volatile unsigned int *reg = (unsigned int *)QEMU_HALT_REG;
+
+       *reg = 42;
+       while (1)
+               cpu_wait();
+}
+
+void qemu_reboot_setup(void)
+{
+       _machine_restart = qemu_machine_restart;
+       _machine_halt = qemu_machine_halt;
+}