sh: hibernation support
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>
This commit is contained in:
38
arch/sh/kernel/swsusp.c
Normal file
38
arch/sh/kernel/swsusp.c
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* 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();
|
||||
}
|
Reference in New Issue
Block a user