1*5933f6d2SKuninori 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 Dammint 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 Dammvoid save_processor_state(void) 282ef7f0daSMagnus Damm { 292ef7f0daSMagnus Damm init_fpu(current); 302ef7f0daSMagnus Damm } 312ef7f0daSMagnus Damm restore_processor_state(void)322ef7f0daSMagnus Dammvoid restore_processor_state(void) 332ef7f0daSMagnus Damm { 342ef7f0daSMagnus Damm local_flush_tlb_all(); 352ef7f0daSMagnus Damm } 36