[PATCH 2/3] powerpc/85xx: Provide two functions to save/restore the core registers

Dongsheng.Wang at freescale.com Dongsheng.Wang at freescale.com
Wed Jan 15 14:30:02 EST 2014



> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Wednesday, January 15, 2014 7:51 AM
> To: Wang Dongsheng-B40534
> Cc: benh at kernel.crashing.org; Zhao Chenhui-B35336; anton at enomsg.org; linuxppc-
> dev at lists.ozlabs.org
> Subject: Re: [PATCH 2/3] powerpc/85xx: Provide two functions to save/restore the
> core registers
> 
> On Tue, 2014-01-14 at 15:59 +0800, Dongsheng Wang wrote:
> > From: Wang Dongsheng <dongsheng.wang at freescale.com>
> >
> > Add fsl_cpu_state_save/fsl_cpu_state_restore functions, used for deep
> > sleep and hibernation to save/restore core registers. We abstract out
> > save/restore code for use in various modules, to make them don't need
> > to maintain.
> >
> > Currently supported processors type are E6500, E5500, E500MC, E500v2
> > and E500v1.
> >
> > Signed-off-by: Wang Dongsheng <dongsheng.wang at freescale.com>
> 
> What is there that is specfic to a particular core type that can't be handled
> from C code?
> 

In the context of the calling, maybe not in C environment.(Deep sleep without
C environment when calling those interfaces)

> > +	/*
> > +	 * Need to save float-point registers if MSR[FP] = 1.
> > +	 */
> > +	mfmsr	r12
> > +	andi.	r12, r12, MSR_FP
> > +	beq	1f
> > +	do_sr_fpr_regs(save)
> 
> C code should have already ensured that MSR[FP] is not 1 (and thus the FP
> context has been saved).
> 

Yes, right. But I mean if the FP still use in core save flow, we need to save it.
In this process, i don't care what other code do, we need to focus on not losing
valuable data.

> > +/*
> > + * r3 = the virtual address of buffer
> > + * r4 = suspend type, 0-BASE_SAVE, 1-ALL_SAVE
> 
> #define these magic numbers, and define what is meant by "base save"
> versus "all save".

Ok, thanks.

-Dongsheng



More information about the Linuxppc-dev mailing list