xref: /openbmc/linux/arch/powerpc/kernel/suspend.c (revision 49c3df6aaa6a51071fc135273d1a2515d019099f)
1*49c3df6aSVivek Goyal /*
2*49c3df6aSVivek Goyal  * Suspend support specific for power.
3*49c3df6aSVivek Goyal  *
4*49c3df6aSVivek Goyal  * Distribute under GPLv2
5*49c3df6aSVivek Goyal  *
6*49c3df6aSVivek Goyal  * Copyright (c) 2002 Pavel Machek <pavel@suse.cz>
7*49c3df6aSVivek Goyal  * Copyright (c) 2001 Patrick Mochel <mochel@osdl.org>
8*49c3df6aSVivek Goyal  */
9*49c3df6aSVivek Goyal 
10*49c3df6aSVivek Goyal #include <asm/page.h>
11*49c3df6aSVivek Goyal 
12*49c3df6aSVivek Goyal /* References to section boundaries */
13*49c3df6aSVivek Goyal extern const void __nosave_begin, __nosave_end;
14*49c3df6aSVivek Goyal 
15*49c3df6aSVivek Goyal /*
16*49c3df6aSVivek Goyal  *	pfn_is_nosave - check if given pfn is in the 'nosave' section
17*49c3df6aSVivek Goyal  */
18*49c3df6aSVivek Goyal 
19*49c3df6aSVivek Goyal int pfn_is_nosave(unsigned long pfn)
20*49c3df6aSVivek Goyal {
21*49c3df6aSVivek Goyal 	unsigned long nosave_begin_pfn = __pa(&__nosave_begin) >> PAGE_SHIFT;
22*49c3df6aSVivek Goyal 	unsigned long nosave_end_pfn = PAGE_ALIGN(__pa(&__nosave_end)) >> PAGE_SHIFT;
23*49c3df6aSVivek Goyal 	return (pfn >= nosave_begin_pfn) && (pfn < nosave_end_pfn);
24*49c3df6aSVivek Goyal }
25