forked from Mirrors/opensbi
		
	lib: Simplify the for-loop in sbi_ipi_send_many()
We don't need to separately call sbi_ipi_send() for current HART in sbi_ipi_send_many(). Instead, we can simplify the for-loop in sbi_ipi_send_many() and call sbi_ipi_send() for all HARTs in the for-loop itself. Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
		@@ -76,7 +76,6 @@ int sbi_ipi_send_many(struct sbi_scratch *scratch, ulong hmask, ulong hbase,
 | 
			
		||||
	ulong i, m;
 | 
			
		||||
	ulong mask = sbi_hart_available_mask();
 | 
			
		||||
	ulong tempmask;
 | 
			
		||||
	u32 hartid = sbi_current_hartid();
 | 
			
		||||
	unsigned long last_bit = __fls(mask);
 | 
			
		||||
 | 
			
		||||
	if (hbase != -1UL) {
 | 
			
		||||
@@ -98,16 +97,9 @@ int sbi_ipi_send_many(struct sbi_scratch *scratch, ulong hmask, ulong hbase,
 | 
			
		||||
 | 
			
		||||
	/* Send IPIs to every other hart on the set */
 | 
			
		||||
	for (i = 0, m = mask; m; i++, m >>= 1)
 | 
			
		||||
		if ((m & 1UL) && (i != hartid))
 | 
			
		||||
		if (m & 1UL)
 | 
			
		||||
			sbi_ipi_send(scratch, i, event, data);
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * If the current hart is on the set, send an IPI
 | 
			
		||||
	 * to it as well
 | 
			
		||||
	 */
 | 
			
		||||
	if (mask & (1UL << hartid))
 | 
			
		||||
		sbi_ipi_send(scratch, hartid, event, data);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user