forked from Mirrors/opensbi
		
	lib: fix compilation when strings.h is included
In a systems that provide strings.h and it is included together with sbi_bitops.h the compilation error appears. The ffs() and fls() are provided by strings.h Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com> Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
		
				
					committed by
					
						
						Anup Patel
					
				
			
			
				
	
			
			
			
						parent
						
							5d53b55aa7
						
					
				
				
					commit
					6ad8917b7e
				
			@@ -39,7 +39,7 @@ unsigned long find_first_bit(const unsigned long *addr,
 | 
			
		||||
	if (tmp == 0UL)		/* Are any bits set? */
 | 
			
		||||
		return result + size;	/* Nope. */
 | 
			
		||||
found:
 | 
			
		||||
	return result + __ffs(tmp);
 | 
			
		||||
	return result + sbi_ffs(tmp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -69,7 +69,7 @@ unsigned long find_first_zero_bit(const unsigned long *addr,
 | 
			
		||||
	if (tmp == ~0UL)	/* Are any bits zero? */
 | 
			
		||||
		return result + size;	/* Nope. */
 | 
			
		||||
found:
 | 
			
		||||
	return result + ffz(tmp);
 | 
			
		||||
	return result + sbi_ffz(tmp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -100,7 +100,7 @@ unsigned long find_last_bit(const unsigned long *addr,
 | 
			
		||||
		tmp = addr[--words];
 | 
			
		||||
		if (tmp) {
 | 
			
		||||
found:
 | 
			
		||||
			return words * BITS_PER_LONG + __fls(tmp);
 | 
			
		||||
			return words * BITS_PER_LONG + sbi_fls(tmp);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -150,7 +150,7 @@ found_first:
 | 
			
		||||
	if (tmp == 0UL)		/* Are any bits set? */
 | 
			
		||||
		return result + size;	/* Nope. */
 | 
			
		||||
found_middle:
 | 
			
		||||
	return result + __ffs(tmp);
 | 
			
		||||
	return result + sbi_ffs(tmp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -196,5 +196,5 @@ found_first:
 | 
			
		||||
	if (tmp == ~0UL)	/* Are any bits zero? */
 | 
			
		||||
		return result + size;	/* Nope. */
 | 
			
		||||
found_middle:
 | 
			
		||||
	return result + ffz(tmp);
 | 
			
		||||
	return result + sbi_ffz(tmp);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -386,7 +386,7 @@ static int hart_pmu_get_allowed_bits(void)
 | 
			
		||||
		if (trap.cause)
 | 
			
		||||
			return 0;
 | 
			
		||||
	}
 | 
			
		||||
	num_bits = __fls(val) + 1;
 | 
			
		||||
	num_bits = sbi_fls(val) + 1;
 | 
			
		||||
#if __riscv_xlen == 32
 | 
			
		||||
	csr_write_allowed(CSR_MHPMCOUNTER3H, (ulong)&trap, val);
 | 
			
		||||
	if (!trap.cause) {
 | 
			
		||||
@@ -394,7 +394,7 @@ static int hart_pmu_get_allowed_bits(void)
 | 
			
		||||
		if (trap.cause)
 | 
			
		||||
			return num_bits;
 | 
			
		||||
	}
 | 
			
		||||
	num_bits += __fls(val) + 1;
 | 
			
		||||
	num_bits += sbi_fls(val) + 1;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@@ -457,8 +457,8 @@ static void hart_detect_features(struct sbi_scratch *scratch)
 | 
			
		||||
	 */
 | 
			
		||||
	val = hart_pmp_get_allowed_addr();
 | 
			
		||||
	if (val) {
 | 
			
		||||
		hfeatures->pmp_gran =  1 << (__ffs(val) + 2);
 | 
			
		||||
		hfeatures->pmp_addr_bits = __fls(val) + 1;
 | 
			
		||||
		hfeatures->pmp_gran =  1 << (sbi_ffs(val) + 2);
 | 
			
		||||
		hfeatures->pmp_addr_bits = sbi_fls(val) + 1;
 | 
			
		||||
		/* Detect number of PMP regions. At least PMPADDR0 should be implemented*/
 | 
			
		||||
		__check_csr_64(CSR_PMPADDR0, 0, val, pmp_count, __pmp_skip);
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -347,7 +347,7 @@ int sbi_pmu_ctr_start(unsigned long cbase, unsigned long cmask,
 | 
			
		||||
	int ret = SBI_EINVAL;
 | 
			
		||||
	bool bUpdate = FALSE;
 | 
			
		||||
 | 
			
		||||
	if (__fls(ctr_mask) >= total_ctrs)
 | 
			
		||||
	if (sbi_fls(ctr_mask) >= total_ctrs)
 | 
			
		||||
		return ret;
 | 
			
		||||
 | 
			
		||||
	if (flags & SBI_PMU_START_FLAG_SET_INIT_VALUE)
 | 
			
		||||
@@ -421,7 +421,7 @@ int sbi_pmu_ctr_stop(unsigned long cbase, unsigned long cmask,
 | 
			
		||||
	uint32_t event_code;
 | 
			
		||||
	unsigned long ctr_mask = cmask << cbase;
 | 
			
		||||
 | 
			
		||||
	if (__fls(ctr_mask) >= total_ctrs)
 | 
			
		||||
	if (sbi_fls(ctr_mask) >= total_ctrs)
 | 
			
		||||
		return SBI_EINVAL;
 | 
			
		||||
 | 
			
		||||
	for_each_set_bit_from(cbase, &ctr_mask, total_ctrs) {
 | 
			
		||||
@@ -614,7 +614,7 @@ int sbi_pmu_ctr_cfg_match(unsigned long cidx_base, unsigned long cidx_mask,
 | 
			
		||||
	unsigned long tmp = cidx_mask << cidx_base;
 | 
			
		||||
 | 
			
		||||
	/* Do a basic sanity check of counter base & mask */
 | 
			
		||||
	if (__fls(tmp) >= total_ctrs || event_type >= SBI_PMU_EVENT_TYPE_MAX)
 | 
			
		||||
	if (sbi_fls(tmp) >= total_ctrs || event_type >= SBI_PMU_EVENT_TYPE_MAX)
 | 
			
		||||
		return SBI_EINVAL;
 | 
			
		||||
 | 
			
		||||
	if (flags & SBI_PMU_CFG_FLAG_SKIP_MATCH) {
 | 
			
		||||
 
 | 
			
		||||
@@ -154,7 +154,7 @@ static int aclint_mtimer_add_regions(unsigned long addr, unsigned long size)
 | 
			
		||||
	while (pos < end) {
 | 
			
		||||
		rsize = pos & (MTIMER_ADD_REGION_ALIGN - 1);
 | 
			
		||||
		if (rsize)
 | 
			
		||||
			rsize = 1UL << __ffs(pos);
 | 
			
		||||
			rsize = 1UL << sbi_ffs(pos);
 | 
			
		||||
		else
 | 
			
		||||
			rsize = ((end - pos) < MTIMER_ADD_REGION_ALIGN) ?
 | 
			
		||||
				(end - pos) : MTIMER_ADD_REGION_ALIGN;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user