πŸ’Ύ Archived View for any-key.press β€Ί squat β€Ί reports β€Ί aarch64_exception_model.gmi captured on 2024-05-10 at 10:42:12. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-11-04)

🚧 View Differences

-=-=-=-=-=-=-

ΠšΠΎΠ½ΡΠΏΠ΅ΠΊΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° AArch64 Exception Model (arm, 102412_0103_01_en)

Под конспСктом я ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π― постарался ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π±Π»ΠΎΠΊΠΈ тСкста Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ суммарной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ рСструктурирована.

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ pdf-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ (102412_0103_01_en)

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ это Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ систСмноС событиС, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ со стороны ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π‘Π»ΠΈΠ·ΠΊΠΈΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссорных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… являСтся Ρ‚Π΅Ρ€ΠΌΠΈΠ½ "ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅" (interrupt). ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, вмСсто ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ инструкции, процСссор приостанавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ исполнСнию Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Когда ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ приостановлСнного ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ.

МодСль ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

МодСль ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ AArch64 являСтся (Π² числС ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ) модСлью разграничСния ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (Exception level) часто ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ Π΄ΠΎ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ EL. Π£Ρ€ΠΎΠ²Π½ΠΈ Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ, поэтому для указания ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ уровня ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ запись EL<x>, Π³Π΄Π΅ x это число ΠΎΡ‚ 0 Π΄ΠΎ 3 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π§Π΅ΠΌ Π½ΠΈΠΆΠ΅ числСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ уровня ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Ρ‚Π΅ΠΌ мСньшими привилСгиями ΠΎΠ½ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ это EL0.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ распрСдСлСниС ΠΏΠΎ уровням ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ выглядит Ρ‚Π°ΠΊ:

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° уровня ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (EL0 ΠΈ EL1). Π£Ρ€ΠΎΠ²Π½ΠΈ EL2 ΠΈ EL3 ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Arm Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ строго опрСдСлСния ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π° ΠΊΠ°ΠΊΠΈΡ… уровнях Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ. Но это руководство ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ распрСдСлСны ΠΊΠ°ΠΊ описано Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Π°Π±Π·Π°Ρ†Π΅.

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ измСняСтся Π² случаС:

ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ (Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ). ΠŸΡ€ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅ ΠΈΠ· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ (Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ увСличиваСтся). Плюс ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 0 (EL0), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ссли ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ исполнСния ΠΊΠΎΠ΄Π° Π½Π° EL0, Ρ‚ΠΎ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½.

ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈ доступ

ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ примСняСтся ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹:

Π’ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ arm Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° подсистСма Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Π»ΠΎΠΊ управлСния (MMU) позволяСт Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ чтСния/записи памяти Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ: для ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ для Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ. Код, исполняСмый Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ EL0 считаСтся Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, Π° ΠΊΠΎΠ΄ Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… уровнях ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (EL1, EL2, EL3) рассматриваСтся ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ процСссора содСрТится Π² Π½Π°Π±ΠΎΡ€Π΅ рСгистров, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ контролируСтся Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. НапримСр: VBAR_EL1 это рСгистр Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ адрСса Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² (Vector Base Address Register). Буффикс _EL1 Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для доступа ΠΊ этом рСгистру Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ 1 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅. Π’ arm Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ имССтся мноТСство рСгистров со схоТими функциями, ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… различаСтся суффиксом уровня ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (_ELx). Π­Ρ‚ΠΎ физичСски Ρ€Π°Π·Π½Ρ‹Π΅ рСгистры, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ собствСнноС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π½Π°Π±ΠΎΡ€Π΅ инструкций.

НапримСр систСмный рСгистр управлСния (System Control Register, SCTLR), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° MMU, кэш ΠΈ выравнивания, Π² процСссорС прСдставлСн трСмя Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ рСгистрами:

Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС исполнСния (Execution state)

Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС исполнСния (Execution state) опрСдСляСт Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ рСгистров ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния ΠΈ доступный Π½Π°Π±ΠΎΡ€ инструкций. БСмСйства Armv8-A ΠΈ Armv9-A ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π΄Π²Π° состония исполнСния:

БостояниС исполнСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ сброса ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ уровня ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. ИзмСнСниС состояния исполнСния ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ уровня ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ происходит ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ:

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ 32-Ρ… разрядный ΠΊΠΎΠ΄ (AArch32) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ 64-Ρ… разрядном (AArch64). Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 32-Ρ… Π±ΠΈΡ‚Π½ΠΎΠ΅ ядро ОБ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ 64-Ρ… Π±ΠΈΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

АрхитСктура Armv8-A ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ AArch32 ΠΈ AArch64 Π½Π° всСх уровнях ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π’ΠΎ Π΅ΡΡ‚ΡŒ всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ уровня, тСорСтичСски, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ 32-Ρ… Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ, Π½ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ ΠΊΠΎΠ½Ρ€Π΅ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС послС сброса Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ ΠΈ опрСдСляСтся ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Для Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ тСхничСскому справочному руководству (Technical Reference Manual, TRM) процСссора.

