> -----Original Message----- > From: Wood Scott-B07421 > Sent: Wednesday, January 15, 2014 7:51 AM > To: Wang Dongsheng-B40534 > Cc: b...@kernel.crashing.org; Zhao Chenhui-B35336; an...@enomsg.org; linuxppc- > d...@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.w...@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.w...@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 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev