| // SPDX-License-Identifier: GPL-2.0-only | |
| /* | |
| * Suspend support specific for mips. | |
| * | |
| * Copyright (C) 2009 Lemote Inc. | |
| * Author: Hu Hongbing <huhb@lemote.com> | |
| * Wu Zhangjin <wuzhangjin@gmail.com> | |
| */ | |
| #include <asm/sections.h> | |
| #include <asm/fpu.h> | |
| #include <asm/dsp.h> | |
| static u32 saved_status; | |
| struct pt_regs saved_regs; | |
| void save_processor_state(void) | |
| { | |
| saved_status = read_c0_status(); | |
| if (is_fpu_owner()) | |
| save_fp(current); | |
| save_dsp(current); | |
| } | |
| void restore_processor_state(void) | |
| { | |
| write_c0_status(saved_status); | |
| if (is_fpu_owner()) | |
| restore_fp(current); | |
| restore_dsp(current); | |
| } | |
| int pfn_is_nosave(unsigned long pfn) | |
| { | |
| unsigned long nosave_begin_pfn = PFN_DOWN(__pa(&__nosave_begin)); | |
| unsigned long nosave_end_pfn = PFN_UP(__pa(&__nosave_end)); | |
| return (pfn >= nosave_begin_pfn) && (pfn < nosave_end_pfn); | |
| } |