From 21a13652df728c9571f899caf4949d5d46f49db7 Mon Sep 17 00:00:00 2001 From: johannst Date: Wed, 1 May 2024 17:39:45 +0000 Subject: deploy: 7ca41565c4e70b212cb88a4d18c18fa35768df6d --- arch/armv8.html | 269 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 269 insertions(+) create mode 100644 arch/armv8.html (limited to 'arch/armv8.html') diff --git a/arch/armv8.html b/arch/armv8.html new file mode 100644 index 0000000..623655d --- /dev/null +++ b/arch/armv8.html @@ -0,0 +1,269 @@ + + + + + + armv8 - Notes + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+
+

armv8

+

keywords: aarch64, arm64, A64, aarch32, A32, T32, abi

+

The armv8 architecture introduces support for 64-bit and defines two +execution states aarch64 and aarch32.

+

Implementations are not required to implement all execution states for all +exception levels (EL). For example the coretex-a32 only +implements aarch32, while the coretex-a34 only implements +aarch64.

+

The execution states support different instruction sets.

+
    +
  • aarch64 only supports the new A64 instruction set, where all +instructions have the fixed size of of 32 bits.
  • +
  • aarch32 supports the A32 and T32 instruction sets. These +are updated versions of the armv7 instruction sets, kept backwards +compatible allowing armv7 programs to run on armv8. +
    +

    In armv7 the instruction sets A32 an T32 were called arm and +thumb respectively.

    +
    +
  • +
+

A program always runs in either the aarch64 or the aarch32 execution +state, but never in a mixture of both. Transitions between execution states +only occur when raising or lowering the exception level.

+
    +
  • aarch64 -> aarch32 can only occur when switching from higher EL to lower +EL.
  • +
  • aarch32 -> aarch64 can only occur when switching from lower EL to higher +EL.
  • +
+

The following figure depicts which execution state Transitions are allowed.

+
      (user) EL0     ^       |
+        (os) EL1     |    32->64
+(hypervisor) EL2  64->32     |
+    (secure) EL3     |       v
+
+

This means for example, an os running in aarch32 can only support aarch32 +user applications, while an os running in aarch64 can support +aarch32 / aarch64 user applications.

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + +
+ + -- cgit v1.2.3