forked from Mirrors/opensbi
		
	lib: sbi: Add Zicntr as a HART ISA extension
Recently ratified Zicntr ISA extension covers cycle, time and instret CSRs so we replace the "time" ISA extension with "zicntr" ISA extension in OpenSBI. Signed-off-by: Anup Patel <apatel@ventanamicro.com> Reviewed-by: Xiang W <wxjstz@126.com>
This commit is contained in:
		@@ -28,8 +28,8 @@ enum sbi_hart_priv_versions {
 | 
			
		||||
enum sbi_hart_extensions {
 | 
			
		||||
	/** Hart has Sscofpmt extension */
 | 
			
		||||
	SBI_HART_EXT_SSCOFPMF = 0,
 | 
			
		||||
	/** HART has HW time CSR (extension name not available) */
 | 
			
		||||
	SBI_HART_EXT_TIME,
 | 
			
		||||
	/** HART has Zicntr extension (i.e. HW cycle, time & instret CSRs) */
 | 
			
		||||
	SBI_HART_EXT_ZICNTR,
 | 
			
		||||
	/** HART has AIA M-mode CSRs */
 | 
			
		||||
	SBI_HART_EXT_SMAIA,
 | 
			
		||||
	/** HART has Smstateen CSR **/
 | 
			
		||||
 
 | 
			
		||||
@@ -441,8 +441,8 @@ static inline char *sbi_hart_extension_id2string(int ext)
 | 
			
		||||
	case SBI_HART_EXT_SSCOFPMF:
 | 
			
		||||
		estr = "sscofpmf";
 | 
			
		||||
		break;
 | 
			
		||||
	case SBI_HART_EXT_TIME:
 | 
			
		||||
		estr = "time";
 | 
			
		||||
	case SBI_HART_EXT_ZICNTR:
 | 
			
		||||
		estr = "zicntr";
 | 
			
		||||
		break;
 | 
			
		||||
	case SBI_HART_EXT_SMAIA:
 | 
			
		||||
		estr = "smaia";
 | 
			
		||||
@@ -676,7 +676,7 @@ __mhpm_skip:
 | 
			
		||||
	csr_read_allowed(CSR_TIME, (unsigned long)&trap);
 | 
			
		||||
	if (!trap.cause)
 | 
			
		||||
		__sbi_hart_update_extension(hfeatures,
 | 
			
		||||
					SBI_HART_EXT_TIME, true);
 | 
			
		||||
					SBI_HART_EXT_ZICNTR, true);
 | 
			
		||||
 | 
			
		||||
	/* Detect if hart has AIA local interrupt CSRs */
 | 
			
		||||
	csr_read_allowed(CSR_MTOPI, (unsigned long)&trap);
 | 
			
		||||
 
 | 
			
		||||
@@ -188,7 +188,7 @@ int sbi_timer_init(struct sbi_scratch *scratch, bool cold_boot)
 | 
			
		||||
		if (!time_delta_off)
 | 
			
		||||
			return SBI_ENOMEM;
 | 
			
		||||
 | 
			
		||||
		if (sbi_hart_has_extension(scratch, SBI_HART_EXT_TIME))
 | 
			
		||||
		if (sbi_hart_has_extension(scratch, SBI_HART_EXT_ZICNTR))
 | 
			
		||||
			get_time_val = get_ticks;
 | 
			
		||||
	} else {
 | 
			
		||||
		if (!time_delta_off)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user