2ef7f0dab6
Add Suspend-to-disk / swsusp / CONFIG_HIBERNATION support to the SuperH architecture. To suspend, use "swapon /dev/sda2; echo disk > /sys/power/state" To resume, pass "resume=/dev/sda2" on the kernel command line. The patch "pm: rework includes, remove arch ifdefs V2" is needed to allow the generic swsusp code to build properly. Hibernation is not enabled with this patch though, a patch setting ARCH_HIBERNATION_POSSIBLE will be submitted later. Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
39 lines
851 B
C
39 lines
851 B
C
/*
|
|
* swsusp.c - SuperH hibernation support
|
|
*
|
|
* Copyright (C) 2009 Magnus Damm
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*/
|
|
|
|
#include <linux/mm.h>
|
|
#include <linux/sched.h>
|
|
#include <linux/suspend.h>
|
|
#include <asm/suspend.h>
|
|
#include <asm/sections.h>
|
|
#include <asm/tlbflush.h>
|
|
#include <asm/page.h>
|
|
#include <asm/fpu.h>
|
|
|
|
struct swsusp_arch_regs swsusp_arch_regs_cpu0;
|
|
|
|
int pfn_is_nosave(unsigned long pfn)
|
|
{
|
|
unsigned long begin_pfn = __pa(&__nosave_begin) >> PAGE_SHIFT;
|
|
unsigned long end_pfn = PAGE_ALIGN(__pa(&__nosave_end)) >> PAGE_SHIFT;
|
|
|
|
return (pfn >= begin_pfn) && (pfn < end_pfn);
|
|
}
|
|
|
|
void save_processor_state(void)
|
|
{
|
|
init_fpu(current);
|
|
}
|
|
|
|
void restore_processor_state(void)
|
|
{
|
|
local_flush_tlb_all();
|
|
}
|