From: Thiemo Seufer <ths@networkno.de>
To: linux-mips@linux-mips.org
Cc: ralf@linux-mips.org
Subject: [PATCH] Qemu system shutdown support
Date: Mon, 15 May 2006 18:25:58 +0100 [thread overview]
Message-ID: <20060515172558.GD9026@networkno.de> (raw)
Support for qemu system shutdown.
Signed-off-by: Thiemo Seufer <ths@networkno.de>
diff -urpN linux-orig/arch/mips/qemu/Makefile linux-work/arch/mips/qemu/Makefile
--- linux-orig/arch/mips/qemu/Makefile 2006-04-24 12:02:26.000000000 +0100
+++ linux-work/arch/mips/qemu/Makefile 2006-05-15 03:07:31.000000000 +0100
@@ -2,7 +2,7 @@
# Makefile for Qemu specific kernel interface routines under Linux.
#
-obj-y = q-firmware.o q-irq.o q-mem.o q-setup.o
+obj-y = q-firmware.o q-irq.o q-mem.o q-setup.o q-reset.o
obj-$(CONFIG_VT) += q-vga.o
obj-$(CONFIG_SMP) += q-smp.o
diff -urpN linux-orig/arch/mips/qemu/q-reset.c linux-work/arch/mips/qemu/q-reset.c
--- linux-orig/arch/mips/qemu/q-reset.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-work/arch/mips/qemu/q-reset.c 2006-05-15 03:06:44.000000000 +0100
@@ -0,0 +1,34 @@
+#include <linux/config.h>
+
+#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;
+}
diff -urpN linux-orig/arch/mips/qemu/q-setup.c linux-work/arch/mips/qemu/q-setup.c
--- linux-orig/arch/mips/qemu/q-setup.c 2006-04-24 12:02:26.000000000 +0100
+++ linux-work/arch/mips/qemu/q-setup.c 2006-05-15 03:06:44.000000000 +0100
@@ -3,6 +3,7 @@
#include <asm/time.h>
extern void qvga_init(void);
+extern void qemu_reboot_setup(void);
#define QEMU_PORT_BASE 0xb4000000
@@ -27,4 +28,6 @@ void __init plat_setup(void)
qvga_init();
#endif
board_timer_setup = qemu_timer_setup;
+
+ qemu_reboot_setup();
}
diff -urpN linux-orig/include/asm-mips/qemu.h linux-work/include/asm-mips/qemu.h
--- linux-orig/include/asm-mips/qemu.h 2006-04-24 12:02:35.000000000 +0100
+++ linux-work/include/asm-mips/qemu.h 2006-05-15 03:06:44.000000000 +0100
@@ -21,4 +21,10 @@
*/
#define QEMU_C0_COUNTER_CLOCK 100000000
+/*
+ * Magic qemu system control location.
+ */
+#define QEMU_RESTART_REG 0xBFBF0000
+#define QEMU_HALT_REG 0xBFBF0004
+
#endif /* __ASM_QEMU_H */
next reply other threads:[~2006-05-15 17:26 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-15 17:25 Thiemo Seufer [this message]
2006-05-15 17:30 ` [PATCH] Qemu system shutdown support Martin Michlmayr
2006-05-15 17:59 ` Thiemo Seufer
2006-05-16 17:50 ` Ralf Baechle
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060515172558.GD9026@networkno.de \
--to=ths@networkno.de \
--cc=linux-mips@linux-mips.org \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.