1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Suspend support specific for mips. 4 * 5 * Copyright (C) 2009 Lemote Inc. 6 * Author: Hu Hongbing <huhb@lemote.com> 7 * Wu Zhangjin <wuzhangjin@gmail.com> 8 */ 9 #include <asm/sections.h> 10 #include <asm/fpu.h> 11 #include <asm/dsp.h> 12 13 static u32 saved_status; 14 struct pt_regs saved_regs; 15 16 void save_processor_state(void) 17 { 18 saved_status = read_c0_status(); 19 20 if (is_fpu_owner()) 21 save_fp(current); 22 if (cpu_has_dsp) 23 save_dsp(current); 24 } 25 26 void restore_processor_state(void) 27 { 28 write_c0_status(saved_status); 29 30 if (is_fpu_owner()) 31 restore_fp(current); 32 if (cpu_has_dsp) 33 restore_dsp(current); 34 } 35 36 int pfn_is_nosave(unsigned long pfn) 37 { 38 unsigned long nosave_begin_pfn = PFN_DOWN(__pa(&__nosave_begin)); 39 unsigned long nosave_end_pfn = PFN_UP(__pa(&__nosave_end)); 40 41 return (pfn >= nosave_begin_pfn) && (pfn < nosave_end_pfn); 42 } 43