From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by mx.groups.io with SMTP id smtpd.web12.1781.1613212113662360008 for ; Sat, 13 Feb 2021 02:28:33 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=maNJrPEw; spf=pass (domain: kernel.org, ip: 198.145.29.99, mailfrom: ardb@kernel.org) Received: by mail.kernel.org (Postfix) with ESMTPSA id C8FAA64E43 for ; Sat, 13 Feb 2021 10:28:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1613212112; bh=FW1yYIJvBMV42LYv+7t7Pn7eS5PWUVHT9jloZwEDXE4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=maNJrPEwgmSg+S/BTY51/l2f7luCMCzdo/z1FAtnFyOeLqDFBnlfc/xTQq8Y0sOKC 056bwf9F2AgRi//nRPzk1uzsMPUjEgY649r/30IkYa5/+0YO6U+UpuVdWlMWHoBIvU GlM8Np6kPe16+sKbv+HuShY/EeHMJC0LjGo2CdtiFHJkrWY1/z39Uw2sXaip/mx9iz AtiWf6YxiERLVC5NAdQHWE/rVV73O8lWkivR0ihiiS5D43T++rSmsC3F6zpPlsFAbT 5X5FQU11MafLCUhzMLltmkLD9SWIZvj4VZ0sfOzPMI6kkyjTxMTyv+h1b2nDph58Cn Gim4WOOsFOdlQ== Received: by mail-ot1-f44.google.com with SMTP id r21so1603697otk.13 for ; Sat, 13 Feb 2021 02:28:32 -0800 (PST) X-Gm-Message-State: AOAM533Gz8SzgLWhfvpVDyBAvStDOxl3z8iL81e0t7nKb0e8nRt3GHjA b0rNIRFXkzxxiRKou1QqdPvXifs6ODQPnBDizh0= X-Google-Smtp-Source: ABdhPJzrEdYqlRiU0sTiGPrxpi8uJS4FADVjjxhapVLBYDcHPOqIRNOndz7dLg+nnbzKqXLd3uce8etH0jzkCuKgc+4= X-Received: by 2002:a05:6830:13ce:: with SMTP id e14mr4898936otq.108.1613212111993; Sat, 13 Feb 2021 02:28:31 -0800 (PST) MIME-Version: 1.0 References: <20210115061404.13552-1-sughosh.ganu@linaro.org> <20210115061404.13552-3-sughosh.ganu@linaro.org> In-Reply-To: <20210115061404.13552-3-sughosh.ganu@linaro.org> From: "Ard Biesheuvel" Date: Sat, 13 Feb 2021 11:28:21 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [edk2-devel] [PATCH v3 02/13] ArmPkg/ArmSvcLib: Return x4-x7 in output parameters To: devel@edk2.groups.io, Sughosh Ganu Cc: Sami Mujawar , Ard Biesheuvel , Leif Lindholm , Sahil Malhotra , Ilias Apalodimas , Achin Gupta Content-Type: text/plain; charset="UTF-8" On Fri, 15 Jan 2021 at 07:14, Sughosh Ganu wrote: > > From: Achin Gupta > > The Arm SMC calling convention standard v1.2 allows 8 input and output > parameter registers. The FF-A specification relies on this > communication. This patch extends the number of output registers > returned by ArmCallSvc() to match this convention. > > Signed-off-by: Achin Gupta > Reviewed-by: Sami Mujawar Reviewed-by: Ard Biesheuvel > --- > > Changes since V2: None > > ArmPkg/Include/Library/ArmSvcLib.h | 10 ++++++++-- > ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S | 4 +++- > 2 files changed, 11 insertions(+), 3 deletions(-) > > diff --git a/ArmPkg/Include/Library/ArmSvcLib.h b/ArmPkg/Include/Library/ArmSvcLib.h > index a94ead1965..a4414270f3 100644 > --- a/ArmPkg/Include/Library/ArmSvcLib.h > +++ b/ArmPkg/Include/Library/ArmSvcLib.h > @@ -27,10 +27,16 @@ typedef struct { > /** > Trigger an SVC call > > - SVC calls can take up to 7 arguments and return up to 4 return values. > - Therefore, the 4 first fields in the ARM_SVC_ARGS structure are used > + SVC calls can take up to 8 arguments and return up to 8 return values. > + Therefore, the 8 first fields in the ARM_SVC_ARGS structure are used > for both input and output values. > > + @param[in, out] Args Arguments to be passed as part of the SVC call > + The return values of the SVC call are also placed > + in the same structure > + > + @retval None > + > **/ > VOID > ArmCallSvc ( > diff --git a/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S b/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S > index ee265f94b9..1a7c10cb79 100644 > --- a/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S > +++ b/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S > @@ -33,9 +33,11 @@ ASM_PFX(ArmCallSvc): > ldr x9, [sp, #16] > > // Store the SVC returned values into the ARM_SVC_ARGS structure. > - // A SVC call can return up to 4 values - we do not need to store back x4-x7. > + // A SVC call can return up to 8 values > stp x0, x1, [x9, #0] > stp x2, x3, [x9, #16] > + stp x4, x5, [x9, #32] > + stp x6, x7, [x9, #48] > > mov x0, x9 > > -- > 2.17.1 > > > > > >