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