📄 sys.h
字号:
/*
* ApOS (Another Project software for s3c2410)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* Copyright caiyuqing
*
*/
#ifndef _SYS_H
#define _SYS_H
#include "../s3c2410/cpu.h"
typedef int(* fn_ptr)(struct cpu_registers *regs);
#define NR_enter_super 0
#define NR_fork 1
#define NR_singal 2
#define NR_sigaction 3
#define NR_free_process 4
extern int sys_enter_super(struct cpu_registers *regs);
extern int sys_fork(struct cpu_registers *regs);
extern int sys_singal(struct cpu_registers *regs);
extern int sys_sigaction(struct cpu_registers *regs);
extern int sys_free_process(struct cpu_registers *regs);
#define system_call0(type,name) \
type name()\
{\
unsigned int res;\
unsigned int fun_id=NR_##name;\
asm volatile(\
"ldr r0,%1 \n\t"\
"swi \n\t"\
"str r0,%0 \n\t"\
:"=m"(res)\
:"m"(fun_id)\
:"r0","memory"\
);\
return (type)res;\
}
#define system_call1(type,name,atype,a) \
type name(atype a)\
{\
unsigned int res;\
unsigned int fun_id=NR_##name;\
asm volatile(\
"ldr r0,%1 \n\t"\
"ldr r1,%2 \n\t"\
"swi \n\t"\
"str r0,%0 \n\t"\
:"=m"(res)\
:"m"(fun_id),"m"(a)\
:"r0","r1","memory"\
);\
return (type)res;\
}
#define system_call2(type,name,atype,a,btype,b) \
type name(atype a,btype b)\
{\
unsigned int res;\
unsigned int fun_id=NR_##name;\
asm volatile(\
"ldr r0,%1 \n\t"\
"ldr r1,%2 \n\t"\
"ldr r2,%3 \n\t"\
"swi \n\t"\
"str r0,%0 \n\t"\
:"=m"(res)\
:"m"(fun_id),"m"(a),"m"(b)\
:"r0","r1","r2","memory"\
);\
return (type)res;\
}
#define system_call3(type,name,atype,a,btype,b,ctype,c) \
type name(atype a,btype b,ctype c)\
{\
unsigned int res;\
unsigned int fun_id=NR_##name;\
asm volatile(\
"ldr r0,%1 \n\t"\
"ldr r1,%2 \n\t"\
"ldr r2,%3 \n\t"\
"ldr r3,%4 \n\t"\
"swi \n\t"\
"str r0,%0 \n\t"\
:"=m"(res)\
:"m"(fun_id),"m"(a),"m"(b),"m"(c)\
:"r0","r1","r2","r3","memory"\
);\
return (type)res;\
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -