Index: /trunk/source/lisp-kernel/arm-constants.h
===================================================================
--- /trunk/source/lisp-kernel/arm-constants.h	(revision 14970)
+++ /trunk/source/lisp-kernel/arm-constants.h	(revision 14971)
@@ -41,9 +41,4 @@
 #define allocbase temp0         /* while consing */
 
-/* Non-volatile pseudo node regs kept in s28-s31 */
-#define save0 28
-#define save1 29
-#define save2 30
-#define save3 31
 
 #define nbits_in_word 32
Index: /trunk/source/lisp-kernel/arm-constants.s
===================================================================
--- /trunk/source/lisp-kernel/arm-constants.s	(revision 14970)
+++ /trunk/source/lisp-kernel/arm-constants.s	(revision 14971)
@@ -65,11 +65,4 @@
 define(`pc',`r15')
 
-/* We can keep node values in some single-float registers.  By definition,
-   those registers aren't general-purpose, but copying between them and
-   GPRs may be faster than using the stack would be. */
-define(`save0',`s28')
-define(`save1',`s29')
-define(`save2',`s30')
-define(`save3',`s31')
                                                 
 nargregs = 3
@@ -329,5 +322,4 @@
          _node(last_lisp_frame) /* from TCR */
          _node(code_vector)     /* of fn in lisp_frame, or 0 */
-         _field(nvrs,4*node_size)
 	_endstructf
 
Index: /trunk/source/lisp-kernel/arm-gc.c
===================================================================
--- /trunk/source/lisp-kernel/arm-gc.c	(revision 14970)
+++ /trunk/source/lisp-kernel/arm-gc.c	(revision 14971)
@@ -1073,18 +1073,4 @@
     mark_root((regs[r]));
   }
-#ifdef LINUX
-  {
-    LispObj *vfp_info = (LispObj *)find_vfp_info(xp);
-    int nvr;
-
-    if (vfp_info == NULL) {
-      Bug(NULL, "No VFP info in exception context!");
-    }
-    
-    for (nvr = save0;nvr <= save3;nvr++) {
-      mark_root(vfp_info[nvr]);
-    }
-  }
-#endif
 
 
@@ -1368,14 +1354,4 @@
   }
 
-#ifdef LINUX
-  {
-    void *find_vfp_info(ExceptionInformation *);
-    LispObj* nvrs = (LispObj *)find_vfp_info(xp);
-
-    for (r=save0;r<=save3;r++) {
-      update_noderef(&nvrs[r]);
-    }
-  }
-#endif
 
   update_locref((LispObj*) (&(xpPC(xp))));
Index: /trunk/source/lisp-kernel/arm-macros.s
===================================================================
--- /trunk/source/lisp-kernel/arm-macros.s	(revision 14970)
+++ /trunk/source/lisp-kernel/arm-macros.s	(revision 14971)
@@ -340,10 +340,11 @@
 ')
 
-/* Save the lisp non-volatile FPRs. */
+/* Save the lisp non-volatile FPRs. These are exactly the same as the foreign
+   FPRs. */
 define(`push_lisp_fprs',`
-        __(movc16(imm0,make_header(6,subtag_double_float_vector)))
+        __(movc16(imm0,make_header(8,subtag_double_float_vector)))
         __(mov imm1,#0)
         __(fmdrr d7,imm0,imm1)
-        __(fstmfdd sp!,{d7-d13})
+        __(fstmfdd sp!,{d7-d15})
 ')
         
@@ -357,12 +358,12 @@
 /* Pop the lisp non-volatile FPRs */        
 define(`pop_lisp_fprs',`
-        __(fldmfdd sp!,{d7-d13})
-')
-
-/* Reload the non-volatile lisp FPRs (d8-d13) from the stack-consed vector
+        __(fldmfdd sp!,{d7-d15})
+')
+
+/* Reload the non-volatile lisp FPRs (d8-d15) from the stack-consed vector
    on top of the stack, leaving the vector in place.  d7 winds up with
    a denormalized float in it, if anything cares. */
 define(`restore_lisp_fprs',`
-        __(fldmfdd $1,{d7-d13})
+        __(fldmfdd $1,{d7-d15})
 ')                
 
@@ -370,5 +371,5 @@
    FPRs. */
 define(`discard_lisp_fprs',`
-        __(add sp,sp,#7*8)
+        __(add sp,sp,#9*8)
 ')                        
         
@@ -393,6 +394,4 @@
         __(add imm0,sp,#fulltag_misc)
         __(str imm0,[rcontext,#tcr.catch_top])
-        __(add imm0,imm0,#catch_frame.nvrs)
-        __(fstmias imm0,{save0-save3})
         __(add lr,lr,#4)
 ')	
Index: /trunk/source/lisp-kernel/arm-spentry.s
===================================================================
--- /trunk/source/lisp-kernel/arm-spentry.s	(revision 14970)
+++ /trunk/source/lisp-kernel/arm-spentry.s	(revision 14971)
@@ -2349,5 +2349,5 @@
 _spentry(progvrestore)
         __(skip_stack_vector(imm0,imm1,sp))
-        __(ldr imm0,[imm0,#lisp_frame.size+(7*8)+node_size]) /* 7*8 = size of saved FPR vector, with header */
+        __(ldr imm0,[imm0,#lisp_frame.size+(9*8)+node_size]) /* 7*8 = size of saved FPR vector, with header */
         __(cmp imm0,#0)
         __(unbox_fixnum(imm0,imm0))
@@ -2859,5 +2859,4 @@
         __(ldr arg_y,[rcontext,#tcr.last_lisp_frame])
         __(stmdb vsp!,{arg_y,arg_x,temp0,temp1,temp2})
-        __(fstmdbs vsp!,{save0-save3})
         __(str vsp,[rcontext,#tcr.save_vsp])
 /* There's a u32 vector on top of the stack ; its first data word points
@@ -2895,8 +2894,4 @@
         __(mov arg_x,#0)
         __(mov fn,#0)
-        __(fmsr save0,arg_z)
-        __(fcpys save1,save0)
-        __(fcpys save2,save0)
-        __(fcpys save3,save0)
         __(mov allocptr,#VOID_ALLOCPTR)
         __(mov rcontext,temp0)
@@ -2905,5 +2900,4 @@
         __(ldr allocptr,[rcontext,#tcr.save_allocptr])
         __(restore_lisp_frame(temp0))
-        __(fldmias vsp!,{save0-save3})
         __(ldmia vsp!,{arg_y,arg_x,temp0,temp1,temp2})
         __(str arg_y,[rcontext,#tcr.last_lisp_frame])
@@ -3121,8 +3115,4 @@
         __(mov fn,#0)
         __(ldr vsp,[rcontext,#tcr.save_vsp])
-        __(fmsr save0,arg_z)
-        __(fcpys save1,save0)
-        __(fcpys save2,save0)
-        __(fcpys save3,save0)        
         __(mov imm0,#TCR_STATE_LISP)
         __(str imm0,[rcontext,#tcr.valence])
@@ -3999,6 +3989,4 @@
         __(ldr imm0,[temp0,#catch_frame.link])
         __(str imm0,[rcontext,#tcr.catch_top])
-        __(add imm0,sp,#catch_frame.nvrs+fulltag_misc)
-        __(fldmias imm0,{save0-save3})
         __(ldr fn,[sp,#catch_frame.size+lisp_frame.savefn])
         __(ldr lr,[sp,#catch_frame.size+lisp_frame.savelr])
@@ -4040,8 +4028,4 @@
         /* Save our caller's LR and FN in the csp frame created by the unwind-  */
         /* protect.  (Clever, eh ?)  */
-	__(flds save0,[sp,#fulltag_misc+catch_frame.nvrs+(0*node_size)])
-	__(flds save1,[sp,#fulltag_misc+catch_frame.nvrs+(1*node_size)])
-	__(flds save2,[sp,#fulltag_misc+catch_frame.nvrs+(2*node_size)])
-	__(flds save3,[sp,#fulltag_misc+catch_frame.nvrs+(3*node_size)])
         __(add sp,sp,#catch_frame.size)
         /* We used to use a swp instruction to exchange the lr with
@@ -4137,8 +4121,4 @@
         __(str arg_x,[rcontext,#tcr.xframe])
         __(str arg_z,[rcontext,#tcr.last_lisp_frame])
-	__(flds save0,[sp,#fulltag_misc+catch_frame.nvrs+(0*node_size)])
-	__(flds save1,[sp,#fulltag_misc+catch_frame.nvrs+(1*node_size)])
-	__(flds save2,[sp,#fulltag_misc+catch_frame.nvrs+(2*node_size)])
-	__(flds save3,[sp,#fulltag_misc+catch_frame.nvrs+(3*node_size)]) 
         __(add sp,sp,#catch_frame.size)
         __(add imm1,nargs,#node_size)
@@ -4393,8 +4373,4 @@
         __(stmdb sp!,{imm0,imm2})
         __(push_foreign_fprs())
-        __(fmsr save0,arg_z)
-        __(fcpys save1,save0)
-        __(fcpys save2,save0)
-        __(fcpys save3,save0)       
         __(mov imm0,#TCR_STATE_LISP)
         __(str imm0,[rcontext,#tcr.valence])
Index: /trunk/source/lisp-kernel/lisp-debug.c
===================================================================
--- /trunk/source/lisp-kernel/lisp-debug.c	(revision 14970)
+++ /trunk/source/lisp-kernel/lisp-debug.c	(revision 14971)
@@ -792,17 +792,4 @@
       show_lisp_register(xp, "temp1/fname/next_method_context", temp1);
       show_lisp_register(xp, "temp2/nfn", temp2);
-#ifdef LINUX
-      {
-        LispObj *nvrs = (LispObj *)find_vfp_info(xp);
-
-        if (nvrs != NULL) {
-          int r;
-
-          for(r=save0;r<=save3;r++) {
-            fprintf(dbgout,"s%02d (save%d) = %s\n",r,r-save0,print_lisp_object(nvrs[r]));
-          }
-        }
-      }
-#endif
     }
 #endif
@@ -1113,16 +1100,4 @@
 	    b, xpGPR(xp, b));
   }
-#ifdef LINUX
-  {
-    LispObj *nvrs = (LispObj *)find_vfp_info(xp);
-    
-    if (nvrs != NULL) {
-      for(a=save0,b=save2;a<save2;a++,b++) {
-        fprintf(dbgout,"s%02d = 0x%08lX    s%02d = 0x%08lX\n",
-                a, nvrs[a], b, nvrs[b]);
-      }
-    }
-  }
-#endif
 #endif
 
@@ -1230,5 +1205,5 @@
 
 
-    for (dn=0,fn=0;dn<14;dn++) { /* d14/d15 (s28-s31) contain lisp values */
+    for (dn=0,fn=0;dn<16;dn++) {
       fprintf(dbgout, "s%02d = %10e (0x%08x)        s%02d = %10e (0x%08x)\n",fn,fp[fn],up[fn],fn+1,fp[fn+1],up[fn+1]);
       fn+=2;
