diff options
| author | 2009-06-18 11:16:55 +1000 | |
|---|---|---|
| committer | 2009-06-18 11:16:55 +1000 | |
| commit | 4b337c5f245b6587ba844ac7bb13c313a2912f7b (patch) | |
| tree | 999c6a6580b76a083c8efb9dabff709d1c49fcd0 /arch/mips/power/cpu.c | |
| parent | Merge commit 'origin/master' into next (diff) | |
| parent | Merge branch 'kmemleak' of git://linux-arm.org/linux-2.6 (diff) | |
| download | wireguard-linux-4b337c5f245b6587ba844ac7bb13c313a2912f7b.tar.xz wireguard-linux-4b337c5f245b6587ba844ac7bb13c313a2912f7b.zip | |
Merge commit 'origin/master' into next
Diffstat (limited to 'arch/mips/power/cpu.c')
| -rw-r--r-- | arch/mips/power/cpu.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/arch/mips/power/cpu.c b/arch/mips/power/cpu.c new file mode 100644 index 000000000000..7995df45dc8d --- /dev/null +++ b/arch/mips/power/cpu.c @@ -0,0 +1,43 @@ +/* + * Suspend support specific for mips. + * + * Licensed under the GPLv2 + * + * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology + * Author: Hu Hongbing <huhb@lemote.com> + * Wu Zhangjin <wuzj@lemote.com> + */ +#include <asm/suspend.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); + if (cpu_has_dsp) + save_dsp(current); +} + +void restore_processor_state(void) +{ + write_c0_status(saved_status); + + if (is_fpu_owner()) + restore_fp(current); + if (cpu_has_dsp) + 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); +} |
