28 lines
752 B
C
28 lines
752 B
C
|
#include "syscall.h"
|
||
|
|
||
|
int __syscall(int num, void *a0, void *a1, void *a2, void *a3, void *a4)
|
||
|
{
|
||
|
int ret;
|
||
|
asm volatile(" \n \
|
||
|
mov %1, %%eax; \n \
|
||
|
mov %2, %%ebx; \n \
|
||
|
mov %3, %%ecx; \n \
|
||
|
mov %4, %%edx; \n \
|
||
|
mov %5, %%edi; \n \
|
||
|
mov %6, %%esi; \n \
|
||
|
int $48; \n \
|
||
|
mov %%eax, %0" : "=m" (ret),
|
||
|
"+m" (num),
|
||
|
"+m" (a0),
|
||
|
"+m" (a1),
|
||
|
"+m" (a2),
|
||
|
"+m" (a3),
|
||
|
"+m" (a4));
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
int write(int fd, char *buf, int count)
|
||
|
{
|
||
|
return __syscall(1, (void *) fd, (void *) buf, (void *) count, (void *) 0, (void *) 0);
|
||
|
}
|