This ensures that it's available under BSD license terms. Change-Id: Ica13014b847473fee02516be0b27684c6cfb07bc Signed-off-by: Patrick Georgi <pgeorgi@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/43964 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */
 | |
| 
 | |
| #ifndef _COMMONLIB_BSD_COMPILER_H_
 | |
| #define _COMMONLIB_BSD_COMPILER_H_
 | |
| 
 | |
| #ifndef __packed
 | |
| #if defined(__WIN32) || defined(__WIN64)
 | |
| #define __packed __attribute__((gcc_struct, packed))
 | |
| #else
 | |
| #define __packed __attribute__((packed))
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| #ifndef __aligned
 | |
| #define __aligned(x) __attribute__((aligned(x)))
 | |
| #endif
 | |
| 
 | |
| #ifndef __always_unused
 | |
| #define __always_unused __attribute__((unused))
 | |
| #endif
 | |
| 
 | |
| #ifndef __must_check
 | |
| #define __must_check __attribute__((warn_unused_result))
 | |
| #endif
 | |
| 
 | |
| #ifndef __weak
 | |
| #define __weak __attribute__((weak))
 | |
| #endif
 | |
| 
 | |
| #ifndef __noreturn
 | |
| #define __noreturn __attribute__((noreturn))
 | |
| #endif
 | |
| 
 | |
| #ifndef __always_inline
 | |
| #define __always_inline inline __attribute__((always_inline))
 | |
| #endif
 | |
| 
 | |
| /* This evaluates to the type of the first expression, unless that is constant
 | |
|    in which case it evalutates to the type of the second. This is useful when
 | |
|    assigning macro parameters to temporary variables, because that would
 | |
|    normally circumvent the special loosened type promotion rules for integer
 | |
|    literals. By using this macro, the promotion can happen at the time the
 | |
|    literal is assigned to the temporary variable. If the literal doesn't fit in
 | |
|    the chosen type, -Werror=overflow will catch it, so this should be safe. */
 | |
| #define __TYPEOF_UNLESS_CONST(expr, fallback_expr) __typeof__( \
 | |
| 	__builtin_choose_expr(__builtin_constant_p(expr), fallback_expr, expr))
 | |
| 
 | |
| /* This creates a unique local variable name for use in macros. */
 | |
| #define __TMPNAME_3(i) __tmpname_##i
 | |
| #define __TMPNAME_2(i) __TMPNAME_3(i)
 | |
| #define __TMPNAME __TMPNAME_2(__COUNTER__)
 | |
| 
 | |
| #endif
 |