АрхитСктура Armv9-A ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ AArch64 Π½Π° всСх уровнях ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. А AArch32 ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π½ΡƒΠ»Π΅Π²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (EL0). ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС послС сброса всСгда AArch64.

БостояниС исполнСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ уровня ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ опрСдСляСтся ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ рСгистром ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ (Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ) уровня ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ: рСгистры HCR_EL2 (ypervisor Configuration Register) ΠΈ SCR_EL3 (Secure Configuration Register).

Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС бСзопасности (Security state)

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²Π° состояния бСзопасности:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ рСализуСтся изоляция части Π΄Π°Π½Π½Ρ‹Ρ…, которая помСщаСтся Π² бСзопасноС адрСсноС пространство, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π΅Ρ‚ доступа ΠΈΠ· нСбСзопасного состояния. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ бСзопасного состояния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ платёТная систСма ΠΈΠ»ΠΈ DRM, храня ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΏΠ»Π°Ρ‚Ρ‘ΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ криптографичСскиС ΠΊΠ»ΡŽΡ‡ΠΈ.

БСзопасный Ρ€Π΅ΠΆΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° процСссорах с TrustZone. Π’ этом случаС Ρ€Π΅ΠΆΠΈΠΌ состояния бСзопасности выбираСтся Π±ΠΈΡ‚ΠΎΠΌ SCR_EL3.NS.

Оба состояния бСзопасности (Secure state ΠΈ Non-secure state) ΠΌΠΎΠ³ΡƒΡ‚ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ‚Ρ€Π΅Ρ… уровнях ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (EL0, EL1, EL2). Π’ Armv8-A EL3 всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² бСзопасном Ρ€Π΅ΠΆΠΈΠΌΠ΅. Armv9-A ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Realm Management (Realm Management Extension, RME). RME Π²Π²ΠΎΠ΄ΠΈΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ состояниС исполнСния (Realm) ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ EL3 ΠΎΡ‚ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ…, помСщая Π΅Π³ΠΎ Π² Π½ΠΎΠ²ΠΎΠ΅ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ΅ состояниС (root).

Π’ΠΈΠΏΡ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

Π’ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ arm ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ дСлятся Π½Π° Π΄Π²Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚ΠΈΠΏΠ°: синхронныС (synchronous) ΠΈ асинхронныС (asynchronous).

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹Π΅ (synchronous) ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ называСтся синхронным, Ссли ΠΎΠ½ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ нСпосрСдствСнно исполняСмой Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ возникновСния инструкциСй. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ рСгистров ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ синхронного ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ строго соотвСтствуСт всСм инструкциям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Ρ€Π°Π½Π΅Π΅, Π΄ΠΎ инструкции Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅ΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π‘ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ синхронных ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒΡΡ, нСльзя, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ SVC с EL2 (ΠΈΠ· Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°), Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² EL1 (Π² ядро ОБ).

АсинхронныС (asynchronous) ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

НСкоторыС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ внСшним источником, поэтому ΠΎΠ½ΠΈ Π½Π΅ синхронны с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ исполняСмых инструкций (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: срабатывания Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°). По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ всС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ синхронными Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ асинхронными.

Π‘ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ асинхронных ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ:

πŸ›ˆ Π’ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях arm прСрывания FIQ ΠΈΠΌΠ΅Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ IRQ. Π’ AArch64 FIQ ΠΈ IRQ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² AArch64 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ тСрминология:

НапримСр ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ принято с AArch32 EL0 Π² AArch64 EL1. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² AArch64 Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ EL1. ПослС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ систСма ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΎ принято ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΈΠ· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² AArch32 Π½Π° EL0. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΈΠ· AArch32 Π² AArch64 рСгистры, нСдоступныС Π² состоянии AArch32, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ свои значСния ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ исполнСния AArch64. Для рСгистров, доступных Π² ΠΎΠ±ΠΎΠΈΡ… состояниях исполнСния, вСрхняя ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° 64-разрядных рСгистров содСрТит Π»ΠΈΠ±ΠΎ 0, Π»ΠΈΠ±ΠΎ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

БоотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ рСгистрами AArch32 ΠΈ AArch64:

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния процСссора

Π’ AArch64 сущСствуСт концСпция состояния процСссора, извСстная ΠΊΠ°ΠΊ PSTATE. Π­Ρ‚ΠΎ состояниС ΠΏΡ€ΠΈ принятии ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ записываСтся Π² рСгистр сохранённого состояния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Saved Program Status Register): SPSR. PSTATE содСрТит Ρ‚Π°ΠΊΠΈΠ΅ свСдСния, ΠΊΠ°ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Ρ„Π»Π°Π³ΠΈ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΎ-логичСского Π±Π»ΠΎΠΊΠ° (ALU). Π’ AArch64 Ρ‚Π°ΠΊ ΠΆΠ΅ содСрТится:

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ уровня ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сущСствуСт свой SPSR - SPSR_ELx. ΠŸΡ€ΠΈ принятии ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ SPSR_ELx, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ принимаСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Для синхронных ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ SError ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ заполняСтся ΠΈ рСгистр синдрома ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (Exception Syndrome Register): ESR. Π’ Π½Ρ‘ΠΌ кодируСтся ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ

