diff options
author | Atsushi Nemoto <anemo@mba.ocn.ne.jp> | 2008-07-24 00:25:17 +0900 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2008-07-30 21:54:38 +0100 |
commit | a49297e8fc8a9a835ac4ec124aa83028abdcc7d5 (patch) | |
tree | 04b9c04589033206888789122d436e287953480c /arch/mips/txx9/generic | |
parent | 455cc256eb23915100e203fb33ee143afd127954 (diff) |
[MIPS] TXx9: Cleanup restart/halt/power_off
Unify machine_restart/machine_halt/pm_power_off and add fallback
machine_halt routine.
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/txx9/generic')
-rw-r--r-- | arch/mips/txx9/generic/setup.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/arch/mips/txx9/generic/setup.c b/arch/mips/txx9/generic/setup.c index 4fbd7baa703..82272e85a04 100644 --- a/arch/mips/txx9/generic/setup.c +++ b/arch/mips/txx9/generic/setup.c @@ -22,6 +22,7 @@ #include <linux/gpio.h> #include <asm/bootinfo.h> #include <asm/time.h> +#include <asm/reboot.h> #include <asm/txx9/generic.h> #include <asm/txx9/pci.h> #ifdef CONFIG_CPU_TX49XX @@ -188,6 +189,25 @@ char * __init prom_getcmdline(void) return &(arcs_cmdline[0]); } +static void __noreturn txx9_machine_halt(void) +{ + local_irq_disable(); + clear_c0_status(ST0_IM); + while (1) { + if (cpu_wait) { + (*cpu_wait)(); + if (cpu_has_counter) { + /* + * Clear counter interrupt while it + * breaks WAIT instruction even if + * masked. + */ + write_c0_compare(0); + } + } + } +} + /* wrappers */ void __init plat_mem_setup(void) { @@ -195,6 +215,12 @@ void __init plat_mem_setup(void) ioport_resource.end = ~0UL; /* no limit */ iomem_resource.start = 0; iomem_resource.end = ~0UL; /* no limit */ + + /* fallback restart/halt routines */ + _machine_restart = (void (*)(char *))txx9_machine_halt; + _machine_halt = txx9_machine_halt; + pm_power_off = txx9_machine_halt; + #ifdef CONFIG_PCI pcibios_plat_setup = txx9_pcibios_setup; #endif |