summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Le Moal <[email protected]>2018-12-21 17:20:56 +0900
committerDamien Le Moal <[email protected]>2018-12-21 17:20:56 +0900
commit07ee5f2e328b7ee3ed57b51f98f2765ae1701a99 (patch)
tree5b105c3825f6b747bdb25924b398bcc4168f0d4a
parent5563a0335421c3e1d69dc62a1b58675ddf3d1e5b (diff)
Kendryte-k210: Remove unnecessary asm functions
Use functions defined in sbi/riscv_asm.h. Signed-off-by: Damien Le Moal <[email protected]>
-rw-r--r--platform/kendryte/k210/platform.h37
-rw-r--r--platform/kendryte/k210/sysctl.c14
2 files changed, 10 insertions, 41 deletions
diff --git a/platform/kendryte/k210/platform.h b/platform/kendryte/k210/platform.h
index 14a4bbdf..6b520cf7 100644
--- a/platform/kendryte/k210/platform.h
+++ b/platform/kendryte/k210/platform.h
@@ -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
diff --git a/platform/kendryte/k210/sysctl.c b/platform/kendryte/k210/sysctl.c
index 3e855a58..8039f6e7 100644
--- a/platform/kendryte/k210/sysctl.c
+++ b/platform/kendryte/k210/sysctl.c
@@ -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)
@@ -1782,8 +1782,8 @@ u64 sysctl_get_time_us(void)
void sysctl_usleep(u64 usec)
{
- u64 nop_all = usec * sysctl_clock_get_freq(SYSCTL_CLOCK_CPU) / 1000000UL;
- u64 cycle = read_cycle();
+ u64 nop_all = usec * sysctl_clock_get_freq(SYSCTL_CLOCK_CPU) / 1000000UL;
+ u64 cycle = read_cycle();
- while (read_cycle() - cycle < nop_all);
+ while (read_cycle() - cycle < nop_all);
}