1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
- * Author: Fuxin Zhang, zhangfx@lemote.com
- */
- #include <linux/pm.h>
- #include <asm/reboot.h>
- static void loongson2e_restart(char *command)
- {
- #ifdef CONFIG_32BIT
- *(unsigned long *)0xbfe00104 &= ~(1 << 2);
- *(unsigned long *)0xbfe00104 |= (1 << 2);
- #else
- *(unsigned long *)0xffffffffbfe00104 &= ~(1 << 2);
- *(unsigned long *)0xffffffffbfe00104 |= (1 << 2);
- #endif
- __asm__ __volatile__("jr\t%0"::"r"(0xbfc00000));
- }
- static void loongson2e_halt(void)
- {
- while (1) ;
- }
- static void loongson2e_power_off(void)
- {
- loongson2e_halt();
- }
- void mips_reboot_setup(void)
- {
- _machine_restart = loongson2e_restart;
- _machine_halt = loongson2e_halt;
- pm_power_off = loongson2e_power_off;
- }
|