2010-05-28 23:09:12 -04:00
/*
* Copyright 2010 Tilera Corporation . All Rights Reserved .
*
* 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 , version 2.
*
* This program is distributed in the hope that it will be useful , but
* WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE , GOOD TITLE or
* NON INFRINGEMENT . See the GNU General Public License for
* more details .
*/
# include <linux/stddef.h>
# include <linux/reboot.h>
# include <linux/smp.h>
2010-06-25 17:04:17 -04:00
# include <linux/pm.h>
2013-02-01 15:06:06 -05:00
# include <linux/export.h>
2010-05-28 23:09:12 -04:00
# include <asm/page.h>
# include <asm/setup.h>
# include <hv/hypervisor.h>
# ifndef CONFIG_SMP
# define smp_send_stop()
# endif
void machine_halt ( void )
{
2010-11-01 15:24:29 -04:00
arch_local_irq_disable_all ( ) ;
2010-05-28 23:09:12 -04:00
smp_send_stop ( ) ;
hv_halt ( ) ;
}
void machine_power_off ( void )
{
2010-11-01 15:24:29 -04:00
arch_local_irq_disable_all ( ) ;
2010-05-28 23:09:12 -04:00
smp_send_stop ( ) ;
hv_power_off ( ) ;
}
void machine_restart ( char * cmd )
{
2010-11-01 15:24:29 -04:00
arch_local_irq_disable_all ( ) ;
2010-05-28 23:09:12 -04:00
smp_send_stop ( ) ;
hv_restart ( ( HV_VirtAddr ) " vmlinux " , ( HV_VirtAddr ) cmd ) ;
}
2010-06-25 17:04:17 -04:00
/* No interesting distinction to be made here. */
void ( * pm_power_off ) ( void ) = NULL ;
2013-02-01 15:06:06 -05:00
EXPORT_SYMBOL ( pm_power_off ) ;