Index: /branches/arm/lisp-kernel/arm-macros.s
===================================================================
--- /branches/arm/lisp-kernel/arm-macros.s	(revision 13722)
+++ /branches/arm/lisp-kernel/arm-macros.s	(revision 13723)
@@ -331,18 +331,11 @@
 	__(build_lisp_frame(imm0))
         __(movc16(imm0,make_header(catch_frame.element_count,subtag_u32_vector)))
-        __(str imm0,[sp,#-((catch_frame.element_count+1)*node_size)]!)
-        __(mov imm0,#0)
-        __(str imm0,[sp,#catch_frame.catch_tag+fulltag_misc])
-        __(ldr imm0,[rcontext,#tcr.catch_top])
-        __(str imm0,[sp,#catch_frame.link+fulltag_misc])
-        __(ldr imm0,[rcontext,#tcr.db_link])
-        __(str imm0,[sp,#catch_frame.db_link+fulltag_misc])
-        __(ldr imm0,[rcontext,#tcr.xframe])
-        __(str imm0,[sp,#catch_frame.xframe+fulltag_misc])
+	__(ldr imm1,[rcontext,#tcr.catch_top])
+        /* imm2 is mvflag */
+        /* arg_z is tag */
+        __(ldr arg_x,[rcontext,#tcr.db_link])
+        __(ldr temp0,[rcontext,#tcr.xframe])
+        __(stmdb sp!,{imm0,imm1,imm2,arg_z,arg_x,temp0})
         __(add imm0,sp,#fulltag_misc)
-        __(str imm2,[imm0,#catch_frame.mvflag])
-        __(mov imm2,#subtag_catch_frame)
-        __(strb imm2,[imm0,#misc_subtag_offset])
-        __(str arg_z,[imm0,#catch_frame.catch_tag])
         __(str imm0,[rcontext,#tcr.catch_top])
         __(add lr,lr,#4)
