Index: /branches/ia32/lisp-kernel/x86-macros.s
===================================================================
--- /branches/ia32/lisp-kernel/x86-macros.s	(revision 8251)
+++ /branches/ia32/lisp-kernel/x86-macros.s	(revision 8252)
@@ -237,16 +237,16 @@
 	movd %rcontext:tcr.catch_top,%mm0
 	movd %rcontext:tcr.db_link,%mm1
-	movq %arg_z,catch_frame.catch_tag(%imm0)
+	movl %arg_z,catch_frame.catch_tag(%imm0)
 	movd %mm0,catch_frame.link(%imm0)
-	movq [$]$1,catch_frame.mvflag(%imm0)
+	movl [$]$1,catch_frame.mvflag(%imm0)
 	movd %rcontext:tcr.xframe,%mm0
-	movq %esp,catch_frame.esp(%imm0)
-	movq %ebp,catch_frame.ebp(%imm0)
+	movl %esp,catch_frame.esp(%imm0)
+	movl %ebp,catch_frame.ebp(%imm0)
         movd %rcontext:tcr.foreign_sp,%stack_temp
 	movd %mm1,catch_frame.db_link(%imm0)
-	movd %imm0,catch_frame.xframe(%imm0)
+	movl %imm0,catch_frame.xframe(%imm0)
 	movd %stack_temp,catch_frame.foreign_sp(%imm0)
 	movl %xfn,catch_frame.pc(%imm0)
-	movd %imm0,%rcontext:tcr.catch_top
+	movl %imm0,%rcontext:tcr.catch_top
 ])],[
 define([Make_Catch],[
@@ -573,13 +573,23 @@
 ])
 
+ifdef([X8632],[
 define([extract_typecode],[
 	new_macro_labels()
 	mov $1,$2
+	andl $tagmask,$2
+	cmpb $tag_misc,$2_b
+	jne macro_label(done)
+	movb misc_subtag_offset($1),$2_b
+macro_label(done):
+])],[
+define([extract_typecode],[
+	new_macro_labels()
+	movzbl $1_b,$2_l
 	andb $tagmask,$2_b
 	cmpb $tag_misc,$2_b
 	jne macro_label(done)
 	movb misc_subtag_offset($1),$2_b
-macro_label(done):	
-])
+macro_label(done):
+])])
 
 /* dnode_align(src,delta,dest)  */
