From 706c69d40fcc46e7d7f170dab932d3c7fcc7c34e Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Fri, 13 Feb 2015 22:44:10 +0100 Subject: Begin implementation of syscalls. --- src/lib/include/syscall.h | 6 ++++++ src/lib/libkogata/start.c | 8 ++++---- src/lib/libkogata/syscall.c | 15 +++++++++++++-- 3 files changed, 23 insertions(+), 6 deletions(-) (limited to 'src/lib') diff --git a/src/lib/include/syscall.h b/src/lib/include/syscall.h index d6df4ec..37d7302 100644 --- a/src/lib/include/syscall.h +++ b/src/lib/include/syscall.h @@ -4,9 +4,15 @@ #include #include +#include + #include #include void dbg_print(const char* str); void yield(); +void exit(int code); + +// more todo +/* vim: set ts=4 sw=4 tw=0 noet :*/ diff --git a/src/lib/libkogata/start.c b/src/lib/libkogata/start.c index 030423c..9ba7edf 100644 --- a/src/lib/libkogata/start.c +++ b/src/lib/libkogata/start.c @@ -1,12 +1,12 @@ -#include -#include -#include +#include extern int main(int, char**); void __libkogata_start() { // TODO : setup - main(0, 0); + int ret = main(0, 0); + + exit(ret); } diff --git a/src/lib/libkogata/syscall.c b/src/lib/libkogata/syscall.c index 234b9ff..dc7e648 100644 --- a/src/lib/libkogata/syscall.c +++ b/src/lib/libkogata/syscall.c @@ -1,10 +1,21 @@ #include #include +#include + void dbg_print(const char* str) { - // TODO + + char buf[256]; + strncpy(buf, str, 256); + buf[255] = 0; + + asm volatile("int $0x40"::"a"(SC_DBG_PRINT),"b"(buf)); } void yield() { - // TODO + asm volatile("int $0x40"::"a"(SC_YIELD)); +} + +void exit(int code) { + asm volatile("int $0x40"::"a"(SC_EXIT),"b"(code)); } -- cgit v1.2.3