⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syscall.h

📁 基于ARM核的HMS7202
💻 H
字号:
#ifndef _SYSCALL_H#define _SYSCALL_H#define MON_SYSCALL_BASE			0x20#define MON_SYSCALL_sys_mon	(MON_SYSCALL_BASE + 0x0)#define MON_SYSCALL_sys_putchar			(MON_SYSCALL_BASE + 0x1)#define MON_SYSCALL_sys_getchar			(MON_SYSCALL_BASE + 0x2)#define MON_SYSCALL_sys_setfiq			(MON_SYSCALL_BASE + 0x3)#define MON_SYSCALL_sys_setirq			(MON_SYSCALL_BASE + 0x4)#define MON_SYSCALL_sys_get_cp15		(MON_SYSCALL_BASE + 0x5)#ifdef __GNUCC__#define __sys2(x) #x#define __sys1(x) __sys2(x)#ifndef __syscall#define __syscall(name) "swi\t" __sys1(MON_SYSCALL_##name) "\n\t"#endif#define __syscall_return(type, res)                                     \do {                                                                    \        if ((unsigned long)(res) >= (unsigned long)(-125)) {            \        /*        errno = -(res);   */                                  \                res = -1;                                               \        }                                                               \        return (type) (res);                                            \} while (0)#define _syscall0(type,name)                                            \type name(void) {                                                       \  long __res;                                                           \  __asm__ __volatile__ (                                                \  __syscall(name)                                                       \  "mov %0,r0"                                                           \  :"=r" (__res) : : "r0","lr");                                         \  __syscall_return(type,__res);                                         \}#define _syscall1(type,name,type1,arg1)                                 \type name(type1 arg1) {                                                 \  long __res;                                                           \  __asm__ __volatile__ (                                                \  "mov\tr0,%1\n\t"                                                      \  __syscall(name)                                                       \  "mov %0,r0"                                                           \        : "=r" (__res)                                                  \        : "r" ((long)(arg1))                                            \        : "r0","lr");                                                   \  __syscall_return(type,__res);                                         \}static inline _syscall0(int,sys_mon)static inline _syscall1(int,sys_setfiq,int,flag)static inline _syscall1(int,sys_setirq,int,flag)static inline _syscall1(int,sys_putchar,int,ch)static inline _syscall0(int,sys_getchar)/*extern void __syscall(MON_SYSCALL_putchar) sys_putchar(char);extern char __syscall(MON_SYSCALL_getchar) sys_getchar();extern void __syscall(MON_SYSCALL_set_fiq) sys_setfiq(int);extern void __syscall(MON_SYSCALL_set_irq) sys_setirq(int);extern void __syscall(MON_SYSCALL_get_cp15) sys_get_cp15(int);*/#else/*extern void __swi(MON_SYSCALL_sys_mon) sys_mon(void);extern void __swi(MON_SYSCALL_sys_putchar) sys_putchar(char);extern char __swi(MON_SYSCALL_sys_getchar) sys_getchar(void);extern void __swi(MON_SYSCALL_sys_setfiq) sys_setfiq(int);extern void __swi(MON_SYSCALL_sys_setirq) sys_setirq(int);extern void __swi(MON_SYSCALL_sys_get_cp15) sys_get_cp15(int);*/#endif#define cli() sys_setirq(0)#define sti() sys_setirq(1)#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -