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