From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bin Meng Date: Tue, 13 Nov 2018 00:22:00 -0800 Subject: [U-Boot] [PATCH 12/19] riscv: Do some basic architecture level cpu initialization In-Reply-To: <1542097327-6629-1-git-send-email-bmeng.cn@gmail.com> References: <1542097327-6629-1-git-send-email-bmeng.cn@gmail.com> Message-ID: <1542097327-6629-13-git-send-email-bmeng.cn@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Implement arch_cpu_init() to do some basic architecture level cpu initialization, like FPU enable, etc. Signed-off-by: Bin Meng --- arch/riscv/cpu/cpu.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/arch/riscv/cpu/cpu.c b/arch/riscv/cpu/cpu.c index d9f820c..4e508cf 100644 --- a/arch/riscv/cpu/cpu.c +++ b/arch/riscv/cpu/cpu.c @@ -5,6 +5,7 @@ #include #include +#include /* * prior_stage_fdt_address must be stored in the data section since it is used @@ -53,3 +54,23 @@ int print_cpuinfo(void) return 0; } + +int arch_cpu_init(void) +{ + /* Enable FPU */ + if (supports_extension('d') || supports_extension('f')) { + csr_write(mstatus, MSTATUS_FS); + csr_write(fcsr, 0); + } + + /* Enable user/supervisor use of perf counters */ + if (supports_extension('s')) + csr_write(scounteren, -1); + csr_write(mcounteren, -1); + + /* Disable paging */ + if (supports_extension('s')) + csr_write(sptbr, 0); + + return 0; +} -- 2.7.4