diff --git a/include/sbi/sbi_hsm.h b/include/sbi/sbi_hsm.h index 227bb6b..11ae3ac 100644 --- a/include/sbi/sbi_hsm.h +++ b/include/sbi/sbi_hsm.h @@ -24,9 +24,9 @@ void __noreturn sbi_hsm_exit(struct sbi_scratch *scratch); int sbi_hsm_hart_start(struct sbi_scratch *scratch, u32 hartid, ulong saddr, ulong priv); int sbi_hsm_hart_stop(struct sbi_scratch *scratch, bool exitnow); -int sbi_hsm_hart_get_state(struct sbi_scratch *scratch, u32 hartid); +int sbi_hsm_hart_get_state(u32 hartid); int sbi_hsm_hart_state_to_status(int state); -bool sbi_hsm_hart_started(struct sbi_scratch *scratch, u32 hartid); +bool sbi_hsm_hart_started(u32 hartid); int sbi_hsm_hart_started_mask(struct sbi_scratch *scratch, ulong hbase, ulong *out_hmask); void sbi_hsm_prepare_next_jump(struct sbi_scratch *scratch, u32 hartid); diff --git a/lib/sbi/sbi_ecall_hsm.c b/lib/sbi/sbi_ecall_hsm.c index 528bc80..5b77726 100644 --- a/lib/sbi/sbi_ecall_hsm.c +++ b/lib/sbi/sbi_ecall_hsm.c @@ -30,7 +30,7 @@ static int sbi_ecall_hsm_handler(struct sbi_scratch *scratch, ret = sbi_hsm_hart_stop(scratch, TRUE); break; case SBI_EXT_HSM_HART_GET_STATUS: - hstate = sbi_hsm_hart_get_state(scratch, args[0]); + hstate = sbi_hsm_hart_get_state(args[0]); ret = sbi_hsm_hart_state_to_status(hstate); break; default: diff --git a/lib/sbi/sbi_hsm.c b/lib/sbi/sbi_hsm.c index e8ca428..b403423 100644 --- a/lib/sbi/sbi_hsm.c +++ b/lib/sbi/sbi_hsm.c @@ -55,9 +55,10 @@ int sbi_hsm_hart_state_to_status(int state) return ret; } -int sbi_hsm_hart_get_state(struct sbi_scratch *scratch, u32 hartid) +int sbi_hsm_hart_get_state(u32 hartid) { struct sbi_hsm_data *hdata; + struct sbi_scratch *scratch; scratch = sbi_hartid_to_scratch(hartid); hdata = sbi_scratch_offset_ptr(scratch, hart_data_offset); @@ -65,9 +66,9 @@ int sbi_hsm_hart_get_state(struct sbi_scratch *scratch, u32 hartid) return atomic_read(&hdata->state); } -bool sbi_hsm_hart_started(struct sbi_scratch *scratch, u32 hartid) +bool sbi_hsm_hart_started(u32 hartid) { - if (sbi_hsm_hart_get_state(scratch, hartid) == SBI_HART_STARTED) + if (sbi_hsm_hart_get_state(hartid) == SBI_HART_STARTED) return TRUE; else return FALSE; @@ -104,7 +105,7 @@ int sbi_hsm_hart_started_mask(struct sbi_scratch *scratch, hcount = BITS_PER_LONG; for (i = hbase; i < hcount; i++) { - if (sbi_hsm_hart_get_state(scratch, i) == SBI_HART_STARTED) + if (sbi_hsm_hart_get_state(i) == SBI_HART_STARTED) *out_hmask |= 1UL << (i - hbase); } @@ -262,7 +263,7 @@ int sbi_hsm_hart_stop(struct sbi_scratch *scratch, bool exitnow) hart_data_offset); if (sbi_platform_hart_disabled(plat, hartid) || - !sbi_hsm_hart_started(scratch, hartid)) + !sbi_hsm_hart_started(hartid)) return SBI_EINVAL; oldstate = arch_atomic_cmpxchg(&hdata->state, SBI_HART_STARTED,