mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-09-21 07:01:57 +00:00
riscv: Do some basic architecture level cpu initialization
In arch_cpu_init_dm() do some basic architecture level cpu initialization, like FPU enable, etc. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de> Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
parent
57fe5c64cb
commit
485e822346
1 changed files with 26 additions and 1 deletions
|
@ -8,6 +8,7 @@
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
#include <log.h>
|
#include <log.h>
|
||||||
#include <asm/csr.h>
|
#include <asm/csr.h>
|
||||||
|
#include <asm/encoding.h>
|
||||||
#include <dm/uclass-internal.h>
|
#include <dm/uclass-internal.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -61,7 +62,31 @@ static int riscv_cpu_probe(void)
|
||||||
|
|
||||||
int arch_cpu_init_dm(void)
|
int arch_cpu_init_dm(void)
|
||||||
{
|
{
|
||||||
return riscv_cpu_probe();
|
int ret;
|
||||||
|
|
||||||
|
ret = riscv_cpu_probe();
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
/* Enable FPU */
|
||||||
|
if (supports_extension('d') || supports_extension('f')) {
|
||||||
|
csr_set(MODE_PREFIX(status), MSTATUS_FS);
|
||||||
|
csr_write(fcsr, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CONFIG_IS_ENABLED(RISCV_MMODE)) {
|
||||||
|
/*
|
||||||
|
* Enable perf counters for cycle, time,
|
||||||
|
* and instret counters only
|
||||||
|
*/
|
||||||
|
csr_write(mcounteren, GENMASK(2, 0));
|
||||||
|
|
||||||
|
/* Disable paging */
|
||||||
|
if (supports_extension('s'))
|
||||||
|
csr_write(satp, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int arch_early_init_r(void)
|
int arch_early_init_r(void)
|
||||||
|
|
Loading…
Reference in a new issue