From f4cf6da7ff2d97f74129a6f4f333991af596111e Mon Sep 17 00:00:00 2001 From: Alistair Francis Date: Fri, 18 Jan 2019 11:36:32 -0800 Subject: [PATCH] sbi_emulate_csr: Shift sbi_timer_value directly csr_val is a tartget length based variable, so on 32-bit devices it's only 32-bits. To avoid clearing the entire register perform both steps in a single line. Signed-off-by: Alistair Francis --- lib/sbi_emulate_csr.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/sbi_emulate_csr.c b/lib/sbi_emulate_csr.c index 2918a804..1d52aac8 100644 --- a/lib/sbi_emulate_csr.c +++ b/lib/sbi_emulate_csr.c @@ -60,8 +60,7 @@ int sbi_emulate_csr_read(int csr_num, case CSR_TIMEH: if (!((cen >> (CSR_TIME - CSR_CYCLE)) & 1)) return -1; - *csr_val = sbi_timer_value(scratch); - *csr_val = *csr_val >> 32; + *csr_val = sbi_timer_value(scratch) >> 32; break; case CSR_INSTRETH: if (!((cen >> (CSR_INSTRET - CSR_CYCLE)) & 1))