summaryrefslogtreecommitdiff
path: root/sys/src/ape/lib/ap/amd64/main9p.s
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2016-05-04 00:23:48 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2016-05-04 00:23:48 +0200
commit14685d65958bed4d68b9c60564fa8d09aa746462 (patch)
treef2480af19061f27c67a36a2bb8fd7f41d047732a /sys/src/ape/lib/ap/amd64/main9p.s
parent7657312dcf5b9435ff848b20dfc3a0546ab8a500 (diff)
ape: return plan9 error strings from strerror()
when _syserrno() fails to map a plan9 error string to a unix error number, we copy the plan9 error string to the per process error buffer "plan9err" and set errno = EPLAN9. when strerror() is called with EPLAN9, it returns a pointer to the plan9err buffer.
Diffstat (limited to 'sys/src/ape/lib/ap/amd64/main9p.s')
-rw-r--r--sys/src/ape/lib/ap/amd64/main9p.s11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/src/ape/lib/ap/amd64/main9p.s b/sys/src/ape/lib/ap/amd64/main9p.s
index fc4afe701..54935c1da 100644
--- a/sys/src/ape/lib/ap/amd64/main9p.s
+++ b/sys/src/ape/lib/ap/amd64/main9p.s
@@ -1,14 +1,21 @@
#define NPRIVATES 16
GLOBL _tos(SB), $8
+GLOBL _errnoloc(SB), $8
+GLOBL _plan9err(SB), $8
GLOBL _privates(SB), $8
GLOBL _nprivates(SB), $8
-TEXT _mainp(SB), 1, $(3*8+NPRIVATES*8)
+TEXT _mainp(SB), 1, $(24+8+128+NPRIVATES*8)
/* _tos = arg */
MOVQ AX, _tos(SB)
- LEAQ 8(SP), AX
+
+ LEAQ 24(SP), AX
+ MOVQ AX, _errnoloc(SB)
+ ADDQ $8, AX
+ MOVQ AX, _plan9err(SB)
+ ADDQ $128, AX
MOVQ AX, _privates(SB)
MOVQ $NPRIVATES, _nprivates(SB)