ref: 117b1e300a41e48ec4ff13b8f0de27d5ac1c69ee
parent: aa2f5f17f52ef838a2352b5eb92bf6b4ebd48815
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Mon Dec 3 00:22:21 EST 2012
ape: initialize _tos and use _tos->pid for getpid()
--- a/sys/src/ape/lib/ap/386/main9.s
+++ b/sys/src/ape/lib/ap/386/main9.s
@@ -1,4 +1,16 @@
- TEXT _main(SB), 1, $12
+#define NPRIVATES 16
+
+GLOBL _tos(SB), $4
+GLOBL _privates(SB), $4
+GLOBL _nprivates(SB), $4
+
+TEXT _main(SB), 1, $(3*4+NPRIVATES*4)
+
+ /* _tos = arg */
+ MOVL AX, _tos(SB)
+ LEAL 8(SP), AX
+ MOVL AX, _privates(SB)
+ MOVL $NPRIVATES, _nprivates(SB)
CALL _envsetup(SB)
MOVL inargc-4(FP), AX
--- a/sys/src/ape/lib/ap/68020/main9.s
+++ b/sys/src/ape/lib/ap/68020/main9.s
@@ -1,5 +1,17 @@
-TEXT _main(SB), 1, $16
+#define NPRIVATES 16
+
+GLOBL _tos(SB), $4
+GLOBL _privates(SB), $4
+GLOBL _nprivates(SB), $4
+
+TEXT _main(SB), 1, $(3*4+NPRIVATES*4)
MOVL $a6base(SB), A6
+
+ /* _tos = arg */
+ MOVL R0, _tos(SB) /* return value of sys exec!! */
+ LEA private+8(SP), _privates(SB)
+ MOVL $NPRIVATES, _nprivates(SB)
+
PEA inargv+0(FP)
MOVL inargc-4(FP), TOS
BSR _envsetup(SB)
--- a/sys/src/ape/lib/ap/alpha/main9.s
+++ b/sys/src/ape/lib/ap/alpha/main9.s
@@ -1,6 +1,19 @@
-TEXT _main(SB), 1, $16
+#define NPRIVATES 16
+GLOBL _tos(SB), $4
+GLOBL _privates(SB), $4
+GLOBL _nprivates(SB), $4
+
+TEXT _main(SB), 1, $(3*4+NPRIVATES*4)
MOVQ $setSB(SB), R29
+
+ /* _tos = arg */
+ MOVL R0, _tos(SB)
+ MOVQ $8(SP), R1
+ MOVL R1, _privates(SB)
+ MOVQ $NPRIVATES, R1
+ MOVL R1, _nprivates(SB)
+
JSR _envsetup(SB)
MOVL inargc-8(FP), R0
MOVL $inargv-4(FP), R1
--- a/sys/src/ape/lib/ap/arm/main9.s
+++ b/sys/src/ape/lib/ap/arm/main9.s
@@ -2,8 +2,23 @@
sp=13
sb=12
-TEXT _main(SB), 1, $16
+#define NPRIVATES 16
+
+GLOBL _tos(SB), $4
+GLOBL _privates(SB), $4
+GLOBL _nprivates(SB), $4
+
+TEXT _main(SB), 1, $(3*4+NPRIVATES*4)
+
MOVW $setR12(SB), R(sb)
+
+ /* _tos = arg */
+ MOVW R(arg), _tos(SB)
+ MOVW $private+8(SP), R1
+ MOVW R1, _privates(SB)
+ MOVW $NPRIVATES, R1
+ MOVW R1, _nprivates(SB)
+
BL _envsetup(SB)
MOVW $inargv+0(FP), R(arg)
MOVW R(arg), 8(R(sp))
--- a/sys/src/ape/lib/ap/mips/main9.s
+++ b/sys/src/ape/lib/ap/mips/main9.s
@@ -1,5 +1,27 @@
- TEXT _main(SB), $16
+#define NPRIVATES 16
+
+GLOBL _tos(SB), $4
+GLOBL _privates(SB), $4
+GLOBL _nprivates(SB), $4
+
+TEXT _main(SB), 1, $(3*4+NPRIVATES*4)
MOVW $setR30(SB), R30
+
+ /* _tos = arg */
+ MOVW R1, _tos(SB)
+/*
+ MOVW $0,FCR31
+ NOR R0,R0
+ MOVD $0.5, F26
+ SUBD F26, F26, F24
+ ADDD F26, F26, F28
+ ADDD F28, F28, F30
+*/
+ MOVW $8(SP), R1
+ MOVW R1, _privates(SB)
+ MOVW $NPRIVATES, R1
+ MOVW R1, _nprivates(SB)
+
JAL _envsetup(SB)
MOVW inargc-4(FP), R1
MOVW $inargv+0(FP), R2
--- a/sys/src/ape/lib/ap/plan9/getpid.c
+++ b/sys/src/ape/lib/ap/plan9/getpid.c
@@ -5,18 +5,13 @@
#include <errno.h>
#include "sys9.h"
+typedef long long vlong;
+typedef unsigned long ulong;
+typedef unsigned long long uvlong;
+#include "/sys/include/tos.h"
+
pid_t
getpid(void)
{- int n, f;
- char pidbuf[15];
-
- f = _OPEN("#c/pid", 0);- n = _READ(f, pidbuf, sizeof pidbuf);
- if(n < 0)
- _syserrno();
- else
- n = atoi(pidbuf);
- _CLOSE(f);
- return n;
+ return _tos->pid;
}
--- a/sys/src/ape/lib/ap/power/main9.s
+++ b/sys/src/ape/lib/ap/power/main9.s
@@ -1,8 +1,21 @@
-TEXT _main(SB), 1, $16
+#define NPRIVATES 16
+GLOBL _tos(SB), $4
+GLOBL _privates(SB), $4
+GLOBL _nprivates(SB), $4
+
+TEXT _main(SB), 1, $(3*4+NPRIVATES*4)
+
MOVW $setSB(SB), R2
- BL _envsetup(SB)
+ /* _tos = arg */
+ MOVW R3, _tos(SB)
+ MOVW $8(SP), R1
+ MOVW R1, _privates(SB)
+ MOVW $NPRIVATES, R1
+ MOVW R1, _nprivates(SB)
+
+ BL _envsetup(SB)
MOVW inargc-4(FP), R3
MOVW $inargv+0(FP), R4
MOVW R3, 4(R1)
--- a/sys/src/ape/lib/ap/sparc/main9.s
+++ b/sys/src/ape/lib/ap/sparc/main9.s
@@ -1,5 +1,26 @@
- TEXT _main(SB), $16
+#define NPRIVATES 16
+
+GLOBL _tos(SB), $4
+GLOBL _privates(SB), $4
+GLOBL _nprivates(SB), $4
+
+TEXT _main(SB), 1, $(3*4+NPRIVATES*4)
MOVW $setSB(SB), R2
+
+ /* _tos = arg */
+ MOVW R7, _tos(SB)
+/*
+ MOVW _fpsr+0(SB), FSR
+ FMOVD $0.5, F26
+ FSUBD F26, F26, F24
+ FADDD F26, F26, F28
+ FADDD F28, F28, F30
+*/
+ MOVW $8(SP), R1
+ MOVW R1, _privates(SB)
+ MOVW $NPRIVATES, R1
+ MOVW R1, _nprivates(SB)
+
JMPL _envsetup(SB)
MOVW inargc-4(FP), R7
MOVW $inargv+0(FP), R8
--
⑨