qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] target/arm: Use correct entrypoint for SVC taken from Hyp to


From: Richard Henderson
Subject: Re: [PATCH] target/arm: Use correct entrypoint for SVC taken from Hyp to Hyp
Date: Fri, 28 Jan 2022 11:23:28 +1100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0

On 1/18/22 00:19, Peter Maydell wrote:
The exception caused by an SVC instruction may be taken to AArch32
Hyp mode for two reasons:
  * HCR.TGE indicates that exceptions from EL0 should trap to EL2
  * we were already in Hyp mode

The entrypoint in the vector table to be used differs in these two
cases: for an exception routed to Hyp mode from EL0, we enter at the
common 0x14 "hyp trap" entrypoint.  For SVC from Hyp mode to Hyp
mode, we enter at the 0x08 (svc/hvc trap) entrypoint.
In the v8A Arm ARM pseudocode this is done in AArch32.TakeSVCException.

QEMU incorrectly routed both of these exceptions to the 0x14
entrypoint.  Correct the entrypoint for SVC from Hyp to Hyp by making
use of the existing logic which handles "normal entrypoint for
Hyp-to-Hyp, otherwise 0x14" for traps like UNDEF and data/prefetch
aborts (reproduced here since it's outside the visible context
in the diff for this commit):

     if (arm_current_el(env) != 2 && addr < 0x14) {
         addr = 0x14;
     }

Signed-off-by: Peter Maydell<peter.maydell@linaro.org>
---
  target/arm/helper.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]