22 lines
527 B
C
22 lines
527 B
C
|
/* 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 */
|