Kendryte-k210: Remove unnecessary asm functions

Use functions defined in sbi/riscv_asm.h.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
This commit is contained in:
Damien Le Moal 2018-12-21 17:20:56 +09:00
parent 5563a03354
commit 07ee5f2e32
2 changed files with 10 additions and 41 deletions

View file

@ -16,6 +16,8 @@
#ifndef _PLATFORM_H_
#define _PLATFORM_H_
#include <sbi/riscv_asm.h>
/* Register base address */
/* Under Coreplex */
@ -83,40 +85,7 @@
#define SPI1_BASE_ADDR (0x53000000U)
#define SPI3_BASE_ADDR (0x54000000U)
#define read_csr(reg) ({ unsigned long __tmp; \
asm volatile ("csrr %0, " #reg : "=r"(__tmp)); \
__tmp; })
#define write_csr(reg, val) ({ \
if (__builtin_constant_p(val) && (unsigned long)(val) < 32) \
asm volatile ("csrw " #reg ", %0" :: "i"(val)); \
else \
asm volatile ("csrw " #reg ", %0" :: "r"(val)); })
#define swap_csr(reg, val) ({ unsigned long __tmp; \
if (__builtin_constant_p(val) && (unsigned long)(val) < 32) \
asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "i"(val)); \
else \
asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "r"(val)); \
__tmp; })
#define set_csr(reg, bit) ({ unsigned long __tmp; \
if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) \
asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "i"(bit)); \
else \
asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "r"(bit)); \
__tmp; })
#define clear_csr(reg, bit) ({ unsigned long __tmp; \
if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) \
asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "i"(bit)); \
else \
asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "r"(bit)); \
__tmp; })
#define read_time() read_csr(mtime)
#define read_cycle() read_csr(mcycle)
#define current_coreid() read_csr(mhartid)
#define read_cycle() csr_read(mcycle)
/*
* PLIC External Interrupt Numbers

View file

@ -1763,14 +1763,14 @@ u32 sysctl_cpu_set_freq(u32 freq)
void sysctl_enable_irq(void)
{
set_csr(mie, MIP_MEIP);
set_csr(mstatus, MSTATUS_MIE);
csr_read_set(mie, MIP_MEIP);
csr_read_set(mstatus, MSTATUS_MIE);
}
void sysctl_disable_irq(void)
{
clear_csr(mie, MIP_MEIP);
clear_csr(mstatus, MSTATUS_MIE);
csr_read_clear(mie, MIP_MEIP);
csr_read_clear(mstatus, MSTATUS_MIE);
}
u64 sysctl_get_time_us(void)