Something closer to how I *think* things are supposed to work...
diff --git a/klibc/arch/alpha/syscall.S b/klibc/arch/alpha/syscall.S
index 37c2ae9..ae7e7d2 100644
--- a/klibc/arch/alpha/syscall.S
+++ b/klibc/arch/alpha/syscall.S
@@ -12,10 +12,10 @@
__syscall_common:
callsys
beq a3, 1f
- ldah a1, errno(zero)
+ ldq a1, errno(gp) !literal
lda v0, -1(zero)
- stq a3, errno(a1)
-1:
+ stq a3, 0(a1)
+1:
ret zero,(ra),1
.size __syscall_common,.-__syscall_common
diff --git a/klibc/arch/alpha/sysdual.S b/klibc/arch/alpha/sysdual.S
index 6c9cf51..4a41740 100644
--- a/klibc/arch/alpha/sysdual.S
+++ b/klibc/arch/alpha/sysdual.S
@@ -17,12 +17,12 @@
.globl __syscall_dual1
__syscall_dual1:
callsys
- lda v0, 0(a4)
+ mov v0, a4
beq a3, 1f
- ldah a1, errno(zero)
+ ldq a1, errno(gp) !literal
lda v0, -1(zero)
- stq a3, errno(a1)
-1:
+ stq a3, 0(a1)
+1:
ret zero,(ra),1
.size __syscall_dual1,.-__syscall_dual1