diff options
author | James Hogan <james.hogan@imgtec.com> | 2014-03-04 11:25:45 +0100 |
---|---|---|
committer | Paul Burton <paul.burton@imgtec.com> | 2014-05-02 17:39:10 +0200 |
commit | 74e91335190c628b870c69cff8360d23707b1f53 (patch) | |
tree | 255cb7709b6123938c057f206522f00e2b450d9f /arch/mips/kernel/asm-offsets.c | |
parent | MIPS: tlb-r4k: Add CPU PM callback to reconfigure TLB (diff) | |
download | linux-74e91335190c628b870c69cff8360d23707b1f53.tar.xz linux-74e91335190c628b870c69cff8360d23707b1f53.zip |
MIPS: PM: Implement PM helper macros
Implement assembler helper macros in asm/pm.h for platform code to use
for saving context across low power states - for example suspend to RAM
or powered down cpuidle states. Macros are provided for saving and
restoring the main CPU context used by C code and doing important
configuration which must be done very early during resume. Notably EVA
needs segmentation control registers to be restored before the stack or
dynamically allocated memory is accessed, so that state is saved in
global data.
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Diffstat (limited to 'arch/mips/kernel/asm-offsets.c')
-rw-r--r-- | arch/mips/kernel/asm-offsets.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/mips/kernel/asm-offsets.c b/arch/mips/kernel/asm-offsets.c index 0ea75c244b48..e085cde13dba 100644 --- a/arch/mips/kernel/asm-offsets.c +++ b/arch/mips/kernel/asm-offsets.c @@ -14,6 +14,7 @@ #include <linux/mm.h> #include <linux/kbuild.h> #include <linux/suspend.h> +#include <asm/pm.h> #include <asm/ptrace.h> #include <asm/processor.h> #include <asm/smp-cps.h> @@ -404,6 +405,20 @@ void output_pbe_defines(void) } #endif +#ifdef CONFIG_CPU_PM +void output_pm_defines(void) +{ + COMMENT(" PM offsets. "); +#ifdef CONFIG_EVA + OFFSET(SSS_SEGCTL0, mips_static_suspend_state, segctl[0]); + OFFSET(SSS_SEGCTL1, mips_static_suspend_state, segctl[1]); + OFFSET(SSS_SEGCTL2, mips_static_suspend_state, segctl[2]); +#endif + OFFSET(SSS_SP, mips_static_suspend_state, sp); + BLANK(); +} +#endif + void output_kvm_defines(void) { COMMENT(" KVM/MIPS Specfic offsets. "); |