2 * Copyright (C) 2011 Andes Technology Corporation
3 * Macpaul Lin, Andes Technology Corporation <macpaul@andestech.com>
5 * SPDX-License-Identifier: GPL-2.0+
8 #ifndef __ASM_NDS_SYSTEM_H
9 #define __ASM_NDS_SYSTEM_H
12 * Interrupt configuring macros.
17 #define local_irq_enable() \
18 __asm__ __volatile__ ( \
20 "andi %0, %0, 0x1\n\t" \
26 #define local_irq_disable() \
29 __asm__ __volatile__ ( \
31 "andi %0, %0, 0x1\n\t" \
34 : "=r" (__tmp_dummy) \
38 #define local_irq_save(x) \
39 __asm__ __volatile__ ( \
41 "andi %0, %0, 0x1\n\t" \
47 #define local_save_flags(x) \
48 __asm__ __volatile__ ( \
50 "andi %0, %0, 0x1\n\t" \
56 #define irqs_enabled_from_flags(x) ((x) != 0x1f)
58 #define local_irq_restore(x) \
60 if (irqs_enabled_from_flags(x)) \
65 * Force strict CPU ordering.
67 #define nop() asm volatile ("nop;\n\t" : : )
68 #define mb() asm volatile ("" : : : "memory")
69 #define rmb() asm volatile ("" : : : "memory")
70 #define wmb() asm volatile ("" : : : "memory")
72 #endif /* __ASM_NDS_SYSTEM_H */