КаТдоС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ свой ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (EL), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· условий:

Настройка ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ осущСствляСтся двумя рСгистрами:

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Π·Π°Π΄Π°Π½Π° Π½ΠΈ Π² SCR_EL3, Π½ΠΈ Π² HCR_EL2 Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π² EL1.

ΠŸΡ€ΠΈ сбросС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистров HCR_EL2 ΠΈ SCR_EL3 Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ΠΎ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Для Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, управлСния ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ arm (Generic Interrupt Controller, GIC). Он позволяСт сущСствСнно ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы ΠΏΡ€ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ВСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² тСхничСском руководствС GIC.

πŸ›ˆ НСльзя ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π½Π΅Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ являСтся Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ (UNDEFINED). Π’Π°ΠΊ ΠΆΠ΅ нСльзя Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ Π½Π΅Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° выполнСния инструкции Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ возникновСнию ошибки.

ΠœΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Masking)

ЀизичСскиС ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ асинхронныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ замаскированы. ΠŸΡ€ΠΈ этом ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Π½Π°Ρ‡Π°Π»Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΏΠΎΠΊΠ° маска Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ снята.

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ замаскированы, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ нСпосрСдствСнно связаны с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ инструкциСй ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ Π½Π° Π±ΠΎΠ»Π΅Π΅ высоком ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ замаскированы с Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, замаскированы всСгда, ΠΏΠΎΠΊΠ° исполняСтся Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ, Π² числС ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, согласуСтся с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ нСльзя ΠΏΠΎΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, принимая возникшСС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π’ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΡ… 2021 Π³ΠΎΠ΄Π°, Armv8.8-A ΠΈ Armv9.3-A, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° нСмаскируСмых ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ (Non-maskable interrupt, NMI). Если эта Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ доставлСно процСссору нСсмотря Π½Π° маски.

Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² (vector tables)

ΠŸΡ€ΠΈ принятии ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ процСссор исполняСт ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠœΠ΅ΡΡ‚ΠΎ Π² памяти, Π³Π΄Π΅ хранится ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, называСтся Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

πŸ›ˆ Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, Π² arm Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½Π΅ адрСс ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Π° нСпосрСдствСнно ΠΊΠΎΠ΄ самого ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ вмСстС ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΈΠΌΠ΅Π΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ опрСдСляСтся собствСнным рСгистром Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ адрСса Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² (Vector Base Address Register) - VBAR_EL<x>, Π³Π΄Π΅ <x> - это 1, 2 ΠΈΠ»ΠΈ 3. ЗначСния рСгистров VBAR послС сброса Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, поэтому ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ явно Π΄ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ.

Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Π’Π°Π±Π»ΠΈΡ†Π° дСлится Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

КаТдая катСгория дСлится Π½Π° 4 Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ Π½Π° Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

НСпосрСдствСнно Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡƒΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ 32 процСссорных инструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня (first-level handler). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠΎΠ΄ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сохраняСт Π² стСкС содСрТимоС рСгистров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹, ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±ΠΎΠ»Π΅Π΅ слоТного ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, спСцифичного для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ПослС Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° содСрТимоС рСгистров восстанавливаСтся ΠΈ исполняСтся инструкция Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠ· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (ERET).

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ стСка ΠΏΡ€ΠΈ принятии ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Π’ AArch64 ΠΏΡ€ΠΈ принятии ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ… рСгистров указатСля стСка: SP_EL0 ΠΈΠ»ΠΈ SP_EL<x>, Π³Π΄Π΅ <x> - Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Если исполнСниС происходит Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ EL0, Ρ‚ΠΎ бСзусловно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ SP_EL0. Если Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ исполнСния Π²Ρ‹ΡˆΠ΅ Ρ‡Π΅ΠΌ 0, Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ сСтка опрСдСляСтся Π±ΠΈΡ‚ΠΎΠΌ SP ΠΈΠ· PSTATE:

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, Π΄Π°ΠΆΠ΅ Ссли ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ стСка Π²Ρ‹Π±Ρ€Π°Π½ SP_ELx, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня сохраняСт рСгистры, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π° Π·Π°Ρ‚Π΅ΠΌ всё Ρ€Π°Π²Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π° использованиС SP_EL0.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΈΠ· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΈΠ· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ осущСствляСтся инструкциСй ERET. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ERET восстанавливаСт ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ состояниС процСссора ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ рСгистра SPSR_EL<x>, Π³Π΄Π΅ <x> - ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выполняСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. А послС инструкция ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π΅Ρ€Π²Π°Π½Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сохранён Π² ELR. Оба дСйствия (восстановлСниС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ состояния ΠΈΠ· SPSR_ELx ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° управлСния ΠΏΠΎ адрСсу ΠΈΠ· ELR_ELx) Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎ.

АдрСс Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, сохранённый Π² ELR_ELx зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС рСгистра ELR_ELx ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ.