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