Merge https://gitlab.denx.de/u-boot/custodians/u-boot-mpc85xx
[platform/kernel/u-boot.git] / arch / arm / cpu / arm11 / sctlr.S
1 /* SPDX-License-Identifier:     GPL-2.0+ */
2 /*
3  *  Routines to access the system control register
4  *
5  *  Copyright (c) 2019 Heinrich Schuchardt
6  */
7
8 #include <linux/linkage.h>
9
10 /*
11  * void allow_unaligned(void) - allow unaligned access
12  *
13  * This routine sets the enable unaligned data support flag and clears the
14  * aligned flag in the system control register.
15  * After calling this routine unaligned access does no longer leads to a
16  * data abort or undefined behavior but is handled by the CPU.
17  * For details see the "ARM Architecture Reference Manual" for ARMv6.
18  */
19 ENTRY(allow_unaligned)
20         mrc     p15, 0, r0, c1, c0, 0   @ load system control register
21         orr     r0, r0, #1 << 22        @ set unaligned data support flag
22         bic     r0, r0, #2              @ clear aligned flag
23         mcr     p15, 0, r0, c1, c0, 0   @ write system control register
24         bx      lr                      @ return
25 ENDPROC(allow_unaligned)