efi_loader: allow unaligned memory access
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Tue, 3 Apr 2018 19:59:32 +0000 (21:59 +0200)
committerAlexander Graf <agraf@suse.de>
Sun, 3 Jun 2018 13:27:21 +0000 (15:27 +0200)
The UEFI spec mandates that unaligned memory access should be enabled if
supported by the CPU architecture.

This patch adds an empty weak function unaligned_access() that can be
overridden by an architecture specific routine.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
cmd/bootefi.c
include/asm-generic/unaligned.h

index 80491c77fd17ee5a2d686067cf175792bd06d9e4..806339823ffaa73d6cb7f995fb995868fc6f0029 100644 (file)
@@ -17,6 +17,7 @@
 #include <memalign.h>
 #include <asm/global_data.h>
 #include <asm-generic/sections.h>
+#include <asm-generic/unaligned.h>
 #include <linux/linkage.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -82,6 +83,15 @@ out:
        return ret;
 }
 
+/*
+ * Allow unaligned memory access.
+ *
+ * This routine is overridden by architectures providing this feature.
+ */
+void __weak allow_unaligned(void)
+{
+}
+
 /*
  * Set the load options of an image from an environment variable.
  *
@@ -370,6 +380,9 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        efi_status_t r;
        void *fdt_addr;
 
+       /* Allow unaligned memory access */
+       allow_unaligned();
+
        /* Initialize EFI drivers */
        r = efi_init_obj_list();
        if (r != EFI_SUCCESS) {
index fd0255099aa279222b0a7a2b72c09ce1a3ff202c..3d33a5a063e8fa676039f567fb3a1f4b77e66f25 100644 (file)
@@ -20,4 +20,7 @@
 #error invalid endian
 #endif
 
+/* Allow unaligned memory access */
+void allow_unaligned(void);
+
 #endif