linux/arch/sparc/power/hibernate.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 * hibernate.c:  Hibernaton support specific for sparc64.
   4 *
   5 * Copyright (C) 2013 Kirill V Tkhai (tkhai@yandex.ru)
   6 */
   7
   8#include <linux/mm.h>
   9
  10#include <asm/hibernate.h>
  11#include <asm/visasm.h>
  12#include <asm/page.h>
  13#include <asm/sections.h>
  14#include <asm/tlb.h>
  15
  16struct saved_context saved_context;
  17
  18/*
  19 *      pfn_is_nosave - check if given pfn is in the 'nosave' section
  20 */
  21
  22int pfn_is_nosave(unsigned long pfn)
  23{
  24        unsigned long nosave_begin_pfn = PFN_DOWN((unsigned long)&__nosave_begin);
  25        unsigned long nosave_end_pfn = PFN_DOWN((unsigned long)&__nosave_end);
  26
  27        return (pfn >= nosave_begin_pfn) && (pfn < nosave_end_pfn);
  28}
  29
  30void save_processor_state(void)
  31{
  32        save_and_clear_fpu();
  33}
  34
  35void restore_processor_state(void)
  36{
  37        struct mm_struct *mm = current->active_mm;
  38
  39        tsb_context_switch_ctx(mm, CTX_HWBITS(mm->context));
  40}
  41