1 /* 2 * This file is subject to the terms and conditions of the GNU General Public 3 * License. See the file "COPYING" in the main directory of this archive 4 * for more details. 5 * 6 * Copyright (C) 1997 Ralf Baechle 7 */ 8 #include <linux/sched.h> 9 #include <linux/mm.h> 10 #include <asm/io.h> 11 #include <asm/pgtable.h> 12 #include <asm/processor.h> 13 #include <asm/reboot.h> 14 #include <asm/system.h> 15 galileo_machine_restart(char * command)16void galileo_machine_restart(char *command) 17 { 18 *(volatile char *) 0xbc000000 = 0x0f; 19 /* 20 * Ouch, we're still alive ... This time we take the silver bullet ... 21 * ... and find that we leave the hardware in a state in which the 22 * kernel in the flush locks up somewhen during of after the PCI 23 * detection stuff. 24 */ 25 set_c0_status(ST0_BEV | ST0_ERL); 26 change_c0_config(CONF_CM_CMASK, CONF_CM_UNCACHED); 27 flush_cache_all(); 28 write_c0_wired(0); 29 __asm__ __volatile__("jr\t%0"::"r"(0xbfc00000)); 30 } 31 galileo_machine_halt(void)32void galileo_machine_halt(void) 33 { 34 printk(KERN_NOTICE "You can safely turn off the power\n"); 35 while (1) 36 __asm__(".set\tmips3\n\t" 37 "wait\n\t" 38 ".set\tmips0"); 39 40 } 41 galileo_machine_power_off(void)42void galileo_machine_power_off(void) 43 { 44 galileo_machine_halt(); 45 } 46