On sait comment retourner du niveau d'exception au niveau d'exception précédent (set elr_el3 -> set spsr_el3 -> execute eret), mais comment ERET d'EL3 au même EL3? Dans la documentation officielle d'ARM, j'ai trouvé la phrase qui dit que c'est possible: "Le retour d'une exception peut rester au même niveau d'Exception ou entrer un niveau d'Exception inférieur, il ne peut pas passer à un niveau d'Exception supérieur.".Comment ERET au même niveau d'exception dans ARMv8?
1
A
Répondre
2
L'instruction ERET peut être utilisée pour revenir au même niveau d'exception ou à un niveau d'exception inférieur pris en charge par la CPU. Si les champs du mode enregistré stockés dans SPSR_EL3.M[4:0]
sont définis sur 0b01101
ou 0b01100
, où les bits M[3:2]
codent un niveau d'exception de 3, alors une instruction ERET exécutée à EL3 retourne à EL3. Voir la section "D1.6.4 Registres d'état de programme enregistrés (SPSR)" dans le ARM Architecture Reference Manual -- ARMv8, for ARMv8-A architecture profile pour plus de détails sur la manière dont les registres SPSR_ELx sont présentés.
peut-être que cela signifie que vous ne pouvez pas obtenir plus bas que el0 et rester dans el0. –
Point de vue intéressant :) Mais dans la documentation j'ai trouvé des informations que ERET à EL0 est de comportement indéfini. –
ouais, ne peux pas trouver la réponse non plus ... dit que PSTATE vient de SPSR mais spsr ne contient pas el bits. –