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