summaryrefslogtreecommitdiff
path: root/sys/src/ape
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2012-12-03 05:22:21 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2012-12-03 05:22:21 +0100
commitf3842de5fd405859f0a2de9a6f9fed0311c4629c (patch)
tree54296a0438016951e0acafddfeabfaa6c513202e /sys/src/ape
parent3b91c0fcc556960f767b70b59d5eb8f5e7ac00fa (diff)
ape: initialize _tos and use _tos->pid for getpid()
Diffstat (limited to 'sys/src/ape')
-rw-r--r--sys/src/ape/lib/ap/386/main9.s14
-rw-r--r--sys/src/ape/lib/ap/68020/main9.s14
-rw-r--r--sys/src/ape/lib/ap/alpha/main9.s15
-rw-r--r--sys/src/ape/lib/ap/arm/main9.s17
-rw-r--r--sys/src/ape/lib/ap/mips/main9.s24
-rw-r--r--sys/src/ape/lib/ap/plan9/getpid.c17
-rw-r--r--sys/src/ape/lib/ap/power/main9.s17
-rw-r--r--sys/src/ape/lib/ap/sparc/main9.s23
8 files changed, 122 insertions, 19 deletions
diff --git a/sys/src/ape/lib/ap/386/main9.s b/sys/src/ape/lib/ap/386/main9.s
index aef0777a4..04ee73dd1 100644
--- 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
diff --git a/sys/src/ape/lib/ap/68020/main9.s b/sys/src/ape/lib/ap/68020/main9.s
index 04e40c5e6..715331ff4 100644
--- 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)
diff --git a/sys/src/ape/lib/ap/alpha/main9.s b/sys/src/ape/lib/ap/alpha/main9.s
index 43bdd7bd6..d92ac3d89 100644
--- 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
diff --git a/sys/src/ape/lib/ap/arm/main9.s b/sys/src/ape/lib/ap/arm/main9.s
index cd04bea17..9913ea59d 100644
--- a/sys/src/ape/lib/ap/arm/main9.s
+++ b/sys/src/ape/lib/ap/arm/main9.s
@@ -2,8 +2,23 @@ arg=0
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))
diff --git a/sys/src/ape/lib/ap/mips/main9.s b/sys/src/ape/lib/ap/mips/main9.s
index a3c224ace..03db87a98 100644
--- 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
diff --git a/sys/src/ape/lib/ap/plan9/getpid.c b/sys/src/ape/lib/ap/plan9/getpid.c
index 66eaaae8d..17a724648 100644
--- 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;
}
diff --git a/sys/src/ape/lib/ap/power/main9.s b/sys/src/ape/lib/ap/power/main9.s
index ee493f5a8..8323e463e 100644
--- 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)
diff --git a/sys/src/ape/lib/ap/sparc/main9.s b/sys/src/ape/lib/ap/sparc/main9.s
index 24a9f6f53..1284fb267 100644
--- 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