diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-12-03 05:22:21 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-12-03 05:22:21 +0100 |
commit | f3842de5fd405859f0a2de9a6f9fed0311c4629c (patch) | |
tree | 54296a0438016951e0acafddfeabfaa6c513202e /sys/src/ape | |
parent | 3b91c0fcc556960f767b70b59d5eb8f5e7ac00fa (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.s | 14 | ||||
-rw-r--r-- | sys/src/ape/lib/ap/68020/main9.s | 14 | ||||
-rw-r--r-- | sys/src/ape/lib/ap/alpha/main9.s | 15 | ||||
-rw-r--r-- | sys/src/ape/lib/ap/arm/main9.s | 17 | ||||
-rw-r--r-- | sys/src/ape/lib/ap/mips/main9.s | 24 | ||||
-rw-r--r-- | sys/src/ape/lib/ap/plan9/getpid.c | 17 | ||||
-rw-r--r-- | sys/src/ape/lib/ap/power/main9.s | 17 | ||||
-rw-r--r-- | sys/src/ape/lib/ap/sparc/main9.s | 23 |
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 |