mirror of
				https://github.com/riscv-software-src/opensbi
				synced 2025-11-03 21:48:45 +00:00 
			
		
		
		
	GCC has already a predefined macro __ASSEMBLER__ therefore, it can be used without the need to define a new flag with -D__ASSEMBLY__. This is useful when adding the library to projects having a build system such one can build without the need to make changes. THe build system does not use the Makefile in the sources tree. Signed-off-by: Marouene Boubakri <marouene.boubakri@nxp.com> Signed-off-by: Anup Patel <anup.patel@wdc.com>
		
			
				
	
	
		
			49 lines
		
	
	
		
			980 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			980 B
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * SPDX-License-Identifier: BSD-2-Clause
 | 
						|
 *
 | 
						|
 * Copyright (c) 2019 Western Digital Corporation or its affiliates.
 | 
						|
 *
 | 
						|
 * Authors:
 | 
						|
 *   Anup Patel <anup.patel@wdc.com>
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __SBI_CONST_H__
 | 
						|
#define __SBI_CONST_H__
 | 
						|
 | 
						|
/*
 | 
						|
 * Some constant macros are used in both assembler and
 | 
						|
 * C code.  Therefore we cannot annotate them always with
 | 
						|
 * 'UL' and other type specifiers unilaterally.  We
 | 
						|
 * use the following macros to deal with this.
 | 
						|
 *
 | 
						|
 * Similarly, _AT() will cast an expression with a type in C, but
 | 
						|
 * leave it unchanged in asm.
 | 
						|
 */
 | 
						|
 | 
						|
/* clang-format off */
 | 
						|
 | 
						|
#ifdef __ASSEMBLER__
 | 
						|
#define _AC(X,Y)	X
 | 
						|
#define _AT(T,X)	X
 | 
						|
#else
 | 
						|
#define __AC(X,Y)	(X##Y)
 | 
						|
#define _AC(X,Y)	__AC(X,Y)
 | 
						|
#define _AT(T,X)	((T)(X))
 | 
						|
#endif
 | 
						|
 | 
						|
#define _UL(x)		(_AC(x, UL))
 | 
						|
#define _ULL(x)		(_AC(x, ULL))
 | 
						|
 | 
						|
#define _BITUL(x)	(_UL(1) << (x))
 | 
						|
#define _BITULL(x)	(_ULL(1) << (x))
 | 
						|
 | 
						|
#define UL(x)		(_UL(x))
 | 
						|
#define ULL(x)		(_ULL(x))
 | 
						|
 | 
						|
#define __STR(s)	#s
 | 
						|
#define STRINGIFY(s)	__STR(s)
 | 
						|
 | 
						|
/* clang-format on */
 | 
						|
 | 
						|
#endif
 |