[U-Boot] [PATCH] arm: fix hvc call

Ibai Erkiaga Elorza IBAIE at xilinx.com
Tue Feb 19 07:38:48 UTC 2019


Hi Alexander,

> -----Original Message-----
> From: Alexander Graf <agraf at suse.de>
> Sent: 18 February 2019 13:50
> To: Ibai Erkiaga Elorza <IBAIE at xilinx.com>; u-boot at lists.denx.de
> Cc: Sumit Garg <sumit.garg at linaro.org>; Heinrich Schuchardt
> <xypron.glpk at gmx.de>; Tom Rini <trini at konsulko.com>; Albert Aribaud
> <albert.u.boot at aribaud.net>
> Subject: Re: [PATCH] arm: fix hvc call
> 
> 
> 
> On 18.02.19 14:10, Ibai Erkiaga wrote:
> > HVC call makes use of 6 arguments rather than 7 in the same way as SMC
> > calls. The 7th argument is optional for both HVC and SMC but is
> > implemented as 16-bit parameter and register R7 or W7.
> 
> The patch description is lacking a bit more context. Why not change SMC to also
> include x7?
> 
Definitively both approaches might be valid. The aim of the patch is just avoid compilation error due to an invalid asm code in the HVC call so that's why I'm removing the 7th argument. The Client ID (7th argument) could be used either for SMC or HVC but I don't have a testcase for it and seems that nobody is using up to date.

> >
> > Signed-off-by: Ibai Erkiaga <ibai.erkiaga-elorza at xilinx.com>
> > ---
> > The issue does not report any error in a normal build as hvc_call is
> > not used at all and is optimized by the compiler. Using -O0 triggers
> > the error so the patch is intended to fix issues on a ongoing effor to
> > build U-Boot with -O0.
> 
> This should definitely not go below the --- line as it's critical information for
> anyone who later on reads the commit message in the log.
> 
> 
> Alex
> 
> >
> >  arch/arm/cpu/armv8/fwcall.c | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/arch/arm/cpu/armv8/fwcall.c b/arch/arm/cpu/armv8/fwcall.c
> > index 9957c29..b0aca1b 100644
> > --- a/arch/arm/cpu/armv8/fwcall.c
> > +++ b/arch/arm/cpu/armv8/fwcall.c
> > @@ -28,7 +28,6 @@ static void hvc_call(struct pt_regs *args)
> >                 "ldr x4, %4\n"
> >                 "ldr x5, %5\n"
> >                 "ldr x6, %6\n"
> > -               "ldr x7, %7\n"
> >                 "hvc    #0\n"
> >                 "str x0, %0\n"
> >                 "str x1, %1\n"
> > @@ -37,7 +36,7 @@ static void hvc_call(struct pt_regs *args)
> >                 : "+m" (args->regs[0]), "+m" (args->regs[1]),
> >                   "+m" (args->regs[2]), "+m" (args->regs[3])
> >                 : "m" (args->regs[4]), "m" (args->regs[5]),
> > -                 "m" (args->regs[6]), "m" (args->regs[7])
> > +                 "m" (args->regs[6])
> >                 : "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7",
> >                   "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15",
> >                   "x16", "x17");
> > --
> > 1.8.3.1
> >


More information about the U-Boot mailing list