xref: /openbmc/linux/arch/sh/kernel/swsusp.c (revision 5933f6d2)
15933f6d2SKuninori Morimoto // SPDX-License-Identifier: GPL-2.0
22ef7f0daSMagnus Damm /*
32ef7f0daSMagnus Damm  * swsusp.c - SuperH hibernation support
42ef7f0daSMagnus Damm  *
52ef7f0daSMagnus Damm  * Copyright (C) 2009 Magnus Damm
62ef7f0daSMagnus Damm  */
72ef7f0daSMagnus Damm 
82ef7f0daSMagnus Damm #include <linux/mm.h>
92ef7f0daSMagnus Damm #include <linux/sched.h>
102ef7f0daSMagnus Damm #include <linux/suspend.h>
112ef7f0daSMagnus Damm #include <asm/suspend.h>
122ef7f0daSMagnus Damm #include <asm/sections.h>
132ef7f0daSMagnus Damm #include <asm/tlbflush.h>
142ef7f0daSMagnus Damm #include <asm/page.h>
152ef7f0daSMagnus Damm #include <asm/fpu.h>
162ef7f0daSMagnus Damm 
172ef7f0daSMagnus Damm struct swsusp_arch_regs swsusp_arch_regs_cpu0;
182ef7f0daSMagnus Damm 
pfn_is_nosave(unsigned long pfn)192ef7f0daSMagnus Damm int pfn_is_nosave(unsigned long pfn)
202ef7f0daSMagnus Damm {
212ef7f0daSMagnus Damm 	unsigned long begin_pfn = __pa(&__nosave_begin) >> PAGE_SHIFT;
222ef7f0daSMagnus Damm 	unsigned long end_pfn = PAGE_ALIGN(__pa(&__nosave_end)) >> PAGE_SHIFT;
232ef7f0daSMagnus Damm 
242ef7f0daSMagnus Damm 	return (pfn >= begin_pfn) && (pfn < end_pfn);
252ef7f0daSMagnus Damm }
262ef7f0daSMagnus Damm 
save_processor_state(void)272ef7f0daSMagnus Damm void save_processor_state(void)
282ef7f0daSMagnus Damm {
292ef7f0daSMagnus Damm 	init_fpu(current);
302ef7f0daSMagnus Damm }
312ef7f0daSMagnus Damm 
restore_processor_state(void)322ef7f0daSMagnus Damm void restore_processor_state(void)
332ef7f0daSMagnus Damm {
342ef7f0daSMagnus Damm 	local_flush_tlb_all();
352ef7f0daSMagnus Damm }
36