48 lines
1.6 KiB
C
48 lines
1.6 KiB
C
#include <luna/syscall.h>
|
|
|
|
long int __luna_syscall0(long int sys_num)
|
|
{
|
|
long int result;
|
|
asm volatile("int $0x42" : "=a"(result) : "a"(sys_num));
|
|
return result;
|
|
}
|
|
|
|
long int __luna_syscall1(long int sys_num, unsigned long int arg0)
|
|
{
|
|
long int result;
|
|
asm volatile("int $0x42" : "=a"(result) : "a"(sys_num), "D"(arg0));
|
|
return result;
|
|
}
|
|
|
|
long int __luna_syscall2(long int sys_num, unsigned long int arg0, unsigned long int arg1)
|
|
{
|
|
long int result;
|
|
asm volatile("int $0x42" : "=a"(result) : "a"(sys_num), "D"(arg0), "S"(arg1));
|
|
return result;
|
|
}
|
|
|
|
long int __luna_syscall3(long int sys_num, unsigned long int arg0, unsigned long int arg1, unsigned long int arg2)
|
|
{
|
|
long int result;
|
|
asm volatile("int $0x42" : "=a"(result) : "a"(sys_num), "D"(arg0), "S"(arg1), "d"(arg2));
|
|
return result;
|
|
}
|
|
|
|
long int __luna_syscall4(long int sys_num, unsigned long int arg0, unsigned long int arg1, unsigned long int arg2,
|
|
unsigned long int arg3)
|
|
{
|
|
long int result;
|
|
register unsigned long int value0 asm("r10") = arg3;
|
|
asm volatile("int $0x42" : "=a"(result) : "a"(sys_num), "D"(arg0), "S"(arg1), "d"(arg2), "r"(value0));
|
|
return result;
|
|
}
|
|
|
|
long int __luna_syscall5(long int sys_num, unsigned long int arg0, unsigned long int arg1, unsigned long int arg2,
|
|
unsigned long int arg3, unsigned long int arg4)
|
|
{
|
|
long int result;
|
|
register unsigned long int value0 asm("r10") = arg3;
|
|
register unsigned long int value1 asm("r8") = arg4;
|
|
asm volatile("int $0x42" : "=a"(result) : "a"(sys_num), "D"(arg0), "S"(arg1), "d"(arg2), "r"(value0), "r"(value1));
|
|
return result;
|
|
} |