diff options
author | ian <ian@FreeBSD.org> | 2013-03-31 22:43:16 +0000 |
---|---|---|
committer | ian <ian@FreeBSD.org> | 2013-03-31 22:43:16 +0000 |
commit | f370876f88224b709659a34169f56abc39f89efb (patch) | |
tree | df4d58c7d2d5d97b6e5368feef739d2989595ed2 /sys/boot | |
parent | fea6d14816e9fbab2a252512fbf68a6d4069ed18 (diff) | |
download | FreeBSD-src-f370876f88224b709659a34169f56abc39f89efb.zip FreeBSD-src-f370876f88224b709659a34169f56abc39f89efb.tar.gz |
When running on armv6, set alignment checking to modulo-4 mode rather
than modulo-8, because clang emits ldrd and strd instructions for
addresses that are only 4-byte aligned
Diffstat (limited to 'sys/boot')
-rw-r--r-- | sys/boot/arm/uboot/start.S | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/boot/arm/uboot/start.S b/sys/boot/arm/uboot/start.S index 65148c9..8af47f3 100644 --- a/sys/boot/arm/uboot/start.S +++ b/sys/boot/arm/uboot/start.S @@ -27,6 +27,7 @@ */ #include <machine/asm.h> +#include <machine/armreg.h> /* * Entry point to the loader that U-Boot passes control to. @@ -42,6 +43,13 @@ _start: ldr ip, =saved_regs str r8, [ip, #0] +#ifdef _ARM_ARCH_6 + mrc p15, 0, r2, c1, c0, 0 + orr r2, r2, #(CPU_CONTROL_UNAL_ENABLE) + orr r2, r2, #(CPU_CONTROL_AFLT_ENABLE) + mcr p15, 0, r2, c1, c0, 0 +#endif + /* Start loader */ b main |