On 24/09/2018 16:22, Ard Biesheuvel wrote:
On Mon, 24 Sep 2018 at 15:54, Grant Likely <grant.lik...@arm.com> wrote:

Fill out the requirements for AArch32 systems. Not much needs to be
specified here other than the different privilege modes defined by
ARMv7 and below.

Resolves: #15
Signed-off-by: Grant Likely <grant.lik...@arm.com>
---
  source/chapter1-about.rst       | 19 +++++++++++--------
  source/chapter2-uefi.rst        | 32 ++++++++++++++++++++------------
  source/chapter3-secureworld.rst | 18 ++++++++++++++----
  source/index.rst                |  1 +
  4 files changed, 46 insertions(+), 24 deletions(-)

diff --git a/source/chapter1-about.rst b/source/chapter1-about.rst
index d1c6d1d..4d70b2a 100644
--- a/source/chapter1-about.rst
+++ b/source/chapter1-about.rst
@@ -107,9 +107,8 @@ The following guiding principles are used while developing 
the EBBR specificatio
  - Support multiple architectures

    Any architecture can implement the EBBR requirements.
-
-  .. note::
-     At the time of writing this document only addresses AArch64, but AArch32 
and others architectures are expected.
+  Architecture specific requirements will clearly marked as to which
+  architecture(s) they apply.

  - Design for common embedded hardware

@@ -139,7 +138,7 @@ The following guiding principles are used while developing 
the EBBR specificatio
  Scope
  =====
  This document defines the boot and runtime services that are expected by an
-Operating System or hypervisor, for an Arm embedded device, which follows the
+Operating System or hypervisor, for a device which follows the
  UEFI specification [UEFI]_.

  This specification defines the boot and runtime services for a physical 
system,
@@ -180,6 +179,10 @@ This document uses the following terms and abbreviations.
        The 64-bit Arm instruction set used in AArch64 state.
        All A64 instructions are 32 bits.

+   AArch32
+      Arm 32-bit architectures. AArch32 is a roll up term referring to all
+      32-bit versions of the Arm architecture starting at ARMv4.
+
     AArch64 state
        The Arm 64-bit Execution state that uses 64-bit general purpose
        registers, and a 64-bit program counter (PC), Stack Pointer (SP), and
@@ -193,19 +196,19 @@ This document uses the following terms and abbreviations.
        and which uses boot time services.

     EL0
-      The lowest Exception level. The Exception level that is used to execute
+      The lowest Exception level on AArch64. The Exception level that is used 
to execute
        user applications, in Non-secure state.

     EL1
-      Privileged Exception level. The Exception level that is used to execute
+      Privileged Exception level on AArch64. The Exception level that is used 
to execute
        Operating Systems, in Non-secure state.

     EL2
-      Hypervisor Exception level. The Exception level that is used to execute
+      Hypervisor Exception level on AArch64. The Exception level that is used 
to execute
        hypervisor code. EL2 is always in Non-secure state.

     EL3
-      Secure Monitor Exception level. The Exception level that is used to
+      Secure Monitor Exception level on AArch64. The Exception level that is 
used to
        execute Secure Monitor code, which handles the transitions between
        Non-secure and Secure states.  EL3 is always in Secure state.

diff --git a/source/chapter2-uefi.rst b/source/chapter2-uefi.rst
index f89ac04..7fd8aa6 100644
--- a/source/chapter2-uefi.rst
+++ b/source/chapter2-uefi.rst
@@ -29,19 +29,27 @@ The system firmware must implement support for MBR, GPT and 
El Torito partitioni
  UEFI System Environment and Configuration
  =========================================

-AArch64 Exception Levels
-------------------------
-
-The resident AArch64 UEFI boot-time environment is specified to "Use the
-highest 64-bit Non-secure privilege level available".
-This level is either EL1 or EL2, depending on whether or not virtualization is
-used or supported.
+The resident UEFI boot-time environment shall use the highest non-secure
+privilege level available.
+The exact meaning of this is architecture dependant, as detailed below.

-Resident UEFI firmware might target a specific Exception level.
+Resident UEFI firmware might target a specific priviledge level.

privilege

Fixed


  In contrast, UEFI Loaded Images, such as thirdparty drivers and boot
  applications, must not contain any built-in assumptions that they are to be
-loaded at a given Exception level during boot time, since they can legitimately
-be loaded into EL1 or EL2.
+loaded at a given priviledge level during boot time since they can, for 
example,
+legitimately be loaded into either EL1 or EL2 on AArch64.
+
+AArch32 Priviledge Levels
+-------------------------
+
+UEFI shall execute at either PL1 (svc) or PL2 (hyp),
+depending on whether or not virtualization is used and supported.
+

Unfortunately, the UEFI spec currently does not permit booting in HYP
mode, and since it also mandates short descriptors, this needs a bit
of discussion (and a fair amount of EDK2 code) to support.

I was definitely writing out of ignorance here, and just matching what was done in the AArch32 blurb. Can you recommend some different text? I can also simply drop the blurb.

g.

_______________________________________________
boot-architecture mailing list
boot-architecture@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/boot-architecture

Reply via email to