Alpha setjmp() fix: save/restore the saved FP registers

diff --git a/include/arch/alpha/klibc/archsetjmp.h b/include/arch/alpha/klibc/archsetjmp.h
index d2ef14a..9dc570a 100644
--- a/include/arch/alpha/klibc/archsetjmp.h
+++ b/include/arch/alpha/klibc/archsetjmp.h
@@ -16,6 +16,15 @@
   unsigned long __ra;
   unsigned long __gp;
   unsigned long __sp;
+  
+  unsigned long __f2;
+  unsigned long __f3;
+  unsigned long __f4;
+  unsigned long __f5;
+  unsigned long __f6;
+  unsigned long __f7;
+  unsigned long __f8;
+  unsigned long __f9;
 };
 
 /* Must be an array so it will decay to a pointer when a function is called */
diff --git a/klibc/arch/alpha/include/klibc/archsetjmp.h b/klibc/arch/alpha/include/klibc/archsetjmp.h
index d2ef14a..9dc570a 100644
--- a/klibc/arch/alpha/include/klibc/archsetjmp.h
+++ b/klibc/arch/alpha/include/klibc/archsetjmp.h
@@ -16,6 +16,15 @@
   unsigned long __ra;
   unsigned long __gp;
   unsigned long __sp;
+  
+  unsigned long __f2;
+  unsigned long __f3;
+  unsigned long __f4;
+  unsigned long __f5;
+  unsigned long __f6;
+  unsigned long __f7;
+  unsigned long __f8;
+  unsigned long __f9;
 };
 
 /* Must be an array so it will decay to a pointer when a function is called */
diff --git a/klibc/arch/alpha/setjmp.S b/klibc/arch/alpha/setjmp.S
index 2d8dfe6..e1ad642 100644
--- a/klibc/arch/alpha/setjmp.S
+++ b/klibc/arch/alpha/setjmp.S
@@ -20,17 +20,25 @@
 	.ent	setjmp, 0
 	.globl	setjmp
 setjmp:
-	lda	v0,  0(zero)
-	stq	s0,  0(a0)
-	stq	s1,  8(a0)
-	stq	s2, 16(a0)
-	stq	s3, 24(a0)
-	stq	s4, 32(a0)
-	stq	s5, 40(a0)
-	stq	fp, 48(a0)
-	stq	ra, 56(a0)
-	stq	gp, 64(a0)
-	stq	sp, 72(a0)
+	lda	v0,   0(zero)
+	stq	s0,   0(a0)
+	stq	s1,   8(a0)
+	stq	s2,  16(a0)
+	stq	s3,  24(a0)
+	stq	s4,  32(a0)
+	stq	s5,  40(a0)
+	stq	fp,  48(a0)
+	stq	ra,  56(a0)
+	stq	gp,  64(a0)
+	stq	sp,  72(a0)
+	stt	f2,  80(a0)
+	stt	f3,  88(a0)
+	stt	f4,  96(a0)
+	stt	f5, 104(a0)
+	stt	f6, 112(a0)
+	stt	f7, 120(a0)
+	stt	f8, 128(a0)
+	stt	f9, 136(a0)
 	ret	zero,(ra),1
 
 	.size setjmp,.-setjmp
@@ -41,16 +49,24 @@
 	.globl	longjmp
 longjmp:
 	mov	a1, v0
-	ldq	s0,  0(a0)
-	ldq	s1,  8(a0)
-	ldq	s2, 16(a0)
-	ldq	s3, 24(a0)
-	ldq	s4, 32(a0)
-	ldq	s5, 40(a0)
-	ldq	fp, 48(a0)
-	ldq	ra, 56(a0)
-	ldq	gp, 64(a0)
-	ldq	sp, 72(a0)
+	ldq	s0,   0(a0)
+	ldq	s1,   8(a0)
+	ldq	s2,  16(a0)
+	ldq	s3,  24(a0)
+	ldq	s4,  32(a0)
+	ldq	s5,  40(a0)
+	ldq	fp,  48(a0)
+	ldq	ra,  56(a0)
+	ldq	gp,  64(a0)
+	ldq	sp,  72(a0)
+	ldt	f2,  80(a0)
+	ldt	f3,  88(a0)
+	ldt	f4,  96(a0)
+	ldt	f5, 104(a0)
+	ldt	f6, 112(a0)
+	ldt	f7, 120(a0)
+	ldt	f8, 128(a0)
+	ldt	f9, 136(a0)
 	/* We're bound to get a mispredict here, but at least give us
 	   a chance to get the return stack back in sync... */
 	ret	zero,(ra),1