From: Stefano Stabellini Date: Wed, 9 Jun 2021 17:37:59 +0000 (-0700) Subject: xen/arm32: SPSR_hyp/SPSR X-Git-Tag: archive/raspbian/4.16.0+51-g0941d6cb-1+rpi1~2^2~42^2~450 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=dfcffb128be46a3e413eaa941744536fe53c94b6;p=xen.git xen/arm32: SPSR_hyp/SPSR SPSR_hyp is not meant to be accessed from Hyp mode (EL2); accesses trigger UNPREDICTABLE behaviour. Xen should read/write SPSR instead. See: ARM DDI 0487D.b page G8-5993. This fixes booting Xen/arm32 on QEMU. Signed-off-by: Stefano Stabellini Reviewed-by: Julien Grall Reviewed-by: Edgar E. Iglesias Tested-by: Edgar E. Iglesias --- diff --git a/xen/arch/arm/arm32/entry.S b/xen/arch/arm/arm32/entry.S index f2f1bc7a31..4e421109db 100644 --- a/xen/arch/arm/arm32/entry.S +++ b/xen/arch/arm/arm32/entry.S @@ -170,7 +170,7 @@ ENDPROC(prepare_context_from_guest) mrc CP32(r11, HSR) /* Save exception syndrome */ str r11, [sp, #UREGS_hsr] - mrs r11, SPSR_hyp + mrs r11, SPSR str r11, [sp, #UREGS_cpsr] /* @@ -395,7 +395,7 @@ return_to_hypervisor: ldr r11, [sp, #UREGS_pc] msr ELR_hyp, r11 ldr r11, [sp, #UREGS_cpsr] - msr SPSR_hyp, r11 + msr SPSR, r11 #ifdef CONFIG_ARM32_HARDEN_BRANCH_PREDICTOR /* * Hardening branch predictor may require to setup a different