1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Thumb-1 drop-in for the linux/include/asm-arm/proc-armv/system.h 4 * 5 * (C) Copyright 2015 6 * Albert ARIBAUD <albert.u.boot@aribaud.net> 7 * 8 * The original file does not build in Thumb mode. However, in U-Boot 9 * we don't use interrupt context, so we can redefine these as empty 10 * memory barriers, which makes Thumb-1 compiler happy. 11 */ 12 13 /* 14 * Use the same macro name as linux/include/asm-arm/proc-armv/system.h 15 * here, so that if the original ever gets included after us, it won't 16 * try to re-redefine anything. 17 */ 18 19 #ifndef __ASM_PROC_SYSTEM_H 20 #define __ASM_PROC_SYSTEM_H 21 22 /* 23 * Redefine all original macros with static inline functions containing 24 * a simple memory barrier, so that they produce the same instruction 25 * ordering constraints as their original counterparts. 26 * We use static inline functions rather than macros so that we can tell 27 * the compiler to not complain about unused arguments. 28 */ 29 30 static inline void local_irq_save( 31 unsigned long flags __attribute__((unused))) 32 { 33 __asm__ __volatile__ ("" : : : "memory"); 34 } 35 36 static inline void local_irq_enable(void) 37 { 38 __asm__ __volatile__ ("" : : : "memory"); 39 } 40 41 static inline void local_irq_disable(void) 42 { 43 __asm__ __volatile__ ("" : : : "memory"); 44 } 45 46 static inline void __stf(void) 47 { 48 __asm__ __volatile__ ("" : : : "memory"); 49 } 50 51 static inline void __clf(void) 52 { 53 __asm__ __volatile__ ("" : : : "memory"); 54 } 55 56 static inline void local_save_flags( 57 unsigned long flags __attribute__((unused))) 58 { 59 __asm__ __volatile__ ("" : : : "memory"); 60 } 61 62 static inline void local_irq_restore( 63 unsigned long flags __attribute__((unused))) 64 { 65 __asm__ __volatile__ ("" : : : "memory"); 66 } 67 68 #endif /* __ASM_PROC_SYSTEM_H */ 69