12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*
- * Copyright (c) 2006-2023, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2018-10-03 Bernard The first version
- * 2020/11/20 BalanceTWK Add FPU support
- * 2023/01/04 WangShun Adapt to CH32
- */
- #ifndef CPUPORT_H__
- #define CPUPORT_H__
- #include <rtconfig.h>
- #if !defined(__ASSEMBLY__)
- #if defined(SOC_RISCV_FAMILY_CH32)
- #include "interrupt.h"
- #endif
- #endif
- #ifndef __ASSEMBLY__
- #ifdef RT_USING_SMP
- typedef union {
- unsigned long slock;
- struct __arch_tickets {
- unsigned short owner;
- unsigned short next;
- } tickets;
- } rt_hw_spinlock_t;
- #endif
- #endif
- /* bytes of register width */
- #ifdef ARCH_CPU_64BIT
- #define STORE sd
- #define LOAD ld
- #define REGBYTES 8
- #else
- #define STORE sw
- #define LOAD lw
- #define REGBYTES 4
- #endif
- #ifdef ARCH_RISCV_FPU
- #ifdef ARCH_RISCV_FPU_D
- #define FSTORE fsd
- #define FLOAD fld
- #define FREGBYTES 8
- #define rv_floatreg_t rt_int64_t
- #endif
- #ifdef ARCH_RISCV_FPU_S
- #define FSTORE fsw
- #define FLOAD flw
- #define FREGBYTES 4
- #define rv_floatreg_t rt_int32_t
- #endif
- #endif
- #endif
|