Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 27657
b: refs/heads/master
c: c583122
h: refs/heads/master
i:
  27655: e89778c
v: v3
  • Loading branch information
Thiemo Seufer authored and Ralf Baechle committed Jun 19, 2006
1 parent 19350d8 commit 1b54869
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: eae89076e696f51762d81d6e2538c3beb59fa7bd
refs/heads/master: c583122c26ad04bb2379933dc5acc8b9479d6c67
2 changes: 1 addition & 1 deletion trunk/arch/mips/qemu/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
# 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_SMP) += q-smp.o
34 changes: 34 additions & 0 deletions trunk/arch/mips/qemu/q-reset.c
Original file line number Diff line number Diff line change
@@ -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;
}
4 changes: 4 additions & 0 deletions trunk/arch/mips/qemu/q-setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
#include <asm/io.h>
#include <asm/time.h>

extern void qemu_reboot_setup(void);

#define QEMU_PORT_BASE 0xb4000000

const char *get_system_type(void)
Expand All @@ -22,4 +24,6 @@ void __init plat_setup(void)
{
set_io_port_base(QEMU_PORT_BASE);
board_timer_setup = qemu_timer_setup;

qemu_reboot_setup();
}
6 changes: 6 additions & 0 deletions trunk/include/asm-mips/qemu.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */

0 comments on commit 1b54869

Please sign in to comment.