Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/sparc/power/hibernate.c
26424 views
1
// SPDX-License-Identifier: GPL-2.0
2
/*
3
* hibernate.c: Hibernaton support specific for sparc64.
4
*
5
* Copyright (C) 2013 Kirill V Tkhai ([email protected])
6
*/
7
8
#include <linux/suspend.h>
9
#include <linux/mm.h>
10
11
#include <asm/hibernate.h>
12
#include <asm/visasm.h>
13
#include <asm/page.h>
14
#include <asm/sections.h>
15
#include <asm/tlb.h>
16
17
struct saved_context saved_context;
18
19
/*
20
* pfn_is_nosave - check if given pfn is in the 'nosave' section
21
*/
22
23
int pfn_is_nosave(unsigned long pfn)
24
{
25
unsigned long nosave_begin_pfn = PFN_DOWN((unsigned long)&__nosave_begin);
26
unsigned long nosave_end_pfn = PFN_DOWN((unsigned long)&__nosave_end);
27
28
return (pfn >= nosave_begin_pfn) && (pfn < nosave_end_pfn);
29
}
30
31
void save_processor_state(void)
32
{
33
save_and_clear_fpu();
34
}
35
36
void restore_processor_state(void)
37
{
38
struct mm_struct *mm = current->active_mm;
39
40
tsb_context_switch_ctx(mm, CTX_HWBITS(mm->context));
41
}
42
43