Re: [U-Boot] [PATCH] arm: psci: save and restore registers from r4 to r12
On Fri, Oct 14, 2016 at 8:14 AM, Chenhui Zhaowrote: > On Thu, Oct 13, 2016 at 5:52 PM, Chen-Yu Tsai wrote: >> On Sat, Oct 8, 2016 at 7:08 PM, Chenhui Zhao wrote: >>> Save and restore core registers from r4 to r12 so that PSCI code won't >>> break their value. >>> >>> Signed-off-by: Chenhui Zhao >>> Signed-off-by: Alison Wang >>> Signed-off-by: Abhimanyu Saini >>> --- >>> arch/arm/cpu/armv7/psci.S | 4 ++-- >>> 1 file changed, 2 insertions(+), 2 deletions(-) >>> >>> diff --git a/arch/arm/cpu/armv7/psci.S b/arch/arm/cpu/armv7/psci.S >>> index 6a36208..746297c 100644 >>> --- a/arch/arm/cpu/armv7/psci.S >>> +++ b/arch/arm/cpu/armv7/psci.S >>> @@ -152,7 +152,7 @@ _psci_table: >>> .word 0 >>> >>> _smc_psci: >>> - push{r4-r7,lr} >>> + push{r4-r12,lr} >> >> This change is not needed. This function only uses r4-r7. >> Any subroutines called should save variable registers (r4-r12) >> themselves, per the ARM calling conventions. >> >> ChenYu >> > > I do not think it is a normal calling, instead it is an exception > handler. In the exception context, > it is necessary to save/restore all registers. It should be the same for an exception handler. You only save the registers that you clobber, at each function level. ChenYu > > Sorry, my mail server has something wrong. > > Chenhui > >>> >>> @ Switch to secure >>> mrc p15, 0, r7, c1, c1, 0 >>> @@ -175,7 +175,7 @@ _smc_psci: >>> @ Switch back to non-secure >>> 2: mcr p15, 0, r7, c1, c1, 0 >>> >>> - pop {r4-r7, lr} >>> + pop {r4-r12, lr} >>> movspc, lr @ Return to the kernel >>> >>> @ Requires dense and single-cluster CPU ID space >>> -- >>> 1.9.1 >>> >>> ___ >>> U-Boot mailing list >>> U-Boot@lists.denx.de >>> http://lists.denx.de/mailman/listinfo/u-boot ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] arm: psci: save and restore registers from r4 to r12
On Thu, Oct 13, 2016 at 5:52 PM, Chen-Yu Tsaiwrote: > On Sat, Oct 8, 2016 at 7:08 PM, Chenhui Zhao wrote: >> Save and restore core registers from r4 to r12 so that PSCI code won't >> break their value. >> >> Signed-off-by: Chenhui Zhao >> Signed-off-by: Alison Wang >> Signed-off-by: Abhimanyu Saini >> --- >> arch/arm/cpu/armv7/psci.S | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/arch/arm/cpu/armv7/psci.S b/arch/arm/cpu/armv7/psci.S >> index 6a36208..746297c 100644 >> --- a/arch/arm/cpu/armv7/psci.S >> +++ b/arch/arm/cpu/armv7/psci.S >> @@ -152,7 +152,7 @@ _psci_table: >> .word 0 >> >> _smc_psci: >> - push{r4-r7,lr} >> + push{r4-r12,lr} > > This change is not needed. This function only uses r4-r7. > Any subroutines called should save variable registers (r4-r12) > themselves, per the ARM calling conventions. > > ChenYu > I do not think it is a normal calling, instead it is an exception handler. In the exception context, it is necessary to save/restore all registers. Sorry, my mail server has something wrong. Chenhui >> >> @ Switch to secure >> mrc p15, 0, r7, c1, c1, 0 >> @@ -175,7 +175,7 @@ _smc_psci: >> @ Switch back to non-secure >> 2: mcr p15, 0, r7, c1, c1, 0 >> >> - pop {r4-r7, lr} >> + pop {r4-r12, lr} >> movspc, lr @ Return to the kernel >> >> @ Requires dense and single-cluster CPU ID space >> -- >> 1.9.1 >> >> ___ >> U-Boot mailing list >> U-Boot@lists.denx.de >> http://lists.denx.de/mailman/listinfo/u-boot ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] arm: psci: save and restore registers from r4 to r12
From: Chen-Yu Tsai <w...@csie.org> Sent: Thursday, October 13, 2016 5:52 PM To: C.H. Zhao Cc: U-Boot Mailing List; Albert ARIBAUD; z.chen...@gmail.com Subject: Re: [U-Boot] [PATCH] arm: psci: save and restore registers from r4 to r12 On Sat, Oct 8, 2016 at 7:08 PM, Chenhui Zhao <chenhui.z...@nxp.com> wrote: > Save and restore core registers from r4 to r12 so that PSCI code won't > break their value. > > Signed-off-by: Chenhui Zhao <chenhui.z...@nxp.com> > Signed-off-by: Alison Wang <alison.w...@nxp.com> > Signed-off-by: Abhimanyu Saini <abhimanyu.sa...@nxp.com> > --- > arch/arm/cpu/armv7/psci.S | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/cpu/armv7/psci.S b/arch/arm/cpu/armv7/psci.S > index 6a36208..746297c 100644 > --- a/arch/arm/cpu/armv7/psci.S > +++ b/arch/arm/cpu/armv7/psci.S > @@ -152,7 +152,7 @@ _psci_table: > .word 0 > > _smc_psci: > - push{r4-r7,lr} > + push{r4-r12,lr} This change is not needed. This function only uses r4-r7. Any subroutines called should save variable registers (r4-r12) themselves, per the ARM calling conventions. ChenYu [Chenhui] I do not think it is a normal calling, instead it is an exception handler. In the exception context, it is necessary to save/restore all registers. > > @ Switch to secure > mrc p15, 0, r7, c1, c1, 0 > @@ -175,7 +175,7 @@ _smc_psci: > @ Switch back to non-secure > 2: mcr p15, 0, r7, c1, c1, 0 > > - pop {r4-r7, lr} > + pop {r4-r12, lr} > movspc, lr @ Return to the kernel > > @ Requires dense and single-cluster CPU ID space > -- > 1.9.1 > > ___ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot U-Boot Info Page - lists.denx.de Mailing Lists<http://lists.denx.de/mailman/listinfo/u-boot> lists.denx.de To see the collection of prior postings to the list, visit the U-Boot Archives. Using U-Boot: To post a message to all the list members, send email to ... ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] arm: psci: save and restore registers from r4 to r12
On Sat, Oct 8, 2016 at 7:08 PM, Chenhui Zhaowrote: > Save and restore core registers from r4 to r12 so that PSCI code won't > break their value. > > Signed-off-by: Chenhui Zhao > Signed-off-by: Alison Wang > Signed-off-by: Abhimanyu Saini > --- > arch/arm/cpu/armv7/psci.S | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/cpu/armv7/psci.S b/arch/arm/cpu/armv7/psci.S > index 6a36208..746297c 100644 > --- a/arch/arm/cpu/armv7/psci.S > +++ b/arch/arm/cpu/armv7/psci.S > @@ -152,7 +152,7 @@ _psci_table: > .word 0 > > _smc_psci: > - push{r4-r7,lr} > + push{r4-r12,lr} This change is not needed. This function only uses r4-r7. Any subroutines called should save variable registers (r4-r12) themselves, per the ARM calling conventions. ChenYu > > @ Switch to secure > mrc p15, 0, r7, c1, c1, 0 > @@ -175,7 +175,7 @@ _smc_psci: > @ Switch back to non-secure > 2: mcr p15, 0, r7, c1, c1, 0 > > - pop {r4-r7, lr} > + pop {r4-r12, lr} > movspc, lr @ Return to the kernel > > @ Requires dense and single-cluster CPU ID space > -- > 1.9.1 > > ___ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot