commit e8e9a686078131d6daf0168af15352c2c6a9f219
parent cc91dc2eb3036c06b19a4388b44302b84fc94787
Author: zerous Naveen Narayanan <zerous@nocebo.space>
Date: Sat, 16 Nov 2019 13:43:50 +0100
Add _cerrno.s, _getheap.c, raise.c & signal.c for i386/linux
Diffstat:
6 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/src/libc/arch/i386/linux/Makefile b/src/libc/arch/i386/linux/Makefile
@@ -15,8 +15,12 @@ OBJS =\
_getpid.o\
_Exit.o\
_kill.o\
+ _getheap.o\
crt.o\
signal.o\
+ raise.o\
+ _cerrno.o\
+ signal.o
all: syscall
$(MAKE) objs
@@ -25,10 +29,14 @@ objs: $(OBJS)
crt.o: ../crt-posix.s
+raise.o: ../../posix/raise.c
+
+signal.o: ../../posix/signal.c
+
syscall: syscall.lst
gensys.sh syscall.lst
touch syscall
clean:
- rm -f `awk '/[0-9]* _/ {print $$2".s"}' syscall.lst`
+ rm -f `awk '/[0-9]*\t/{print $$2".s"}' syscall.lst`
rm -f syscall _sys_errlist.c
diff --git a/src/libc/arch/i386/linux/_cerrno.s b/src/libc/arch/i386/linux/_cerrno.s
@@ -0,0 +1,12 @@
+ .file "_cerrno.s"
+ .globl _cerrno
+
+_cerrno:
+ cmpl $0,%eax
+ js 1f
+ ret
+
+1: neg %eax
+ mov %eax,(errno)
+ mov $-1,%eax
+ ret
diff --git a/src/libc/arch/i386/linux/_getheap.c b/src/libc/arch/i386/linux/_getheap.c
@@ -0,0 +1 @@
+#include "../../posix/_getheap.c"
diff --git a/src/libc/arch/i386/linux/gensys.sh b/src/libc/arch/i386/linux/gensys.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-awk '
-NR > 1 {syscall=$2
+awk '/^[0-9]*\t/ {
+ syscall=$2
fname=$2".s"
noper=$3
diff --git a/src/libc/arch/i386/linux/raise.c b/src/libc/arch/i386/linux/raise.c
@@ -0,0 +1 @@
+#include "../../posix/raise.c"
diff --git a/src/libc/arch/i386/linux/signal.c b/src/libc/arch/i386/linux/signal.c
@@ -0,0 +1 @@
+#include "../../posix/signal.c"