forked from Mirrors/opensbi
		
	firmware: Minor optimization in _scratch_init()
Before entering _scratch_init(), register t3 already holds a copy of the firmware end address, hence there is no need to calculate it again. This reduces 3 instructions in each _scratch_init() loop. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Xiang W <wxjstz@126.com> Reviewed-by: Atish Patra <atish.patra@wdc.com>
This commit is contained in:
		@@ -278,6 +278,14 @@ _bss_zero:
 | 
			
		||||
	/* hartid 0 is mandated by ISA */
 | 
			
		||||
	li	t1, 0
 | 
			
		||||
_scratch_init:
 | 
			
		||||
	/*
 | 
			
		||||
	 * The following registers hold values that are computed before
 | 
			
		||||
	 * entering this block, and should remain unchanged.
 | 
			
		||||
	 *
 | 
			
		||||
	 * t3 -> the firmware end address
 | 
			
		||||
	 * s7 -> HART count
 | 
			
		||||
	 * s8 -> HART stack size
 | 
			
		||||
	 */
 | 
			
		||||
	add	tp, t3, zero
 | 
			
		||||
	mul	a5, s8, t1
 | 
			
		||||
	sub	tp, tp, a5
 | 
			
		||||
@@ -287,10 +295,7 @@ _scratch_init:
 | 
			
		||||
	/* Initialize scratch space */
 | 
			
		||||
	/* Store fw_start and fw_size in scratch space */
 | 
			
		||||
	lla	a4, _fw_start
 | 
			
		||||
	lla	a5, _fw_end
 | 
			
		||||
	mul	t0, s7, s8
 | 
			
		||||
	add	a5, a5, t0
 | 
			
		||||
	sub	a5, a5, a4
 | 
			
		||||
	sub	a5, t3, a4
 | 
			
		||||
	REG_S	a4, SBI_SCRATCH_FW_START_OFFSET(tp)
 | 
			
		||||
	REG_S	a5, SBI_SCRATCH_FW_SIZE_OFFSET(tp)
 | 
			
		||||
	/* Store next arg1 in scratch space */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user