System Calls 
============

Syscall handlers are prefixed by 'sys_'. Syscalls can be called using int 0x80.
Arguments are passed in registers like this:
* EAX - Syscall number
* EBX - Argument 0
* ECX - Argument 1
* EDX - Argument 2

If the syscall returns, the return value will be in EAX.

Syscall Table (TODO: Update this)
-------------
| NR | SYSC NAME | RETURN (EAX) | ARG0 (EBX) | ARG1 (ECX) | ARG2 (EDX) |
| 00 | reserved  |       -      |      -     |      -     |      -     |
| 01 | sleep     |       -      | uint ms    |      -     |      -     |
| 02 | read      | int count    | int fd     | char* buf  | uint count |
| 03 | write     | int count    | int fd     | char* buf  | uint count |
| 04 | open      | int fd       | char* path | int oflag  |      -     |
| 05 | close     | int status   | int fd     |      -     |      -     |
| 06 | malloc    | void* buf    | int count  |      -     |      -     |
| 07 | free      |       -      | void* buf  |      -     |      -     |
| 08 | seek      | #TBD         |            |            |            |

