forked from Mirrors/opensbi
		
	include: Make mstatus parameter optional for get_insn()
The mstatus parameter of get_insn() is used to return MSTATUS CSR value which get_insn() saw. Most of the get_insn() callers don't use the value returned in mstatus so this patch makes mstatus parameter optional for get_insn(). Signed-off-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
		@@ -82,7 +82,7 @@ static inline ulong get_insn(ulong mepc, ulong *mstatus)
 | 
			
		||||
#endif
 | 
			
		||||
		"csrw "STR(CSR_MSTATUS)", %[mstatus]"
 | 
			
		||||
		: [mstatus] "+&r" (__mstatus), [insn] "=&r" (val)
 | 
			
		||||
		: [mprv] "r" (MSTATUS_MPRV | MSTATUS_MXR), [addr] "r" (__mepc));
 | 
			
		||||
		: [mprv] "r" (MSTATUS_MPRV|MSTATUS_MXR), [addr] "r" (__mepc));
 | 
			
		||||
#else
 | 
			
		||||
	ulong rvc_mask = 3, tmp;
 | 
			
		||||
	asm ("csrrs %[mstatus], "STR(CSR_MSTATUS)", %[mprv]\n"
 | 
			
		||||
@@ -107,10 +107,11 @@ static inline ulong get_insn(ulong mepc, ulong *mstatus)
 | 
			
		||||
		"add %[insn], %[insn], %[tmp]\n"
 | 
			
		||||
		"2: csrw "STR(CSR_MSTATUS)", %[mstatus]"
 | 
			
		||||
	: [mstatus] "+&r" (__mstatus), [insn] "=&r" (val), [tmp] "=&r" (tmp)
 | 
			
		||||
	: [mprv] "r" (MSTATUS_MPRV | MSTATUS_MXR), [addr] "r" (__mepc),
 | 
			
		||||
	: [mprv] "r" (MSTATUS_MPRV|MSTATUS_MXR), [addr] "r" (__mepc),
 | 
			
		||||
	[rvc_mask] "r" (rvc_mask), [xlen_minus_16] "i" (__riscv_xlen - 16));
 | 
			
		||||
#endif
 | 
			
		||||
	*mstatus = __mstatus;
 | 
			
		||||
	if (mstatus)
 | 
			
		||||
		*mstatus = __mstatus;
 | 
			
		||||
	return val;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user