[PATCH 2/3] powerpc/85xx: Provide two functions to save/restore the core registers
Scott Wood
scottwood at freescale.com
Thu Jan 16 14:17:29 EST 2014
On Tue, 2014-01-14 at 21:30 -0600, Wang Dongsheng-B40534 wrote:
>
> > -----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)
Could you provide a concrete example?
> > > + /*
> > > + * 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.
It is not allowed to use FP at that point.
-Scott
More information about the Linuxppc-dev
mailing list