xref: /openbmc/u-boot/arch/xtensa/include/asm/system.h (revision e8f80a5a)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
2c978b524SChris Zankel /*
3c978b524SChris Zankel  * Copyright (C) 2016 Cadence Design Systems Inc.
4c978b524SChris Zankel  */
5c978b524SChris Zankel 
6c978b524SChris Zankel #ifndef _XTENSA_SYSTEM_H
7c978b524SChris Zankel #define _XTENSA_SYSTEM_H
8c978b524SChris Zankel 
9c978b524SChris Zankel #include <asm/arch/core.h>
10c978b524SChris Zankel 
11c978b524SChris Zankel #if XCHAL_HAVE_INTERRUPTS
12c978b524SChris Zankel #define local_irq_save(flags) \
13c978b524SChris Zankel 	__asm__ __volatile__ ("rsil %0, %1" \
14c978b524SChris Zankel 			      : "=a"(flags) \
15c978b524SChris Zankel 			      : "I"(XCHAL_EXCM_LEVEL) \
16c978b524SChris Zankel 			      : "memory")
17c978b524SChris Zankel #define local_irq_restore(flags) \
18c978b524SChris Zankel 	__asm__ __volatile__ ("wsr %0, ps\n\t" \
19c978b524SChris Zankel 			      "rsync" \
20c978b524SChris Zankel 			      :: "a"(flags) : "memory")
21c978b524SChris Zankel #else
22c978b524SChris Zankel #define local_irq_save(flags) ((void)(flags))
23c978b524SChris Zankel #define local_irq_restore(flags) ((void)(flags))
24c978b524SChris Zankel #endif
25c978b524SChris Zankel 
26c978b524SChris Zankel #endif
27