/* Drop into the prom, with the chance to continue with the 'go' * prom command. */ void prom_cmdline(void) { unsigned long flags; __save_and_cli(flags); #ifdef CONFIG_SUN_CONSOLE if(!serial_console && prom_palette) prom_palette (1); #endif #ifdef CONFIG_SMP smp_capture(); #endif p1275_cmd ("enter", P1275_INOUT(0,0)); #ifdef CONFIG_SMP smp_release(); spin_unlock_wait(&__br_write_locks[BR_GLOBALIRQ_LOCK].lock); #endif #ifdef CONFIG_SUN_CONSOLE if(!serial_console && prom_palette) prom_palette (0); #endif __restore_flags(flags); }
/* Drop into the prom, with the chance to continue with the 'go' * prom command. */ void prom_cmdline(void) { extern void install_obp_ticker(void); extern void install_linux_ticker(void); unsigned long flags; if(!serial_console && prom_palette) prom_palette (1); spin_lock_irqsave(&prom_lock, flags); install_obp_ticker(); (*(romvec->pv_abort))(); restore_current(); install_linux_ticker(); spin_unlock_irqrestore(&prom_lock, flags); #ifdef CONFIG_SUN_AUXIO set_auxio(AUXIO_LED, 0); #endif if(!serial_console && prom_palette) prom_palette (0); }
void machine_halt(void) { sti(); mdelay(8); cli(); #ifdef CONFIG_SUN_CONSOLE if (!serial_console && prom_palette) prom_palette (1); #endif prom_halt(); panic("Halt failed!"); }
/* Drop into the prom, with the chance to continue with the 'go' * prom command. */ void prom_cmdline(void) { unsigned long flags; __save_and_cli(flags); #ifdef CONFIG_SUN_CONSOLE if(!serial_console && prom_palette) prom_palette (1); #endif /* We always arrive here via a serial interrupt. * So in order for everything to work reliably, even * on SMP, we need to drop the IRQ locks we hold. */ #ifdef CONFIG_SMP irq_exit(smp_processor_id(), 0); smp_capture(); #else local_irq_count(smp_processor_id())--; #endif p1275_cmd ("enter", P1275_INOUT(0,0)); #ifdef CONFIG_SMP smp_release(); irq_enter(smp_processor_id(), 0); spin_unlock_wait(&__br_write_locks[BR_GLOBALIRQ_LOCK].lock); #else local_irq_count(smp_processor_id())++; #endif #ifdef CONFIG_SUN_CONSOLE if(!serial_console && prom_palette) prom_palette (0); #endif __restore_flags(flags); }
/* Drop into the prom, with the chance to continue with the 'go' * prom command. */ void prom_cmdline(void) { unsigned long flags; local_irq_save(flags); if (!serial_console && prom_palette) prom_palette(1); #ifdef CONFIG_SMP smp_capture(); #endif p1275_cmd("enter", P1275_INOUT(0, 0)); #ifdef CONFIG_SMP smp_release(); #endif if (!serial_console && prom_palette) prom_palette(0); local_irq_restore(flags); }
void machine_restart(char * cmd) { char *p; sti(); mdelay(8); cli(); p = strchr (reboot_command, '\n'); if (p) *p = 0; #ifdef CONFIG_SUN_CONSOLE if (!serial_console && prom_palette) prom_palette (1); #endif if (cmd) prom_reboot(cmd); if (*reboot_command) prom_reboot(reboot_command); prom_feval ("reset"); panic("Reboot failed!"); }