forked from Mirrors/opensbi
		
	include: Replace #csr with __ASM_STR(csr) in csr_xyz() macros
We replace #csr with __ASM_STR(csr) in all csr_xyz() macros so that we can pass CSR number instead of CSR name when GCC is not aware of CSR name. Signed-off-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
		@@ -131,7 +131,7 @@
 | 
			
		||||
#define csr_swap(csr, val)					\
 | 
			
		||||
({								\
 | 
			
		||||
	unsigned long __v = (unsigned long)(val);		\
 | 
			
		||||
	__asm__ __volatile__ ("csrrw %0, " #csr ", %1"		\
 | 
			
		||||
	__asm__ __volatile__ ("csrrw %0, " __ASM_STR(csr) ", %1"\
 | 
			
		||||
			      : "=r" (__v) : "rK" (__v)		\
 | 
			
		||||
			      : "memory");			\
 | 
			
		||||
	__v;							\
 | 
			
		||||
@@ -157,7 +157,7 @@
 | 
			
		||||
#define csr_read_set(csr, val)					\
 | 
			
		||||
({								\
 | 
			
		||||
	unsigned long __v = (unsigned long)(val);		\
 | 
			
		||||
	__asm__ __volatile__ ("csrrs %0, " #csr ", %1"		\
 | 
			
		||||
	__asm__ __volatile__ ("csrrs %0, " __ASM_STR(csr) ", %1"\
 | 
			
		||||
			      : "=r" (__v) : "rK" (__v)		\
 | 
			
		||||
			      : "memory");			\
 | 
			
		||||
	__v;							\
 | 
			
		||||
@@ -166,7 +166,7 @@
 | 
			
		||||
#define csr_set(csr, val)					\
 | 
			
		||||
({								\
 | 
			
		||||
	unsigned long __v = (unsigned long)(val);		\
 | 
			
		||||
	__asm__ __volatile__ ("csrs " #csr ", %0"		\
 | 
			
		||||
	__asm__ __volatile__ ("csrs " __ASM_STR(csr) ", %0"	\
 | 
			
		||||
			      : : "rK" (__v)			\
 | 
			
		||||
			      : "memory");			\
 | 
			
		||||
})
 | 
			
		||||
@@ -174,7 +174,7 @@
 | 
			
		||||
#define csr_read_clear(csr, val)				\
 | 
			
		||||
({								\
 | 
			
		||||
	unsigned long __v = (unsigned long)(val);		\
 | 
			
		||||
	__asm__ __volatile__ ("csrrc %0, " #csr ", %1"		\
 | 
			
		||||
	__asm__ __volatile__ ("csrrc %0, " __ASM_STR(csr) ", %1"\
 | 
			
		||||
			      : "=r" (__v) : "rK" (__v)		\
 | 
			
		||||
			      : "memory");			\
 | 
			
		||||
	__v;							\
 | 
			
		||||
@@ -183,7 +183,7 @@
 | 
			
		||||
#define csr_clear(csr, val)					\
 | 
			
		||||
({								\
 | 
			
		||||
	unsigned long __v = (unsigned long)(val);		\
 | 
			
		||||
	__asm__ __volatile__ ("csrc " #csr ", %0"		\
 | 
			
		||||
	__asm__ __volatile__ ("csrc " __ASM_STR(csr) ", %0"	\
 | 
			
		||||
			      : : "rK" (__v)			\
 | 
			
		||||
			      : "memory");			\
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user