diff options
Diffstat (limited to 'arch/i386/mach-voyager/voyager_basic.c')
-rw-r--r-- | arch/i386/mach-voyager/voyager_basic.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/arch/i386/mach-voyager/voyager_basic.c b/arch/i386/mach-voyager/voyager_basic.c index b3eda46e0fe9..aa49a33a572c 100644 --- a/arch/i386/mach-voyager/voyager_basic.c +++ b/arch/i386/mach-voyager/voyager_basic.c @@ -27,7 +27,6 @@ #include <asm/voyager.h> #include <asm/vic.h> #include <linux/pm.h> -#include <linux/irq.h> #include <asm/tlbflush.h> #include <asm/arch_hooks.h> #include <asm/i8253.h> @@ -234,10 +233,9 @@ voyager_power_off(void) #endif } /* and wait for it to happen */ - for(;;) { - __asm("cli"); - __asm("hlt"); - } + local_irq_disable(); + for(;;) + halt(); } /* copied from process.c */ @@ -252,6 +250,12 @@ kb_wait(void) } void +machine_shutdown(void) +{ + /* Architecture specific shutdown needed before a kexec */ +} + +void machine_restart(char *cmd) { printk("Voyager Warm Restart\n"); @@ -272,10 +276,16 @@ machine_restart(char *cmd) outb(basebd | 0x08, VOYAGER_MC_SETUP); outb(0x02, catbase + 0x21); } - for(;;) { - asm("cli"); - asm("hlt"); - } + local_irq_disable(); + for(;;) + halt(); +} + +void +machine_emergency_restart(void) +{ + /*for now, just hook this to a warm restart */ + machine_restart(NULL); } void |