/* SPDX-License-Identifier: GPL-2.0 */ | |
/* | |
* Copyright (C) 2019 Arm Limited | |
* Original author: Dave Martin <Dave.Martin@arm.com> | |
*/ | |
#ifndef COMPILER_H | |
#define COMPILER_H | |
#define __always_unused __attribute__((__unused__)) | |
#define __noreturn __attribute__((__noreturn__)) | |
#define __unreachable() __builtin_unreachable() | |
/* curse(e) has value e, but the compiler cannot assume so */ | |
#define curse(e) ({ \ | |
__typeof__(e) __curse_e = (e); \ | |
asm ("" : "+r" (__curse_e)); \ | |
__curse_e; \ | |
}) | |
#endif /* ! COMPILER_H */ |