forked from Mirrors/opensbi
		
	lib: sbi_hart: Enable hcontext and scontext
According to the description in "riscv-state-enable[0]", to access
h/scontext in S-Mode, we need to enable the 57th bit.
If it is not enabled, an "illegal instruction" error will occur.
Link: a28bfae443/content.adoc [0]
Signed-off-by: Nylon Chen <nylon.chen@sifive.com>
Reviewed-by: Zong Li <zong.li@sifive.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
			
			
This commit is contained in:
		@@ -736,6 +736,8 @@
 | 
			
		||||
#define SMSTATEEN0_CS			(_ULL(1) << SMSTATEEN0_CS_SHIFT)
 | 
			
		||||
#define SMSTATEEN0_FCSR_SHIFT		1
 | 
			
		||||
#define SMSTATEEN0_FCSR			(_ULL(1) << SMSTATEEN0_FCSR_SHIFT)
 | 
			
		||||
#define SMSTATEEN0_CONTEXT_SHIFT	57
 | 
			
		||||
#define SMSTATEEN0_CONTEXT		(_ULL(1) << SMSTATEEN0_CONTEXT_SHIFT)
 | 
			
		||||
#define SMSTATEEN0_IMSIC_SHIFT		58
 | 
			
		||||
#define SMSTATEEN0_IMSIC		(_ULL(1) << SMSTATEEN0_IMSIC_SHIFT)
 | 
			
		||||
#define SMSTATEEN0_AIA_SHIFT		59
 | 
			
		||||
 
 | 
			
		||||
@@ -90,6 +90,7 @@ static void mstatus_init(struct sbi_scratch *scratch)
 | 
			
		||||
		mstateen_val |= ((uint64_t)csr_read(CSR_MSTATEEN0H)) << 32;
 | 
			
		||||
#endif
 | 
			
		||||
		mstateen_val |= SMSTATEEN_STATEN;
 | 
			
		||||
		mstateen_val |= SMSTATEEN0_CONTEXT;
 | 
			
		||||
		mstateen_val |= SMSTATEEN0_HSENVCFG;
 | 
			
		||||
 | 
			
		||||
		if (sbi_hart_has_extension(scratch, SBI_HART_EXT_SMAIA))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user