services/spm_deprecated: disable alignment checking for S-EL0
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 3 Jan 2019 11:03:49 +0000 (12:03 +0100)
committerArd Biesheuvel <ard.biesheuvel@linaro.org>
Tue, 15 Jan 2019 16:51:21 +0000 (17:51 +0100)
Permit unaligned accesses while executing the secure partition
payload, so that we don't have to modify existing code that we
will host there. (The UEFI spec explicitly permits unaligned
accesses)

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
services/std_svc/spm_deprecated/spm_setup.c

index beaff946c376caade8078a6010d7bea3c98323d8..aae6cd5e2b4ba74b3db36920cff224f8ea4476d8 100644 (file)
@@ -144,8 +144,6 @@ void spm_sp_setup(sp_context_t *sp_ctx)
                SCTLR_SA0_BIT                                                   |
                /* Allow cacheable data and instr. accesses to normal memory. */
                SCTLR_C_BIT | SCTLR_I_BIT                                       |
-               /* Alignment fault checking enabled when at EL1 and EL0. */
-               SCTLR_A_BIT                                                     |
                /* Enable MMU. */
                SCTLR_M_BIT
        ;
@@ -153,6 +151,11 @@ void spm_sp_setup(sp_context_t *sp_ctx)
        sctlr_el1 &= ~(
                /* Explicit data accesses at EL0 are little-endian. */
                SCTLR_E0E_BIT                                                   |
+               /*
+                * Alignment fault checking disabled when at EL1 and EL0 as
+                * the UEFI spec permits unaligned accesses.
+                */
+               SCTLR_A_BIT                                                     |
                /* Accesses to DAIF from EL0 are trapped to EL1. */
                SCTLR_UMA_BIT
        );