Files

61 lines
1.6 KiB
C
Raw Permalink Normal View History

2026-05-27 23:30:31 +08:00
#ifndef INCLUDED_CPU_H
#define INCLUDED_CPU_H
#ifndef INCLUDED_CH32V10X_H
#define INCLUDED_CH32V10X_H
#include <ch32v10x.h>
#endif /*INCLUDED_CH32V10X_H*/
#ifndef INCLUDED_OS_TYPES_H
#include <os_types.h>
#endif /*INCLUDED_OS_TYPES_H*/
#ifndef INCLUDED_OS_COMPILER_H
#include <os_compiler.h>
#endif /*INCLUDED_OS_COMPILER_H*/
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
#define CPU_KEY1 0xFA05
#define CPU_KEY2 0xBCAF
#define CPU_KEY3 0xBEEF
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
OS_STATIC_FORCE_INLINE
os_uint_t cpu_save_disable_irq_in_isr(void){
os_uint_t result;
2026-05-28 15:23:19 +08:00
__asm volatile ("csrrw %0, mstatus, %1"
:"=r"(result)
:"r"(0x1800)
:"memory");
2026-05-27 23:30:31 +08:00
return result;
}
OS_STATIC_FORCE_INLINE
void cpu_restore_irq_in_isr(os_uint_t value){
__set_MSTATUS(value);
}
#define os_port_disable_irq __disable_irq
#define os_port_enable_irq __enable_irq
#define os_port_save_disable_irq_in_isr cpu_save_disable_irq_in_isr
#define os_port_restore_irq_in_isr cpu_restore_irq_in_isr
#define os_port_save_disable_irq cpu_save_disable_irq_in_isr
#define os_port_restore_irq cpu_restore_irq_in_isr
2026-05-28 15:23:19 +08:00
OS_STATIC_FORCE_INLINE
void cpu_set_isr_sp(void){
__asm volatile("csrrw sp,mscratch,sp");
}
OS_STATIC_FORCE_INLINE
void cpu_set_task_sp(void){
__asm volatile("csrrw sp,mscratch,sp");
}
2026-05-27 23:30:31 +08:00
#endif /*INCLUDED_CPU_H*/