2017-08-25 5 views
1

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

peut-être que cela signifie que vous ne pouvez pas obtenir plus bas que el0 et rester dans el0. –

+0

Point de vue intéressant :) Mais dans la documentation j'ai trouvé des informations que ERET à EL0 est de comportement indéfini. –

+1

ouais, ne peux pas trouver la réponse non plus ... dit que PSTATE vient de SPSR mais spsr ne contient pas el bits. –

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.