xref: /openbmc/u-boot/arch/arm/cpu/armv7/sctlr.S (revision 3eceff64)
1*78f90aaeSHeinrich Schuchardt/* SPDX-License-Identifier:     GPL-2.0+ */
2*78f90aaeSHeinrich Schuchardt/*
3*78f90aaeSHeinrich Schuchardt *  Routines to access the system control register
4*78f90aaeSHeinrich Schuchardt *
5*78f90aaeSHeinrich Schuchardt *  Copyright (c) 2018 Heinrich Schuchardt
6*78f90aaeSHeinrich Schuchardt */
7*78f90aaeSHeinrich Schuchardt
8*78f90aaeSHeinrich Schuchardt#include <linux/linkage.h>
9*78f90aaeSHeinrich Schuchardt
10*78f90aaeSHeinrich Schuchardt/*
11*78f90aaeSHeinrich Schuchardt * void allow_unaligned(void) - allow unaligned access
12*78f90aaeSHeinrich Schuchardt *
13*78f90aaeSHeinrich Schuchardt * This routine clears the aligned flag in the system control register.
14*78f90aaeSHeinrich Schuchardt * After calling this routine unaligned access does no longer lead to a
15*78f90aaeSHeinrich Schuchardt * data abort but is handled by the CPU.
16*78f90aaeSHeinrich Schuchardt */
17*78f90aaeSHeinrich SchuchardtENTRY(allow_unaligned)
18*78f90aaeSHeinrich Schuchardt	mrc	p15, 0, r0, c1, c0, 0	@ load system control register
19*78f90aaeSHeinrich Schuchardt	bic	r0, r0, #2		@ clear aligned flag
20*78f90aaeSHeinrich Schuchardt	mcr	p15, 0, r0, c1, c0, 0	@ write system control register
21*78f90aaeSHeinrich Schuchardt	bx	lr			@ return
22*78f90aaeSHeinrich SchuchardtENDPROC(allow_unaligned)
23