xen/arm: add SVE exception class handling

SVE has a new exception class with code 0x19, introduce the new code
and handle the exception.

Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
Luca Fancellu authored and Julien Grall committed 2023-06-07 11:21:41 +01:00
1 parent c5ff38cdd8
commit 3c6e726241
2 files changed
+10

No files matched your search

+1
View File
@@ -426,6 +426,7 @@
#define HSR_EC_HVC64 0x16
#define HSR_EC_SMC64 0x17
#define HSR_EC_SYSREG 0x18
#define HSR_EC_SVE 0x19
#endif
#define HSR_EC_INSTR_ABORT_LOWER_EL 0x20
#define HSR_EC_INSTR_ABORT_CURR_EL 0x21
+9
View File
@@ -2172,6 +2172,11 @@ void do_trap_guest_sync(struct cpu_user_regs *regs)
perfc_incr(trap_sysreg);
do_sysreg(regs, hsr);
break;
case HSR_EC_SVE:
GUEST_BUG_ON(regs_mode_is_32bit(regs));
gprintk(XENLOG_WARNING, "Domain tried to use SVE while not allowed\n");
inject_undef_exception(regs, hsr);
break;
#endif
case HSR_EC_INSTR_ABORT_LOWER_EL:
@@ -2201,6 +2206,10 @@ void do_trap_hyp_sync(struct cpu_user_regs *regs)
case HSR_EC_BRK:
do_trap_brk(regs, hsr);
break;
case HSR_EC_SVE:
/* An SVE exception is a bug somewhere in hypervisor code */
do_unexpected_trap("SVE trap at EL2", regs);
break;
#endif
case HSR_EC_DATA_ABORT_CURR_EL:
case HSR_EC_INSTR_ABORT_CURR_EL:
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.