riscv: Consolidate fences into AMOs for available_harts_lock
We can reduce the number of instructions needed to use available_harts_lock by using the aq and rl suffixes for AMOs. Signed-off-by: Sean Anderson <seanga2@gmail.com> Reviewed-by: Bin Meng <bin.meng@windriver.com> Reviewed-by: Rick Chen <rick@andestech.com>
This commit is contained in:
parent
768502e2a7
commit
309995b315
@ -125,14 +125,12 @@ call_board_init_f_0:
|
|||||||
|
|
||||||
#ifndef CONFIG_XIP
|
#ifndef CONFIG_XIP
|
||||||
la t0, available_harts_lock
|
la t0, available_harts_lock
|
||||||
fence rw, w
|
amoswap.w.rl zero, zero, 0(t0)
|
||||||
amoswap.w zero, zero, 0(t0)
|
|
||||||
|
|
||||||
wait_for_gd_init:
|
wait_for_gd_init:
|
||||||
la t0, available_harts_lock
|
la t0, available_harts_lock
|
||||||
li t1, 1
|
li t1, 1
|
||||||
1: amoswap.w t1, t1, 0(t0)
|
1: amoswap.w.aq t1, t1, 0(t0)
|
||||||
fence r, rw
|
|
||||||
bnez t1, 1b
|
bnez t1, 1b
|
||||||
|
|
||||||
/* register available harts in the available_harts mask */
|
/* register available harts in the available_harts mask */
|
||||||
@ -142,8 +140,7 @@ wait_for_gd_init:
|
|||||||
or t2, t2, t1
|
or t2, t2, t1
|
||||||
SREG t2, GD_AVAILABLE_HARTS(gp)
|
SREG t2, GD_AVAILABLE_HARTS(gp)
|
||||||
|
|
||||||
fence rw, w
|
amoswap.w.rl zero, zero, 0(t0)
|
||||||
amoswap.w zero, zero, 0(t0)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Continue on hart lottery winner, others branch to
|
* Continue on hart lottery winner, others branch to
|
||||||
|
Loading…
Reference in New Issue
Block a user