diff options
author | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2018-04-03 21:59:32 +0200 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2018-06-03 15:27:21 +0200 |
commit | c3b11dea7c9f9bb009cb7358170c47abd1c4a298 (patch) | |
tree | 1209493facd75a94acd1e34ead5a23005d420c0e | |
parent | fa241e2f19c58d08f2d978f32d133eab24b02a92 (diff) | |
download | u-boot-c3b11dea7c9f9bb009cb7358170c47abd1c4a298.tar.gz |
efi_loader: allow unaligned memory access
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>
-rw-r--r-- | cmd/bootefi.c | 13 | ||||
-rw-r--r-- | include/asm-generic/unaligned.h | 3 |
2 files changed, 16 insertions, 0 deletions
diff --git a/cmd/bootefi.c b/cmd/bootefi.c index 80491c77fd..806339823f 100644 --- a/cmd/bootefi.c +++ b/cmd/bootefi.c @@ -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; @@ -83,6 +84,15 @@ out: } /* + * 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. * * @loaded_image_info: the image @@ -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) { diff --git a/include/asm-generic/unaligned.h b/include/asm-generic/unaligned.h index fd0255099a..3d33a5a063 100644 --- a/include/asm-generic/unaligned.h +++ b/include/asm-generic/unaligned.h @@ -20,4 +20,7 @@ #error invalid endian #endif +/* Allow unaligned memory access */ +void allow_unaligned(void); + #endif |