shithub: scc

Download patch

ref: 1de991f3053e77706b920dc579c4affffd2d68f0
parent: 0c1934dabb9e1f81b8c7c2099f138e17dc772aca
author: zerous Naveen Narayanan <zerous@simple-cc.org>
date: Mon Apr 20 17:33:54 EDT 2020

libc: Implement the following syscalls for ppc32

Exit
read
write
open
close
waitpid
creat
link
unlink
getpid

--- a/src/libc/arch/ppc32/linux/Makefile
+++ b/src/libc/arch/ppc32/linux/Makefile
@@ -3,12 +3,23 @@
 include $(PROJECTDIR)/scripts/rules.mk
 include ../../../rules.mk
 
-GENOBJS =
+GENOBJS =\
+	_Exit.$O\
+	_read.$O\
+	_write.$O\
+	_open.$O\
+	_close.$O\
+	_waitpid.$O\
+	_create.$O\
+	_link.$O\
+	_unlink.$O\
+	_getpid.$O\
 
 GENSRC = $(GENOBJS:.$O=.s)
 
 OBJS  = \
 	$(GENOBJS)\
+	_cerrno.$O\
 
 # Rules
 
--- /dev/null
+++ b/src/libc/arch/ppc32/linux/_cerrno.s
@@ -1,0 +1,12 @@
+	.file	"_cerrno.s"
+	.globl	_cerrno
+_cerrno:
+	cmpwi	0,0
+	bne	err
+	blr
+err:
+	lis	0,errno@h
+	ori	0,0,errno@l
+	stw	3,0(0)
+	addi	3,3,-1
+	blr
--- /dev/null
+++ b/src/libc/arch/ppc32/linux/gensys.sh
@@ -1,0 +1,17 @@
+#!/bin/sh
+
+awk '! /^#/ && $2 == "'$1'" {
+	syscall=$2
+	fname=$2".s"
+
+	printf ("\t.file\t"	\
+	       "\"%s\"\n"	\
+	       "\t.globl\t%s\n"	\
+	       "%s:\n",
+	       fname, syscall, syscall)
+
+	printf ("\tli\t0,%d\n"	\
+	       "\tsc\n"		\
+	       "\tmfcr\t0\n"	\
+	       "\tb\t_cerrno\n", $1)
+} ' syscall.lst >$1.s
--- /dev/null
+++ b/src/libc/arch/ppc32/linux/syscall.lst
@@ -1,0 +1,11 @@
+#number	name
+1	_Exit
+3	_read
+4	_write
+5	_open
+6	_close
+7	_waitpid
+8	_creat
+9	_link
+10	_unlink
+20	_getpid