--- /dev/null
+#define __ASSEMBLY_SOURCE
+
+#include <corax/syscall.h>
+
+.global socket
+socket:
+ pushl %ebx
+
+ movl $SYS_SOCKET, %eax
+ movl 8(%esp), %ebx
+ movl 12(%esp), %ecx
+ movl 16(%esp), %edx
+ int $SYSCALL_CXNET
+
+ popl %ebx
+ ret
+
+.global close
+close:
+ pushl %ebx
+
+ movl $SYS_CLOSE, %eax
+ movl 8(%esp), %ebx
+ int $SYSCALL_CXNET
+
+ popl %ebx
+ ret
+
+.global sendto
+sendto:
+ /*
+ * sendto() and recvfrom() have 6 arguments, so we also have
+ * to preserve the ebp register in order to repurpose it
+ */
+ pushl %ebx
+ pushl %ebp
+
+ movl $SYS_SENDTO, %eax
+ movl 12(%esp), %ebx
+ movl 16(%esp), %ecx
+ movl 20(%esp), %edx
+ movl 24(%esp), %esi
+ movl 28(%esp), %edi
+ movl 32(%esp), %ebp
+ int $SYSCALL_CXNET
+
+ popl %ebp
+ popl %ebx
+ ret
+
+.global recvfrom
+recvfrom:
+ pushl %ebx
+ pushl %ebp
+
+ movl $SYS_RECVFROM, %eax
+ movl 12(%esp), %ebx
+ movl 16(%esp), %ecx
+ movl 20(%esp), %edx
+ movl 24(%esp), %esi
+ movl 28(%esp), %edi
+ movl 32(%esp), %ebp
+ int $SYSCALL_CXNET
+
+ popl %ebp
+ popl %ebx
+ ret
+
+.global connect
+connect:
+ pushl %ebx
+
+ movl $SYS_CONNECT, %eax
+ movl 8(%esp), %ebx
+ movl 12(%esp), %ecx
+ movl 16(%esp), %edx
+ int $SYSCALL_CXNET
+
+ popl %ebx
+ ret
+
+.global listen
+listen:
+ pushl %ebx
+
+ movl $SYS_LISTEN, %eax
+ movl 8(%esp), %ebx
+ movl 12(%esp), %ecx
+ int $SYSCALL_CXNET
+
+ popl %ebx
+ ret
+
+.global accept
+accept:
+ pushl %ebx
+
+ movl $SYS_ACCEPT, %eax
+ movl 8(%esp), %ebx
+ movl 12(%esp), %ecx
+ movl 16(%esp), %edx
+ int $SYSCALL_CXNET
+
+ popl %ebx
+ ret
+
+.global setsockopt
+setsockopt:
+ pushl %ebx
+
+ movl $SYS_SETSOCKOPT, %eax
+ movl 8(%esp), %ebx
+ movl 12(%esp), %ecx
+ movl 16(%esp), %edx
+ movl 20(%esp), %esi
+ movl 24(%esp), %edi
+ int $SYSCALL_CXNET
+
+ popl %ebx
+ ret
+
+.global getsockopt
+getsockopt:
+ pushl %ebx
+
+ movl $SYS_GETSOCKOPT, %eax
+ movl 8(%esp), %ebx
+ movl 12(%esp), %ecx
+ movl 16(%esp), %edx
+ movl 20(%esp), %esi
+ movl 24(%esp), %edi
+ int $SYSCALL_CXNET
+
+ popl %ebx
+ ret
+
+.global shutdown
+shutdown:
+ pushl %ebx
+
+ movl $SYS_SHUTDOWN, %eax
+ movl 8(%esp), %ebx
+ movl 12(%esp), %ecx
+ int $SYSCALL_CXNET
+
+ popl %ebx
+ ret
+
+.global select
+select:
+ pushl %ebx
+
+ movl $SYS_SELECT, %eax
+ movl 8(%esp), %ebx
+ movl 12(%esp), %ecx
+ movl 16(%esp), %edx
+ movl 20(%esp), %esi
+ movl 24(%esp), %edi
+ int $SYSCALL_CXNET
+
+ popl %ebx
+ ret
+
+.global poll
+poll:
+ pushl %ebx
+
+ movl $SYS_POLL, %eax
+ movl 8(%esp), %ebx
+ movl 12(%esp), %ecx
+ movl 16(%esp), %edx
+ int $SYSCALL_CXNET
+
+ popl %ebx
+ ret
+
+.global bind
+bind:
+ pushl %ebx
+
+ movl $SYS_BIND, %eax
+ movl 8(%esp), %ebx
+ movl 12(%esp), %ecx
+ movl 16(%esp), %edx
+ int $SYSCALL_CXNET
+
+ popl %ebx
+ ret