30 lines
550 B
C
30 lines
550 B
C
#pragma once
|
|
|
|
// 3 because 3 arguments to the call, get it??
|
|
static inline long syscall3(long n, long a, long b, long c) {
|
|
long ret;
|
|
|
|
__asm__ volatile (
|
|
"int $0x80"
|
|
: "=a"(ret)
|
|
: "a"(n), "D"(a), "S"(b), "d"(c)
|
|
: "memory"
|
|
);
|
|
|
|
return ret;
|
|
}
|
|
|
|
static inline void write(int fd, const char* buf, long len) {
|
|
syscall3(1, fd, (long)buf, len);
|
|
}
|
|
|
|
static inline void exit(int code) {
|
|
__asm__ volatile (
|
|
"int $0x80"
|
|
:
|
|
: "a"(60), "D"(code)
|
|
: "memory"
|
|
);
|
|
|
|
for (;;);
|
|
} |