mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-12 16:07:30 +00:00
1ea4fac5a3
Commit bfb33f0bc4
("sunxi: mctl_mem_matches: Add missing memory
barrier") broke compilation for the Pine64, as dram_helper.c now
includes <asm/armv7.h>, which does not compile on arm64.
Fix this by moving all barrier instructions into a separate header
file, which can easily be shared between arm and arm64.
Also extend the inline assembly to take the "sy" argument, which is
optional for ARMv7, but mandatory for v8.
This fixes compilation for 64-bit sunxi boards (Pine64).
Acked-by: Ian Campbell <ijc@hellion.org.uk>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
44 lines
1.3 KiB
C
44 lines
1.3 KiB
C
/*
|
|
* Copyright (C) 2016 ARM Ltd.
|
|
*
|
|
* ARM and ARM64 barrier instructions
|
|
* split from armv7.h to allow sharing between ARM and ARM64
|
|
*
|
|
* Original copyright in armv7.h was:
|
|
* (C) Copyright 2010 Texas Instruments, <www.ti.com> Aneesh V <aneesh@ti.com>
|
|
*
|
|
* Much of the original barrier code was contributed by:
|
|
* Valentine Barshak <valentine.barshak@cogentembedded.com>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
#ifndef __BARRIERS_H__
|
|
#define __BARRIERS_H__
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
#ifndef CONFIG_ARM64
|
|
/*
|
|
* CP15 Barrier instructions
|
|
* Please note that we have separate barrier instructions in ARMv7
|
|
* However, we use the CP15 based instructtions because we use
|
|
* -march=armv5 in U-Boot
|
|
*/
|
|
#define CP15ISB asm volatile ("mcr p15, 0, %0, c7, c5, 4" : : "r" (0))
|
|
#define CP15DSB asm volatile ("mcr p15, 0, %0, c7, c10, 4" : : "r" (0))
|
|
#define CP15DMB asm volatile ("mcr p15, 0, %0, c7, c10, 5" : : "r" (0))
|
|
|
|
#endif /* !CONFIG_ARM64 */
|
|
|
|
#if defined(__ARM_ARCH_7A__) || defined(CONFIG_ARM64)
|
|
#define ISB asm volatile ("isb sy" : : : "memory")
|
|
#define DSB asm volatile ("dsb sy" : : : "memory")
|
|
#define DMB asm volatile ("dmb sy" : : : "memory")
|
|
#else
|
|
#define ISB CP15ISB
|
|
#define DSB CP15DSB
|
|
#define DMB CP15DMB
|
|
#endif
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
#endif /* __BARRIERS_H__ */
|