forked from Mirrors/opensbi
		
	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:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user