Index: /branches/arm/lisp-kernel/arm-constants.s
===================================================================
--- /branches/arm/lisp-kernel/arm-constants.s	(revision 13678)
+++ /branches/arm/lisp-kernel/arm-constants.s	(revision 13679)
@@ -733,5 +733,22 @@
 	 _node(get_tcr) 		/* address of get_tcr() */
 	_ends
-                
-        
+
+/* extended type codes, for UUOs.  Shouldn't conflict with defined subtags */
+
+xtype_unsigned_byte_24 = 252
+xtype_array2d = 248
+xtype_array3d = 244
+xtype_integer = 4
+xtype_s64 = 8
+xtype_u64 = 12
+xtype_s32 = 16
+xtype_u32 = 20
+xtype_s16 = 24
+xtype_u16 = 28
+xtype_s8 = 32
+xtype_u8 = 36
+xtype_bit = 40                               
+                                               
+                        
+                        
 INTERRUPT_LEVEL_BINDING_INDEX = fixnumone
Index: /branches/arm/lisp-kernel/arm-macros.s
===================================================================
--- /branches/arm/lisp-kernel/arm-macros.s	(revision 13678)
+++ /branches/arm/lisp-kernel/arm-macros.s	(revision 13679)
@@ -20,5 +20,5 @@
 /* dnode_align(dest,src,delta) */
         define(`dnode_align',`
-        __(add $1,[$2,#(dnode_size-1)])
+        __(add $1,$2,#$3+(dnode_size-1))
         __(bic $1,$1,#((1<<dnode_align_bits)-1))
 ')
@@ -80,4 +80,8 @@
 	')
 
+define(`unbox_character',`
+        __(mov $1,$2, lsr #charcode_shift)
+        ')
+                
 define(`loaddf',`
 	__(lfd $1,dfloat.value($2))')
@@ -135,5 +139,5 @@
                 	
 define(`getvheader',`
-	__(ldr($1,vector.header($2)))
+	__(ldr $1,[$2,#vector.header])
 	')
 	
@@ -154,6 +158,6 @@
 	
 define(`ref_global',`
-        __(mov $1,#nil_value)
-	__(ldr $1,[$1,#lisp_globals.$2])
+        __(mov ifelse($3,$3,$1),#nil_value)
+	__(ldr $1,[ifelse($3,$3,$1),#lisp_globals.$2])
 ')
 
@@ -163,4 +167,10 @@
 	__(ldr $1,[$1,#((nrs.$2)+(symbol.vcell))])
 ')
+
+/* This approach may not work if the symbol is too far from nil */        
+define(`ref_nrs_symbol',`
+        __(mov $1,#nil_value)
+        __(add $1,$1,#nrs.$2)
+        ')
 	
 define(`set_nrs_value',`
@@ -253,12 +263,19 @@
 ')
 
+define(`trap_unless_fixnum',`
+        __(test_fixnum($1))
+        __(uuo_error_reg_not_lisptag(ne,$1,tag_fixnum))
+        ')
+                
 define(`trap_unless_fulltag_equal',`
 	__(extract_fulltag($3,$1))
-	__(trnei($3,$2))
+        __(cmp $3,#$2)
+        __(uuo_error_reg_not_fulltag(ne,$1,$2))
 ')
 	
 define(`trap_unless_typecode_equal',`
         __(extract_typecode($3,$1))
-        __(trnei($3,$2))
+        __(cmp $3,#$2)
+        __(uuo_error_reg_not_xtype(ne,$2))
 ')
         
@@ -366,6 +383,5 @@
 
 /* $1 = dest reg */
-/* $2 = header.  (For now, assume that this always encodes length ; */
-/* that may change with "large vector" support.) */
+/* $2 = header.
 /* $3 = register containing size in bytes.  (We're going to subtract */
 /* fulltag_misc from this; do it in the macro body, rather than force the
@@ -374,9 +390,11 @@
 
 define(`Misc_Alloc',`
-	__(la $3,-fulltag_misc($3))
+	__(sub $3,$3,#fulltag_misc)
 	__(sub allocptr,allocptr,$3)
-        __(alloc_trap())
-	__(str($2,misc_header_offset(allocptr)))
-	__(mr $1,allocptr)
+        __(ldr allocbase,[rcontext,#tcr.save_allocbase])
+        __(cmp allocptr,allocbase)
+        __(uuo_alloc_trap(lo))
+	__(str $2,[allocptr,#misc_header_offset])
+	__(mov $1,allocptr)
 	__(clear_alloc_tag())
 ')
@@ -501,14 +519,17 @@
 ')		
 
+define(`check_enabled_pending_interrupt',`
+        __(ldr $1,[rcontext,#tcr.interrupt_pending])
+        __(cmp $1,0)
+        __(uuo_interrupt_now(gt))
+        ')
+        
 define(`check_pending_interrupt',`
 	new_macro_labels()
-        __(ldr(nargs,tcr.tlb_pointer(rcontext)))
-	__(ldr(nargs,INTERRUPT_LEVEL_BINDING_INDEX(nargs)))
-	__(cmpri(ifelse($1,`',`cr0',$1),nargs,0))
-	__(blt ifelse($1,`',`cr0',$1),macro_label(done))
-	__(bgt ifelse($1,`',`cr0',$1),macro_label(trap))
-	__(ldr(nargs,tcr.interrupt_pending(rcontext)))
-macro_label(trap):
-	__(trgti(nargs,0))
+        __(ldr $1,tcr.tlb_pointer(rcontext))
+	__(ldr $1,[$1,$INTERRUPT_LEVEL_BINDING_INDEX])
+        __(cmp $1,#0)
+        __(bge macro_label(done))
+        __(check_enabled_pending_interrupt($1))
 macro_label(done):
 ')
@@ -520,2 +541,32 @@
 	__(uuo_suspend_now(al))
 ')
+
+/* $3 points to a uvector header.  Set $1 to the first dnode-aligned address */
+/* beyond the uvector, using imm regs $1 and $2 as temporaries. */
+define(`skip_stack_vector',`
+        new_macro_labels()
+        __(ldr $1,[$3])
+        __(extract_fulltag($2,$1))        
+        __(cmp $2,#fulltag_immheader)
+        __(extract_lowbyte($2,$1))
+        __(mov $1,$1 lsr #num_subtag_bits)
+        __(moveq $1,$1 lsl #2)
+        __(beq macro_label(bytes))
+        __(cmp $2,#max_32_bit_ivector_subtag)
+        __(movle $1,$1 lsl #2)
+        __(ble macro_label(bytes))
+        __(cmp $2,#max_8_bit_ivector_subtag)
+        __(ble macro_label(bytes))
+        __(cmp $2,#max_16_bit_ivector_subtag)
+        __(movle $1,$1,lsl #1)
+        __(ble macro_label(bytes))
+        __(cmp $2,subtag_double_float_vector)
+        __(moveq $1,$1,lsl #3)
+        __(addeq $1,$1,#4)
+        __(beq macro_label(bytes))
+        __(add $1,$1,#7)
+        __(mov $1,$1,lsr #3)
+macro_label(bytes):     
+        __(add $1,$1,#node_size+(dnode_size-1))
+        __(add $1,$1,$3)
+        ')
Index: /branches/arm/lisp-kernel/arm-spentry.s
===================================================================
--- /branches/arm/lisp-kernel/arm-spentry.s	(revision 13678)
+++ /branches/arm/lisp-kernel/arm-spentry.s	(revision 13679)
@@ -14,21 +14,21 @@
 
 
-	
+
 	include(lisp.s)
 	_beginfile
-        .align 2
-        .arm
-        .syntax unified
-	
+	.align 2
+	.arm
+	.syntax unified
+
 local_label(start):
-        .set sporg,0        
+	.set sporg,0        
 define(`_spentry',`ifdef(`__func_name',`_endfn',`')
-        .org sporg
+	.org sporg
 	_exportfn(_SP$1)
-        .set sporg,sporg+256        
+	.set sporg,sporg+256        
 	.line  __line__
 ')
 
-             
+
 define(`_endsubp',`
 	_endfn(_SP$1)
@@ -37,6 +37,6 @@
 
 
-                	
-               
+	
+
 define(`jump_builtin',`
 	ref_nrs_value(fname,builtin_functions)
@@ -45,15 +45,15 @@
 	jump_fname()
 ')
-	
+
 _spentry(jmpsym)
 	__(jump_fname())
-        
+
 _spentry(jmpnfn)
 	__(jump_nfn())
-        
+
 	/*  Call nfn if it's either a symbol or function */
 _spentry(funcall)
 	__(funcall_nfn())
-	
+
 /* Subprims for catch, throw, unwind_protect.  */
 
@@ -62,6 +62,6 @@
 	__(mov imm2,#0)
 	__(mkcatch())
-        __(bx lr)
-        
+	__(bx lr)
+
 _spentry(mkunwind)
 	__(mov arg_z,#unbound_marker)
@@ -69,40 +69,40 @@
 	__(mkcatch())
 	__(bx lr)
-        
+
 _spentry(mkcatchmv)
 	__(mov imm2,#fixnum_one)
 	__(mkcatch())
-        __(bx lr)
+	__(bx lr)
 
 /* This never affects the symbol's vcell  */
 /* Non-null symbol in arg_y, new value in arg_z          */
 _spentry(bind)
-        __(ldr imm1,[arg_y,#symbol.binding_index])
-        __(ldr imm0,[rcontext,#tcr.tlb_limit])
-        __(cmp imm0,imm1)
-        __(uuo_tlb_too_small(hs))
-        __(cmp imm1,#0)
-        __(ldr imm2,[rcontext,#tcr.tlb_pointer])
-        __(ldr imm0,[rcontext,#tcr.db_link])
-        __(ldr temp1,[imm2,imm0])
-        __(beq 9f)
-        __(vpush1(temp1))
-        __(vpush1(imm1))
-        __(vpush1(imm0))
-        __(str arg_z,[imm2,imm1])
-        __(str vsp,[rcontext,#tcr.db_link])
-        __(bx lr)
+	__(ldr imm1,[arg_y,#symbol.binding_index])
+	__(ldr imm0,[rcontext,#tcr.tlb_limit])
+	__(cmp imm0,imm1)
+	__(uuo_tlb_too_small(ls,imm1))
+	__(cmp imm1,#0)
+	__(ldr imm2,[rcontext,#tcr.tlb_pointer])
+	__(ldr imm0,[rcontext,#tcr.db_link])
+	__(ldr temp1,[imm2,imm0])
+	__(beq 9f)
+	__(vpush1(temp1))
+	__(vpush1(imm1))
+	__(vpush1(imm0))
+	__(str arg_z,[imm2,imm1])
+	__(str vsp,[rcontext,#tcr.db_link])
+	__(bx lr)
 9:
-        __(mov arg_z,arg_y)
-        __(mov arg_y,#XSYMNOBIND)
-        __(set_nargs(2))
-        __(b _SPksignalerr)
+	__(mov arg_z,arg_y)
+	__(mov arg_y,#XSYMNOBIND)
+	__(set_nargs(2))
+	__(b _SPksignalerr)
 
 _spentry(conslist)
 	__(mov arg_z,#nil_value)
-        __(cmp nargs,#0)
-	__(b 2f)	
+	__(cmp nargs,#0)
+	__(b 2f) 
 1:
-        __(vpop1(arg_y))
+	__(vpop1(arg_y))
 	__(Cons(arg_z,arg_z,arg_z))
 	__(subs nargs,nargs,#fixnum_one)
@@ -110,11 +110,11 @@
 	__(bne 1b)
 	__(bx lr)
-	
+
 /* do list*: last arg in arg_z, all others vpushed, nargs set to #args vpushed.  */
 /* Cons, one cons cell at at time.  Maybe optimize this later.  */
-	
+
 _spentry(conslist_star)
-        __(cmp nargs,#0)
-	__(b 2f)	
+	__(cmp nargs,#0)
+	__(b 2f) 
 1:
 	__(vpop1(arg_y))
@@ -124,7 +124,7 @@
 	__(bne 1b)
 	__(bx lr)
-	
+
 _spentry(makes32)
-        __(adds imm1,imm0,imm0)
+	__(adds imm1,imm0,imm0)
 	__(addsvc arg_z,imm1,imm1)
 	__(bxvc lr)
@@ -136,13 +136,13 @@
 /* Construct a lisp integer out of the 32-bit unsigned value in imm0 */
 
-        
+
 _spentry(makeu32)
-        __(tst imm0,#0xe0000000)
-        __(box_fixnum(arg_z,imm0))
-        __(bxeq lr)
-        __(tst imm0,#0x80000000)
-        __(bne 2f)
-        __(movc16(imm1,one_digit_bignum_header))
-        __(Misc_Alloc_Fixed(arg_z,imm1,aligned_bignum_size(1)))
+	__(tst imm0,#0xe0000000)
+	__(box_fixnum(arg_z,imm0))
+	__(bxeq lr)
+	__(tst imm0,#0x80000000)
+	__(bne 2f)
+	__(movc16(imm1,one_digit_bignum_header))
+	__(Misc_Alloc_Fixed(arg_z,imm1,aligned_bignum_size(1)))
 	__(str imm0,[arg_z,#misc_data_offset])
 	__(bx lr)
@@ -153,28 +153,29 @@
 	__(bx lr)
 
-        
-/* arg_z has overflowed (by one bit) as the result of an addition or subtraction. */
+
+/* arg_z has overflowed (by one bit) as the result of an addition or
+   subtraction. */
 /* Make a bignum out of it. */
 
 _spentry(fix_overflow)
-        __(unbox_fixnum(imm0,arg_z))
-        __(eor imm0,imm0,#0xc0000000)
-        __(b _SPmakes32)
+	__(unbox_fixnum(imm0,arg_z))
+	__(eor imm0,imm0,#0xc0000000)
+	__(b _SPmakes32)
 
 _spentry(builtin_plus)
-        __(test_two_fixnums(arg_y,arg_z,imm0))
-        __(bne 1f)
-        __(adds arg_z,arg_y,arg_z)
-        __(bxvc lr)
-        __(b _SPfix_overflow)
+	__(test_two_fixnums(arg_y,arg_z,imm0))
+	__(bne 1f)
+	__(adds arg_z,arg_y,arg_z)
+	__(bxvc lr)
+	__(b _SPfix_overflow)
 1:
 	__(jump_builtin(_builtin_plus,2))
-	
+
 _spentry(builtin_minus)
-        __(test_two_fixnums(arg_y,arg_z,imm0))
-        __(bne 1f)
-        __(subs arg_z,arg_y,arg_z)
-        __(bxvc lr)
-        __(b _SPfix_overflow)
+	__(test_two_fixnums(arg_y,arg_z,imm0))
+	__(bne 1f)
+	__(subs arg_z,arg_y,arg_z)
+	__(bxvc lr)
+	__(b _SPfix_overflow)
 1:
 	__(jump_builtin(_builtin_minus,2))
@@ -182,10 +183,10 @@
 /*  Construct a lisp integer out of the 64-bit unsigned value in */
 /*           imm0 (low 32 bits) and imm1 (high 32 bits) */
-        	
+	
 _spentry(makeu64)
-        __(cmp imm1,0)
-        __(beq _SPmakeu32)
-        __(blt 3f)
-        __(movc16(imm2,two_digit_bignum_header))
+	__(cmp imm1,0)
+	__(beq _SPmakeu32)
+	__(blt 3f)
+	__(movc16(imm2,two_digit_bignum_header))
 	__(Misc_Alloc_Fixed(arg_z,imm2,aligned_bignum_size(2)))
 	__(str imm0,[arg_z,#misc_data_offset])
@@ -193,5 +194,5 @@
 	__(bx lr)
 3:              
-        __(movc16(imm2,three_digit_bignum_header))
+	__(movc16(imm2,three_digit_bignum_header))
 	__(Misc_Alloc_Fixed(arg_z,imm2,aligned_bignum_size(3)))
 	__(str imm0,[arg_z,#misc_data_offset])
@@ -202,6 +203,6 @@
 /*        imm0 (low 32 bits) and imm1 (high 32 bits). */
 _spentry(makes64)
-        __(cmp imm1,imm0,asr #31) /* is imm1 sign extension of imm0 ? */
-        __(beq _SPmakes32)        /* forget imm1 if so */
+	__(cmp imm1,imm0,asr #31) /* is imm1 sign extension of imm0 ? */
+	__(beq _SPmakes32)        /* forget imm1 if so */
 	__(movc16(imm2,two_digit_bignum_header))
 	__(Misc_Alloc_Fixed(arg_z,imm2,aligned_bignum_size(2)))
@@ -209,39 +210,39 @@
 	__(str imm1,[arg_z,#misc_data_offset+4])
 	__(bx lr)
-        
+
 _spentry(builtin_times)
-        __(test_two_fixnums(arg_y,arg_z,imm0))
-        __(bne 1f)
-        __(unbox_fixnum(imm2,arg_z))
-        __(smull arg_z,imm1,imm2,arg_y)
-        /* Now have a "64-bit fixnum" in imm1(high) and arg_z(low). If */
-        /* imm1 is just a sign extension of arg_z, return arg_z */
-        __(cmp imm1,arg_z,asr #(nbits_in_word-1))
-        __(bxeq lr)
-        /* Need to ashift the pair imm1:imm0 right fixnumshift bits */
-        __(mov imm0,imm0,lsr #fixnumshift)
-        __(and imm2,imm1,#fixnummask)
-        __(orr imm0,imm0,imm2,lsl #(nbits_in_word-fixnumshift))
-        __(unbox_fixnum(imm1,imm1))
-        __(b _SPmakes64)
-
-1:	__(jump_builtin(_builtin_times,2))
+	__(test_two_fixnums(arg_y,arg_z,imm0))
+	__(bne 1f)
+	__(unbox_fixnum(imm2,arg_z))
+	__(smull arg_z,imm1,imm2,arg_y)
+	/* Now have a "64-bit fixnum" in imm1(high) and arg_z(low). If */
+	/* imm1 is just a sign extension of arg_z, return arg_z */
+	__(cmp imm1,arg_z,asr #(nbits_in_word-1))
+	__(bxeq lr)
+	/* Need to ashift the pair imm1:imm0 right fixnumshift bits */
+	__(mov imm0,imm0,lsr #fixnumshift)
+	__(and imm2,imm1,#fixnummask)
+	__(orr imm0,imm0,imm2,lsl #(nbits_in_word-fixnumshift))
+	__(unbox_fixnum(imm1,imm1))
+	__(b _SPmakes64)
+
+1: __(jump_builtin(_builtin_times,2))
 
 _spentry(builtin_eq)
-        __(test_two_fixnums(arg_y,arg_z,imm0))
-        __(bne 1f)
-        __(cmp arg_y,arg_z)
-        __(mov arg_z,#nil_value)
-        __(addeq arg_z,arg_z,#t_offset)
-        __(bx lr)        
+	__(test_two_fixnums(arg_y,arg_z,imm0))
+	__(bne 1f)
+	__(cmp arg_y,arg_z)
+	__(mov arg_z,#nil_value)
+	__(addeq arg_z,arg_z,#t_offset)
+	__(bx lr)        
 1:
 	__(jump_builtin(_builtin_eq,2))
 
 _spentry(builtin_ne)
-        __(test_two_fixnums(arg_y,arg_z,imm0))
-        __(bne 1f)
-        __(cmp arg_y,arg_z)
-        __(mov arg_z,#nil_value)
-        __(addne arg_z,arg_z,#t_offset)
+	__(test_two_fixnums(arg_y,arg_z,imm0))
+	__(bne 1f)
+	__(cmp arg_y,arg_z)
+	__(mov arg_z,#nil_value)
+	__(addne arg_z,arg_z,#t_offset)
 	__(bx lr)
 1:
@@ -249,9 +250,9 @@
 
 _spentry(builtin_gt)
-        __(test_two_fixnums(arg_y,arg_z,imm0))
-        __(bne 1f)
-        __(cmp arg_y,arg_z)
-        __(mov arg_z,#nil_value)
-        __(addgt arg_z,arg_z,#t_offset)
+	__(test_two_fixnums(arg_y,arg_z,imm0))
+	__(bne 1f)
+	__(cmp arg_y,arg_z)
+	__(mov arg_z,#nil_value)
+	__(addgt arg_z,arg_z,#t_offset)
 	__(bx lr)
 1:
@@ -259,9 +260,9 @@
 
 _spentry(builtin_ge)
-        __(test_two_fixnums(arg_y,arg_z,imm0))
-        __(bne 1f)
-        __(cmp arg_y,arg_z)
-        __(mov arg_z,#nil_value)
-        __(addge arg_z,arg_z,#t_offset)
+	__(test_two_fixnums(arg_y,arg_z,imm0))
+	__(bne 1f)
+	__(cmp arg_y,arg_z)
+	__(mov arg_z,#nil_value)
+	__(addge arg_z,arg_z,#t_offset)
 	__(bx lr)
 1:
@@ -269,9 +270,9 @@
 
 _spentry(builtin_lt)
-        __(test_two_fixnums(arg_y,arg_z,imm0))
-        __(bne 1f)
-        __(cmp arg_y,arg_z)
-        __(mov arg_z,#nil_value)
-        __(addgt arg_z,arg_z,#t_offset)
+	__(test_two_fixnums(arg_y,arg_z,imm0))
+	__(bne 1f)
+	__(cmp arg_y,arg_z)
+	__(mov arg_z,#nil_value)
+	__(addgt arg_z,arg_z,#t_offset)
 	__(bx lr)
 1:
@@ -279,9 +280,9 @@
 
 _spentry(builtin_le)
-        __(test_two_fixnums(arg_y,arg_z,imm0))
-        __(bne 1f)
-        __(cmp arg_y,arg_z)
-        __(mov arg_z,#nil_value)
-        __(addle arg_z,arg_z,#t_offset)
+	__(test_two_fixnums(arg_y,arg_z,imm0))
+	__(bne 1f)
+	__(cmp arg_y,arg_z)
+	__(mov arg_z,#nil_value)
+	__(addle arg_z,arg_z,#t_offset)
 	__(bx lr)
 1:
@@ -290,9 +291,9 @@
 /* funcall nfn, returning multiple values if it does.  */
 _spentry(mvpass)
-        __(subs imm0,nargs,#node_size*nargregs)
-        __(movge imm0,#0)
-        __(add imm0,vsp,imm0)
+	__(subs imm0,nargs,#node_size*nargregs)
+	__(movge imm0,#0)
+	__(add imm0,vsp,imm0)
 	__(build_lisp_frame(temp1,imm0))
-        __(adr lr,C(ret1valn))
+	__(adr lr,C(ret1valn))
 	__(mov fn,#0)
 	__(funcall_nfn())
@@ -303,5 +304,5 @@
 
 _exportfn(C(ret1valn))
-        __(restore_lisp_frame(imm0))
+	__(restore_lisp_frame(imm0))
 	__(vpush1(arg_z))
 	__(set_nargs(1))
@@ -336,8 +337,8 @@
 	__(cmp nargs,#fixnum_one) /* sadly, a very common case  */
 	__(bne 4f)
-	 __(ldr arg_z,[vsp,#0])
-	 __(mov vsp,imm0)
-	 __(vpush1(arg_z))
-	 __(bx lr)
+	__(ldr arg_z,[vsp,#0])
+	__(mov vsp,imm0)
+	__(vpush1(arg_z))
+	__(bx lr)
 4:
 	__(blt 6f)
@@ -353,100 +354,99 @@
 	__(bx lr)
 
-	
+
 /* Come here with saved context on top of stack.  */
 _spentry(nvalret)
 	.globl C(nvalret)
-C(nvalret):	
+C(nvalret): 
 	__(ldr lr,[sp,#lisp_frame.savelr])
 	__(ldr temp0,[sp,#lisp_frame.savevsp])
 	__(ldr fn,[sp,#lisp_frame.savefn])
 	__(discard_lisp_frame())
-        __(b local_label(return_values))
-                                                
-	
+	__(b local_label(return_values))                         
+
 dnl /* Caller has pushed tag and 0 or more values; nargs = nvalues.  */
 dnl /* Otherwise, process unwind-protects and throw to indicated catch frame.  */
 dnl 
 dnl _spentry(throw)
-dnl 	__(ldr imm1,[rcontext, #tcr.catch_top])
-dnl 	__(mov imm0,#0) /* count intervening catch/unwind-protect frames.  */
-dnl 	__(cmpri(cr0,imm1,0))
-dnl 	__(ldr temp0,[vsp,nargs])
-dnl 	__(beq- cr0,local_label(_throw_tag_not_found))
+dnl  __(ldr imm1,[rcontext, #tcr.catch_top])
+dnl  __(mov imm0,#0) /* count intervening catch/unwind-protect frames.  */
+dnl  __(cmpri(cr0,imm1,0))
+dnl  __(ldr temp0,[vsp,nargs])
+dnl  __(beq- cr0,local_label(_throw_tag_not_found))
 dnl local_label(_throw_loop):
-dnl 	__(ldr temp1,[imm1,#catch_frame.catch_tag])
-dnl 	__(cmpr(cr0,temp0,temp1))
-dnl 	__(mov imm2,imm1)
-dnl 	__(ldr imm1,[imm1,#catch_frame.link])
-dnl 	__(cmpri(cr1,imm1,0))
-dnl 	__(beq cr0,local_label(_throw_found))
-dnl 	__(addi imm0,imm0,fixnum_one)
-dnl 	__(beq- cr1,local_label(_throw_tag_not_found))
-dnl 	__(b local_label(_throw_loop))
+dnl  __(ldr temp1,[imm1,#catch_frame.catch_tag])
+dnl  __(cmpr(cr0,temp0,temp1))
+dnl  __(mov imm2,imm1)
+dnl  __(ldr imm1,[imm1,#catch_frame.link])
+dnl  __(cmpri(cr1,imm1,0))
+dnl  __(beq cr0,local_label(_throw_found))
+dnl  __(addi imm0,imm0,fixnum_one)
+dnl  __(beq- cr1,local_label(_throw_tag_not_found))
+dnl  __(b local_label(_throw_loop))
 dnl /* imm2: (tstack-consed) target catch frame, imm0: count of intervening  */
 dnl /* frames. If target isn't a multiple-value receiver, discard extra values */
 dnl /* (less hair, maybe.)  */
 dnl local_label(_throw_found):
-dnl 	__(ldr imm1,[imm2,#catch_frame.mvflag])
-dnl 	__(cmpri(cr0,imm1,0))
-dnl 	__(cmpri(cr1,nargs,0))
-dnl 	__(mov fn,#0)
-dnl 	__(add imm1,vsp,nargs)
-dnl 	__(add imm1,[imm1,#-node_size])
-dnl 	__(bne cr0,local_label(_throw_all_values))
-dnl 	__(set_nargs(1))
-dnl 	__(beq cr1,local_label(_throw_default_1_val))
-dnl 	__(mov vsp,imm1)
-dnl 	__(b local_label(_throw_all_values))
+dnl  __(ldr imm1,[imm2,#catch_frame.mvflag])
+dnl  __(cmpri(cr0,imm1,0))
+dnl  __(cmpri(cr1,nargs,0))
+dnl  __(mov fn,#0)
+dnl  __(add imm1,vsp,nargs)
+dnl  __(add imm1,[imm1,#-node_size])
+dnl  __(bne cr0,local_label(_throw_all_values))
+dnl  __(set_nargs(1))
+dnl  __(beq cr1,local_label(_throw_default_1_val))
+dnl  __(mov vsp,imm1)
+dnl  __(b local_label(_throw_all_values))
 dnl local_label(_throw_default_1_val):
-dnl 	__(mov imm4,#nil_value)
-dnl 	__(vpush1(imm4))
+dnl  __(mov imm4,#nil_value)
+dnl  __(vpush1(imm4))
 dnl local_label(_throw_all_values):
-dnl 	__(bl _SPnthrowvalues)
-dnl 	__(ldr imm3,[rcontext,#tcr.catch_top])
-dnl 	__(ldr imm1,[rcontext,#tcr.db_link])
-dnl 	__(ldr imm0,[imm3,#catch_frame.db_link])
-dnl 	__(ldr imm4,[imm3,#catch_frame.mvflag])
-dnl 	__(cmpr(cr0,imm0,imm1))
-dnl 	__(cmpri(cr1,imm4,0))
-dnl 	__(add tsp,[imm3,#-((tsp_frame.fixed_overhead+fulltag_misc))])
-dnl 	__(beq cr0,local_label(_throw_dont_unbind))
+dnl  __(bl _SPnthrowvalues)
+dnl  __(ldr imm3,[rcontext,#tcr.catch_top])
+dnl  __(ldr imm1,[rcontext,#tcr.db_link])
+dnl  __(ldr imm0,[imm3,#catch_frame.db_link])
+dnl  __(ldr imm4,[imm3,#catch_frame.mvflag])
+dnl  __(cmpr(cr0,imm0,imm1))
+dnl  __(cmpri(cr1,imm4,0))
+dnl  __(add tsp,[imm3,#-((tsp_frame.fixed_overhead+fulltag_misc))])
+dnl  __(beq cr0,local_label(_throw_dont_unbind))
 dnl         __(bl _SPunbind_to)
 dnl local_label(_throw_dont_unbind):
-dnl 	__(add imm0,vsp,nargs)
-dnl 	__(cmpri(cr0,nargs,0))
-dnl 	__(ldr imm1,[imm3,#catch_frame.csp])
-dnl 	__(ldr imm1,[imm1,#lisp_frame.savevsp])
-dnl 	__(bne cr1,local_label(_throw_multiple))
+dnl  __(add imm0,vsp,nargs)
+dnl  __(cmpri(cr0,nargs,0))
+dnl  __(ldr imm1,[imm3,#catch_frame.csp])
+dnl  __(ldr imm1,[imm1,#lisp_frame.savevsp])
+dnl  __(bne cr1,local_label(_throw_multiple))
 dnl         /* Catcher expects single value in arg_z  */
-dnl 	__(ldr arg_z,[imm0,#-node_size])
-dnl 	__(b local_label(_throw_pushed_values))
+dnl  __(ldr arg_z,[imm0,#-node_size])
+dnl  __(b local_label(_throw_pushed_values))
 dnl local_label(_throw_multiple):
-dnl 	__(beq cr0,local_label(_throw_pushed_values))
-dnl 	__(mov imm2,nargs)
+dnl  __(beq cr0,local_label(_throw_pushed_values))
+dnl  __(mov imm2,nargs)
 dnl local_label(_throw_mvloop):
-dnl 	__(subi imm2,imm2,fixnum_one)
-dnl 	__(cmpri(imm2,0))
-dnl 	__(ldru(temp0,-node_size(imm0)))
-dnl 	__(push(temp0,imm1))
-dnl 	__(bgt local_label(_throw_mvloop))
+dnl  __(subi imm2,imm2,fixnum_one)
+dnl  __(cmpri(imm2,0))
+dnl  __(ldru(temp0,-node_size(imm0)))
+dnl  __(push(temp0,imm1))
+dnl  __(bgt local_label(_throw_mvloop))
 dnl local_label(_throw_pushed_values):
-dnl 	__(mov vsp,imm1)
-dnl 	__(ldr imm1,[imm3,#catch_frame.xframe])
-dnl 	__(str(imm1,tcr.xframe(rcontext)))
-dnl 	__(ldr sp,[imm3,#catch_frame.csp])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(discard_lisp_frame())
-dnl 	__(mtlr loc_pc)
+dnl  __(mov vsp,imm1)
+dnl  __(ldr imm1,[imm3,#catch_frame.xframe])
+dnl  __(str(imm1,tcr.xframe(rcontext)))
+dnl  __(ldr sp,[imm3,#catch_frame.csp])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(discard_lisp_frame())
+dnl  __(mtlr loc_pc)
 dnl         __(restore_catch_nvrs(imm3))
-dnl 	__(ldr imm3,[imm3,#catch_frame.link])
-dnl 	__(str(imm3,tcr.catch_top(rcontext)))
-dnl 	__(unlink(tsp))
-dnl 	__(bx lr)
+dnl  __(ldr imm3,[imm3,#catch_frame.link])
+dnl  __(str(imm3,tcr.catch_top(rcontext)))
+dnl  __(unlink(tsp))
+dnl  __(bx lr)
 dnl local_label(_throw_tag_not_found):
-dnl 	__(uuo_interr(error_throw_tag_missing,temp0))
-dnl 	__(strux(temp0,vsp,nargs))
-dnl 	__(b _SPthrow)
+dnl  __(uuo_interr(error_throw_tag_missing,temp0))
+dnl  __(strux(temp0,vsp,nargs))
+dnl  __(b _SPthrow)
 dnl 
 dnl 
@@ -454,108 +454,108 @@
 dnl _spentry(nthrowvalues)
 dnl         __(mov imm1,#1)
-dnl 	__(mov imm4,imm0)
+dnl  __(mov imm4,imm0)
 dnl         __(str(imm1,tcr.unwinding(rcontext)))
 dnl local_label(_nthrowv_nextframe):
-dnl 	__(subi imm4,imm4,fixnum_one)
-dnl 	__(cmpri(cr1,imm4,0))
-dnl 	__(ldr temp0,[rcontext,#tcr.catch_top])
-dnl 	__(ldr imm1,[rcontext,#tcr.db_link])
-dnl 	__(blt cr1,local_label(_nthrowv_done))
-dnl 	__(ldr imm0,[temp0,#catch_frame.db_link])
-dnl 	__(ldr imm3,[temp0,#catch_frame.link])
-dnl 	__(cmpr(cr0,imm0,imm1))
-dnl 	__(str(imm3,tcr.catch_top(rcontext)))
-dnl 	__(ldr temp1,[temp0,#catch_frame.catch_tag])
-dnl 	__(cmpri(cr7,temp1,unbound_marker))		/* unwind-protect ?  */
-dnl 	__(ldr first_nvr,[temp0,#catch_frame.xframe])
-dnl 	__(str(first_nvr,tcr.xframe(rcontext)))
-dnl 	__(ldr sp,[temp0,#catch_frame.csp])
-dnl 	__(beq cr0,local_label(_nthrowv_dont_unbind))
-dnl 	__(mflr loc_pc)
+dnl  __(subi imm4,imm4,fixnum_one)
+dnl  __(cmpri(cr1,imm4,0))
+dnl  __(ldr temp0,[rcontext,#tcr.catch_top])
+dnl  __(ldr imm1,[rcontext,#tcr.db_link])
+dnl  __(blt cr1,local_label(_nthrowv_done))
+dnl  __(ldr imm0,[temp0,#catch_frame.db_link])
+dnl  __(ldr imm3,[temp0,#catch_frame.link])
+dnl  __(cmpr(cr0,imm0,imm1))
+dnl  __(str(imm3,tcr.catch_top(rcontext)))
+dnl  __(ldr temp1,[temp0,#catch_frame.catch_tag])
+dnl  __(cmpri(cr7,temp1,unbound_marker))  /* unwind-protect ?  */
+dnl  __(ldr first_nvr,[temp0,#catch_frame.xframe])
+dnl  __(str(first_nvr,tcr.xframe(rcontext)))
+dnl  __(ldr sp,[temp0,#catch_frame.csp])
+dnl  __(beq cr0,local_label(_nthrowv_dont_unbind))
+dnl  __(mflr loc_pc)
 dnl         __(bl _SPunbind_to)
-dnl 	__(mtlr loc_pc)
+dnl  __(mtlr loc_pc)
 dnl local_label(_nthrowv_dont_unbind):
-dnl 	__(beq cr7,local_label(_nthrowv_do_unwind))
+dnl  __(beq cr7,local_label(_nthrowv_do_unwind))
 dnl /* A catch frame.  If the last one, restore context from there.  */
-dnl 	__(bne cr1,local_label(_nthrowv_skip))
-dnl 	__(ldr imm0,[sp,#lisp_frame.savevsp])
-dnl 	__(str(rzero,lisp_frame.savevsp(sp)))	/* marker for stack overflow code  */
-dnl 	__(add imm1,vsp,nargs)
-dnl 	__(mov imm2,nargs)
-dnl 	__(b local_label(_nthrowv_push_test))
+dnl  __(bne cr1,local_label(_nthrowv_skip))
+dnl  __(ldr imm0,[sp,#lisp_frame.savevsp])
+dnl  __(str(rzero,lisp_frame.savevsp(sp))) /* marker for stack overflow code  */
+dnl  __(add imm1,vsp,nargs)
+dnl  __(mov imm2,nargs)
+dnl  __(b local_label(_nthrowv_push_test))
 dnl local_label(_nthrowv_push_loop):
-dnl 	__(ldru(temp1,-node_size(imm1)))
-dnl 	__(push(temp1,imm0))
+dnl  __(ldru(temp1,-node_size(imm1)))
+dnl  __(push(temp1,imm0))
 dnl local_label(_nthrowv_push_test):
-dnl 	__(cmpri(imm2,0))
-dnl 	__(subi imm2,imm2,fixnum_one)
-dnl 	__(bne local_label(_nthrowv_push_loop))
-dnl 	__(mov vsp,imm0)
+dnl  __(cmpri(imm2,0))
+dnl  __(subi imm2,imm2,fixnum_one)
+dnl  __(bne local_label(_nthrowv_push_loop))
+dnl  __(mov vsp,imm0)
 dnl         __(restore_catch_nvrs(temp0))
 dnl 
 dnl local_label(_nthrowv_skip):
-dnl 	__(la tsp,-(tsp_frame.fixed_overhead+fulltag_misc)(temp0))
-dnl 	__(unlink(tsp))
-dnl 	__(discard_lisp_frame())
-dnl 	__(b local_label(_nthrowv_nextframe))
+dnl  __(la tsp,-(tsp_frame.fixed_overhead+fulltag_misc)(temp0))
+dnl  __(unlink(tsp))
+dnl  __(discard_lisp_frame())
+dnl  __(b local_label(_nthrowv_nextframe))
 dnl local_label(_nthrowv_do_unwind):
 dnl         /* This is harder.  Call the cleanup code with the multiple */
-dnl 	/* values (and nargs, which is a fixnum.)  Remember the throw count  */
+dnl  /* values (and nargs, which is a fixnum.)  Remember the throw count  */
 dnl         /* (also a fixnum) as well.  */
 dnl         /* Save our caller's LR and FN in the csp frame created by the unwind-  */
 dnl         /* protect.  (Clever, eh ?)  */
-dnl 	__(ldr first_nvr,[temp0,#catch_frame.xframe])
-dnl 	__(str(first_nvr,tcr.xframe(rcontext)))
+dnl  __(ldr first_nvr,[temp0,#catch_frame.xframe])
+dnl  __(str(first_nvr,tcr.xframe(rcontext)))
 dnl         __(restore_catch_nvrs(temp0))
-dnl 	__(la tsp,-(tsp_frame.fixed_overhead+fulltag_misc)(temp0))
-dnl 	__(unlink(tsp))
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr nfn,[sp,#lisp_frame.savefn])
-dnl 	__(mtctr loc_pc)	/* cleanup code address.  */
-dnl 	__(str(fn,lisp_frame.savefn(sp)))
-dnl 	__(mflr loc_pc)
-dnl 	__(mov fn,nfn)
-dnl 	__(str(loc_pc,lisp_frame.savelr(sp)))
-dnl 	__(dnode_align(imm0,nargs,tsp_frame.fixed_overhead+(2*node_size))) /* tsp overhead, nargs, throw count  */
-dnl 	__(TSP_Alloc_Var_Boxed_nz(imm0,imm1))
-dnl 	__(mov imm2,nargs)
-dnl 	__(add imm1,nargs,vsp)
-dnl 	__(la imm0,tsp_frame.data_offset(tsp))
-dnl 	__(str(nargs,0(imm0)))
-dnl 	__(b local_label(_nthrowv_tpushtest))
+dnl  __(la tsp,-(tsp_frame.fixed_overhead+fulltag_misc)(temp0))
+dnl  __(unlink(tsp))
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr nfn,[sp,#lisp_frame.savefn])
+dnl  __(mtctr loc_pc) /* cleanup code address.  */
+dnl  __(str(fn,lisp_frame.savefn(sp)))
+dnl  __(mflr loc_pc)
+dnl  __(mov fn,nfn)
+dnl  __(str(loc_pc,lisp_frame.savelr(sp)))
+dnl  __(dnode_align(imm0,nargs,tsp_frame.fixed_overhead+(2*node_size))) /* tsp overhead, nargs, throw count  */
+dnl  __(TSP_Alloc_Var_Boxed_nz(imm0,imm1))
+dnl  __(mov imm2,nargs)
+dnl  __(add imm1,nargs,vsp)
+dnl  __(la imm0,tsp_frame.data_offset(tsp))
+dnl  __(str(nargs,0(imm0)))
+dnl  __(b local_label(_nthrowv_tpushtest))
 dnl local_label(_nthrowv_tpushloop):
-dnl 	__(ldru(temp0,-node_size(imm1)))
-dnl 	__(stru(temp0,node_size(imm0)))
-dnl 	__(subi imm2,imm2,fixnum_one)
+dnl  __(ldru(temp0,-node_size(imm1)))
+dnl  __(stru(temp0,node_size(imm0)))
+dnl  __(subi imm2,imm2,fixnum_one)
 dnl local_label(_nthrowv_tpushtest):
-dnl 	__(cmpri(imm2,0))
-dnl 	__(bne local_label(_nthrowv_tpushloop))
-dnl 	__(stru(imm4,node_size(imm0)))
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(cmpri(imm2,0))
+dnl  __(bne local_label(_nthrowv_tpushloop))
+dnl  __(stru(imm4,node_size(imm0)))
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
 dnl         /* Interrupts should be disabled here (we're calling and returning */
 dnl         /* from the cleanup form.  Clear the tcr.unwinding flag, so that */
 dnl         /* interrupts can be taken if they're enabled in the cleanup form.  */
 dnl         __(str(rzero,tcr.unwinding(rcontext)))        
-dnl 	__(bctrl)
+dnl  __(bctrl)
 dnl         __(mov imm1,#1)
-dnl 	__(la imm0,tsp_frame.data_offset(tsp))
+dnl  __(la imm0,tsp_frame.data_offset(tsp))
 dnl         __(str(imm1,tcr.unwinding(rcontext)))
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(discard_lisp_frame())
-dnl 	__(mtlr loc_pc)
-dnl 	__(ldr nargs,[imm0,#0])
-dnl 	__(mov imm2,nargs)
-dnl 	__(b local_label(_nthrowv_tpoptest))
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(discard_lisp_frame())
+dnl  __(mtlr loc_pc)
+dnl  __(ldr nargs,[imm0,#0])
+dnl  __(mov imm2,nargs)
+dnl  __(b local_label(_nthrowv_tpoptest))
 dnl local_label(_nthrowv_tpoploop):
-dnl 	__(ldru(temp0,node_size(imm0)))
-dnl 	__(vpush1(temp0))
-dnl 	__(subi imm2,imm2,fixnum_one)
+dnl  __(ldru(temp0,node_size(imm0)))
+dnl  __(vpush1(temp0))
+dnl  __(subi imm2,imm2,fixnum_one)
 dnl local_label(_nthrowv_tpoptest):
-dnl 	__(cmpri(imm2,0))
-dnl 	__(bne local_label(_nthrowv_tpoploop))
-dnl 	__(ldr imm4,[imm0,#node_size])
-dnl 	__(unlink(tsp))
-dnl 	__(b local_label(_nthrowv_nextframe))
+dnl  __(cmpri(imm2,0))
+dnl  __(bne local_label(_nthrowv_tpoploop))
+dnl  __(ldr imm4,[imm0,#node_size])
+dnl  __(unlink(tsp))
+dnl  __(b local_label(_nthrowv_nextframe))
 dnl local_label(_nthrowv_done):
 dnl         __(str(rzero,tcr.unwinding(rcontext)))
@@ -573,37 +573,37 @@
 dnl _spentry(nthrow1value)
 dnl         __(mov imm1,#1)
-dnl 	__(mov imm4,imm0)
+dnl  __(mov imm4,imm0)
 dnl         __(str(imm1,tcr.unwinding(rcontext)))
 dnl local_label(_nthrow1v_nextframe):
-dnl 	__(subi imm4,imm4,fixnum_one)
-dnl 	__(cmpri(cr1,imm4,0))
-dnl 	__(ldr temp0,[rcontext,#tcr.catch_top])
-dnl 	__(ldr imm1,[rcontext,#tcr.db_link])
-dnl 	__(set_nargs(1))
-dnl 	__(blt cr1,local_label(_nthrow1v_done))
-dnl 	__(ldr imm3,[temp0,#catch_frame.link])
-dnl 	__(ldr imm0,[temp0,#catch_frame.db_link])
-dnl 	__(cmpr(cr0,imm0,imm1))
-dnl 	__(str(imm3,tcr.catch_top(rcontext)))
+dnl  __(subi imm4,imm4,fixnum_one)
+dnl  __(cmpri(cr1,imm4,0))
+dnl  __(ldr temp0,[rcontext,#tcr.catch_top])
+dnl  __(ldr imm1,[rcontext,#tcr.db_link])
+dnl  __(set_nargs(1))
+dnl  __(blt cr1,local_label(_nthrow1v_done))
+dnl  __(ldr imm3,[temp0,#catch_frame.link])
+dnl  __(ldr imm0,[temp0,#catch_frame.db_link])
+dnl  __(cmpr(cr0,imm0,imm1))
+dnl  __(str(imm3,tcr.catch_top(rcontext)))
 dnl         __(ldr imm3,[temp0,#catch_frame.xframe])
-dnl 	__(ldr temp1,[temp0,#catch_frame.catch_tag])
-dnl 	__(cmpri(cr7,temp1,unbound_marker))		/* unwind-protect ?  */
+dnl  __(ldr temp1,[temp0,#catch_frame.catch_tag])
+dnl  __(cmpri(cr7,temp1,unbound_marker))  /* unwind-protect ?  */
 dnl         __(str(imm3,tcr.xframe(rcontext)))
-dnl 	__(ldr sp,[temp0,#catch_frame.csp])
-dnl 	__(beq cr0,local_label(_nthrow1v_dont_unbind))
-dnl 	 __(mflr loc_pc)
+dnl  __(ldr sp,[temp0,#catch_frame.csp])
+dnl  __(beq cr0,local_label(_nthrow1v_dont_unbind))
+dnl   __(mflr loc_pc)
 dnl          __(bl _SPunbind_to)
-dnl 	 __(mtlr loc_pc)
+dnl   __(mtlr loc_pc)
 dnl local_label(_nthrow1v_dont_unbind):
-dnl 	__(beq cr7,local_label(_nthrow1v_do_unwind))
+dnl  __(beq cr7,local_label(_nthrow1v_do_unwind))
 dnl         /* A catch frame.  If the last one, restore context from there.  */
-dnl 	__(bne cr1,local_label(_nthrow1v_skip))
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(bne cr1,local_label(_nthrow1v_skip))
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
 dnl         __(restore_catch_nvrs(temp0))
 dnl local_label(_nthrow1v_skip):
-dnl 	__(la tsp,-(tsp_frame.fixed_overhead+fulltag_misc)(temp0))
-dnl 	__(unlink(tsp))
-dnl 	__(discard_lisp_frame())
-dnl 	__(b local_label(_nthrow1v_nextframe))
+dnl  __(la tsp,-(tsp_frame.fixed_overhead+fulltag_misc)(temp0))
+dnl  __(unlink(tsp))
+dnl  __(discard_lisp_frame())
+dnl  __(b local_label(_nthrow1v_nextframe))
 dnl local_label(_nthrow1v_do_unwind):
 dnl         /* This is harder, but not as hard (not as much BLTing) as the  */
@@ -613,29 +613,29 @@
 dnl 
 dnl         __(restore_catch_nvrs(temp0))
-dnl 	__(la tsp,-(tsp_frame.fixed_overhead+fulltag_misc)(temp0))
-dnl 	__(unlink(tsp))
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr nfn,[sp,#lisp_frame.savefn])
-dnl 	__(mtctr loc_pc)		/* cleanup code address.  */
-dnl 	__(str(fn,lisp_frame.savefn(sp)))
-dnl 	__(mflr loc_pc)
-dnl 	__(mov fn,nfn)
-dnl 	__(str(loc_pc,lisp_frame.savelr(sp)))
-dnl 	__(TSP_Alloc_Fixed_Boxed(2*node_size)) /* tsp overhead, value, throw count  */
-dnl 	__(str(arg_z,tsp_frame.data_offset(tsp)))
-dnl 	__(str(imm4,tsp_frame.data_offset+node_size(tsp)))
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(la tsp,-(tsp_frame.fixed_overhead+fulltag_misc)(temp0))
+dnl  __(unlink(tsp))
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr nfn,[sp,#lisp_frame.savefn])
+dnl  __(mtctr loc_pc)  /* cleanup code address.  */
+dnl  __(str(fn,lisp_frame.savefn(sp)))
+dnl  __(mflr loc_pc)
+dnl  __(mov fn,nfn)
+dnl  __(str(loc_pc,lisp_frame.savelr(sp)))
+dnl  __(TSP_Alloc_Fixed_Boxed(2*node_size)) /* tsp overhead, value, throw count  */
+dnl  __(str(arg_z,tsp_frame.data_offset(tsp)))
+dnl  __(str(imm4,tsp_frame.data_offset+node_size(tsp)))
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
 dnl         __(str(rzero,tcr.unwinding(rcontext)))
-dnl 	__(bctrl)
+dnl  __(bctrl)
 dnl         __(mov imm1,#1)
-dnl 	__(ldr arg_z,[tsp,#tsp_frame.data_offset])
+dnl  __(ldr arg_z,[tsp,#tsp_frame.data_offset])
 dnl         __(str(imm1,tcr.unwinding(rcontext)))
-dnl 	__(ldr imm4,[tsp,#tsp_frame.data_offset+node_size])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(discard_lisp_frame())
-dnl 	__(mtlr loc_pc)
-dnl 	__(unlink(tsp))
-dnl 	__(b local_label(_nthrow1v_nextframe))
+dnl  __(ldr imm4,[tsp,#tsp_frame.data_offset+node_size])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(discard_lisp_frame())
+dnl  __(mtlr loc_pc)
+dnl  __(unlink(tsp))
+dnl  __(b local_label(_nthrow1v_nextframe))
 dnl local_label(_nthrow1v_done):
 dnl         __(str(rzero,tcr.unwinding(rcontext)))
@@ -644,76 +644,60 @@
 dnl         __(check_pending_interrupt())
 dnl         __(bx lr)
-dnl 
-dnl /* arg_z = symbol: bind it to its current value          */
-dnl _spentry(bind_self)
-dnl         __(ldr imm3,[arg_z,#symbol.binding_index])
-dnl         __(ldr imm0,[rcontext,#tcr.tlb_limit])
-dnl         __(cmpri(imm3,0))
-dnl         __(trlle(imm0,imm3))           /* tlb too small  */
-dnl         __(ldr imm2,[rcontext,#tcr.tlb_pointer])
-dnl         __(ldr imm1,[rcontext,#tcr.db_link])
-dnl         __(ldr temp1,[imm2,imm3])
-dnl         __(cmpri(cr1,temp1,no_thread_local_binding_marker))
-dnl         __(beq 9f)
-dnl         __(mov temp0,temp1)
-dnl         __(bne cr1,1f)
-dnl         __(ldr temp0,[arg_z,#symbol.vcell])
-dnl 1:              
-dnl         __(vpush1(temp1))
-dnl         __(vpush1(imm3))
-dnl         __(vpush1(imm1))
-dnl         __(str temp0,imm2,imm3)
-dnl         __(str(vsp,tcr.db_link(rcontext)))
-dnl         __(bx lr)
-dnl 9:      __(mov arg_y,#XSYMNOBIND)
-dnl         __(set_nargs(2))
-dnl         __(b _SPksignalerr)
-dnl 
-dnl /* Bind symbol in arg_z to NIL                 */
-dnl _spentry(bind_nil)
-dnl         __(ldr imm3,[arg_z,#symbol.binding_index])
-dnl         __(ldr imm0,[rcontext,#tcr.tlb_limit])
-dnl         __(cmpri(imm3,0))
-dnl         __(beq- 9f)
-dnl         __(trlle(imm0,imm3))           /* tlb too small  */
-dnl         __(ldr imm2,[rcontext,#tcr.tlb_pointer])
-dnl         __(ldr temp1,[imm2,imm3])
-dnl         __(ldr imm1,[rcontext,#tcr.db_link])
-dnl         __(mov imm0,#nil_value)
-dnl         __(vpush1(temp1))
-dnl         __(vpush1(imm3))
-dnl         __(vpush1(imm1))
-dnl         __(str imm0,imm2,imm3)
-dnl         __(str(vsp,tcr.db_link(rcontext)))
-dnl         __(bx lr)
-dnl 9:      __(mov arg_y,#XSYMNOBIND)
-dnl         __(set_nargs(2))
-dnl         __(b _SPksignalerr)
-dnl 
-dnl        
-dnl /* Bind symbol in arg_z to its current value;  trap if symbol is unbound */
-dnl _spentry(bind_self_boundp_check)
-dnl         __(ldr imm3,[arg_z,#symbol.binding_index])
-dnl         __(ldr imm0,[rcontext,#tcr.tlb_limit])
-dnl         __(cmpri(imm3,0))
-dnl         __(trlle(imm0,imm3))           /* tlb too small  */
-dnl         __(ldr imm2,[rcontext,#tcr.tlb_pointer])
-dnl         __(ldr temp1,[imm2,imm3])
-dnl         __(ldr imm1,[rcontext,#tcr.db_link])
-dnl         __(beq 9f)              /* no real tlb index  */
-dnl         __(cmpri(temp1,no_thread_local_binding_marker))
-dnl         __(mov temp0,temp1)
-dnl         __(bne 1f)
-dnl         __(ldr temp0,[arg_z,#symbol.vcell])
-dnl 1:      __(treqi(temp0,unbound_marker))       
-dnl         __(vpush1(temp1))
-dnl         __(vpush1(imm3))
-dnl         __(vpush1(imm1))
-dnl         __(str temp0,imm2,imm3)
-dnl         __(str(vsp,tcr.db_link(rcontext)))
-dnl         __(bx lr)
-dnl 9:      __(mov arg_y,#XSYMNOBIND)
-dnl         __(set_nargs(2))
-dnl         __(b _SPksignalerr)
+
+/* arg_z = symbol: bind it to its current value          */
+ _spentry(bind_self)
+        __(ldr imm1,[arg_z,#symbol.binding_index])
+        __(ldr imm0,[rcontext,#tcr.tlb_limit])
+        __(cmp imm1,#0)
+        __(beq 9f)
+        __(cmp imm0,imm1)
+        __(uuo_tlb_too_small(ls,imm1))
+        __(ldr temp2,[rcontext,#tcr.tlb_pointer])
+        __(ldr imm0,[rcontext,#tcr.db_link])
+        __(ldr temp1,[temp2,imm1])
+        __(cmp temp1,#no_thread_local_binding_marker)
+        __(movne temp0,temp1)
+        __(ldreq temp0,[arg_z,#symbol.vcell])
+        __(vpush1(temp1))   /* old tlb contents */
+        __(vpush1(imm1))    /* tlb index */
+        __(vpush1(imm0))
+        __(str temp0,[temp2,imm1])
+        __(str vsp,[rcontext,#tcr.db_link])
+        __(bx lr)
+9:      __(mov arg_y,#XSYMNOBIND)
+        __(set_nargs(2))
+        __(b _SPksignalerr)
+
+/* Bind symbol in arg_z to NIL                 */
+_spentry(bind_nil)
+        __(mov arg_y,arg_z)
+        __(mov arg_z,#nil_value)
+        __(b _SPbind)
+
+/* Bind symbol in arg_z to its current value;  trap if symbol is unbound */
+_spentry(bind_self_boundp_check)
+        __(ldr imm1,[arg_z,#symbol.binding_index])
+        __(ldr imm0,[rcontext,#tcr.tlb_limit])
+        __(cmp imm1,#0)
+        __(beq 9f)
+        __(cmp imm0,imm1)
+        __(uuo_tlb_too_small(ls,imm1))
+        __(ldr temp2,[rcontext,#tcr.tlb_pointer])
+        __(ldr imm0,[rcontext,#tcr.db_link])
+        __(ldr temp1,[temp2,imm1])
+        __(cmp temp1,#no_thread_local_binding_marker)
+        __(movne temp0,temp1)
+        __(ldreq temp0,[arg_z,#symbol.vcell])
+        __(cmp temp0,#unbound_marker)
+        __(uuo_error_unbound(eq,arg_z))
+        __(vpush1(temp1))   /* old tlb contents */
+        __(vpush1(imm1))    /* tlb index */
+        __(vpush1(imm0))
+        __(str temp0,[temp2,imm1])
+        __(str vsp,[rcontext,#tcr.db_link])
+        __(bx lr)
+9:      __(mov arg_y,#XSYMNOBIND)
+        __(set_nargs(2))
+        __(b _SPksignalerr)
 dnl 
 dnl 
@@ -735,5 +719,5 @@
 dnl /* threads are suspended.) */
 dnl /* We can unconditionally set the suspended thread's PC to its LR. */
-dnl 	
+dnl  
 dnl         .globl C(egc_write_barrier_start)
 dnl _spentry(rplaca)
@@ -768,5 +752,5 @@
 dnl C(egc_rplacd):
 dnl         __(cmplr(cr2,arg_z,arg_y))
-dnl 	__(_rplacd(arg_y,arg_z))
+dnl  __(_rplacd(arg_y,arg_z))
 dnl         __(blelr cr2)
 dnl         __(ref_global(imm2,ref_base))
@@ -792,12 +776,13 @@
 dnl         __(bx lr)
 dnl 
-dnl /* Storing into a gvector can be handled the same way as storing into a CONS. */
-dnl 
-dnl         .globl C(egc_gvset)
-dnl _spentry(gvset)
-dnl C(egc_gvset):
+/* Storing into a gvector can be handled the same way as storing into a CONS. */
+
+	.globl C(egc_gvset)
+_spentry(gvset)
+C(egc_gvset):
 dnl         __(cmplr(cr2,arg_z,arg_x))
-dnl         __(la imm0,misc_data_offset(arg_y))
-dnl         __(str arg_z,arg_x,imm0)
+	__(add imm0,arg_y,#misc_data_offset)
+	__(str arg_z,[arg_x,imm0])
+	__(bx lr)
 dnl         __(blelr cr2)
 dnl         __(add imm0,imm0,arg_x)
@@ -875,5 +860,5 @@
 dnl         
 dnl /*
-dnl    Interrupt handling (in pc_luser_xp()) notes:	
+dnl    Interrupt handling (in pc_luser_xp()) notes: 
 dnl    If we are in this function and before the test which follows the
 dnl    conditional (at egc_store_node_conditional), or at that test
@@ -886,5 +871,5 @@
 dnl    body of the next subprim (and at or beyond 'egc_write_barrier_end').
 dnl 
-dnl    N.B:	it's not possible to really understand what's going on just
+dnl    N.B: it's not possible to really understand what's going on just
 dnl    by the state of the cr0`eq' bit.  A transient failure in the
 dnl    conditional stores that handle memoization might clear cr0`eq'
@@ -903,6 +888,6 @@
 dnl         __(bne cr1,5f)
 dnl         __(strcx(arg_z,arg_x,imm4))
-dnl 	.globl C(egc_store_node_conditional_test)
-dnl C(egc_store_node_conditional_test):	
+dnl  .globl C(egc_store_node_conditional_test)
+dnl C(egc_store_node_conditional_test): 
 dnl         __(bne 1b)
 dnl         __(isync)
@@ -932,36 +917,36 @@
 dnl    we have to do more work to actually do the memoization.*/
 dnl _spentry(set_hash_key_conditional)
-dnl 	.globl C(egc_set_hash_key_conditional)
+dnl  .globl C(egc_set_hash_key_conditional)
 dnl C(egc_set_hash_key_conditional):
-dnl 	__(cmplr(cr2,arg_z,arg_x))
-dnl 	__(vpop(imm4))
-dnl 	__(unbox_fixnum(imm4,imm4))
-dnl 1:	__(lrarx(temp1,arg_x,imm4))
-dnl 	__(cmpr(cr1,temp1,arg_y))
-dnl 	__(bne cr1,5f)
-dnl 	__(strcx(arg_z,arg_x,imm4))
-dnl 	.globl C(egc_set_hash_key_conditional_test)
-dnl C(egc_set_hash_key_conditional_test):	
-dnl 	__(bne 1b)
-dnl 	__(isync)
-dnl 	__(add imm0,imm4,arg_x)
-dnl 	__(ref_global(imm2,ref_base))
-dnl 	__(ref_global(imm1,oldspace_dnode_count))
-dnl 	__(sub imm0,imm0,imm2)
-dnl 	__(load_highbit(imm3))
-dnl 	__(srri(imm0,imm0,dnode_shift))
-dnl 	__(cmplr(imm0,imm1))
-dnl 	__(extract_bit_shift_count(imm2,imm0))
-dnl 	__(srri(imm0,imm0,bitmap_shift))
-dnl 	__(srr(imm3,imm3,imm2))
-dnl 	__(ref_global(imm2,refbits))
-dnl 	__(bge 4f)
-dnl 	__(slri(imm0,imm0,word_shift))
-dnl 2:	__(lrarx(imm1,imm2,imm0))
-dnl 	__(or imm1,imm1,imm3)
-dnl 	__(strcx(imm1,imm2,imm0))
-dnl 	__(bne- 2b)
-dnl 	__(isync)
-dnl 	/* Memoize hash table header */		
+dnl  __(cmplr(cr2,arg_z,arg_x))
+dnl  __(vpop(imm4))
+dnl  __(unbox_fixnum(imm4,imm4))
+dnl 1: __(lrarx(temp1,arg_x,imm4))
+dnl  __(cmpr(cr1,temp1,arg_y))
+dnl  __(bne cr1,5f)
+dnl  __(strcx(arg_z,arg_x,imm4))
+dnl  .globl C(egc_set_hash_key_conditional_test)
+dnl C(egc_set_hash_key_conditional_test): 
+dnl  __(bne 1b)
+dnl  __(isync)
+dnl  __(add imm0,imm4,arg_x)
+dnl  __(ref_global(imm2,ref_base))
+dnl  __(ref_global(imm1,oldspace_dnode_count))
+dnl  __(sub imm0,imm0,imm2)
+dnl  __(load_highbit(imm3))
+dnl  __(srri(imm0,imm0,dnode_shift))
+dnl  __(cmplr(imm0,imm1))
+dnl  __(extract_bit_shift_count(imm2,imm0))
+dnl  __(srri(imm0,imm0,bitmap_shift))
+dnl  __(srr(imm3,imm3,imm2))
+dnl  __(ref_global(imm2,refbits))
+dnl  __(bge 4f)
+dnl  __(slri(imm0,imm0,word_shift))
+dnl 2: __(lrarx(imm1,imm2,imm0))
+dnl  __(or imm1,imm1,imm3)
+dnl  __(strcx(imm1,imm2,imm0))
+dnl  __(bne- 2b)
+dnl  __(isync)
+dnl  /* Memoize hash table header */  
 dnl         __(ref_global(imm1,ref_base))
 dnl         __(sub imm0,arg_x,imm1)
@@ -981,202 +966,203 @@
 dnl         __(isync)
 dnl C(egc_write_barrier_end):
-dnl 4:	__(mov arg_z,#t_value)
-dnl 	__(bx lr)
+dnl 4: __(mov arg_z,#t_value)
+dnl  __(bx lr)
 dnl 5:      __(mov imm0,#RESERVATION_DISCHARGE)
 dnl         __(strcx(rzero,0,imm0))
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(bx lr)
-dnl 	
-dnl 	
-dnl 	       
-dnl 	
-dnl 
-dnl /* We always have to create a tsp frame (even if nargs is 0), so the compiler  */
-dnl /* doesn't get confused.  */
-dnl _spentry(stkconslist)
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(cmpri(cr1,nargs,0))
-dnl 	__(add imm1,nargs,nargs)
-dnl 	__(addi imm1,imm1,tsp_frame.fixed_overhead)
-dnl 	__(TSP_Alloc_Var_Boxed(imm1,imm2))
-dnl 	__(la imm1,tsp_frame.data_offset+fulltag_cons(tsp))
-dnl 	__(b 2f)
-dnl 1:	__(ldr temp0,[vsp,#0])
-dnl 	__(cmpri(cr1,nargs,fixnum_one))
-dnl 	__(la vsp,node_size(vsp))
-dnl 	__(_rplaca(imm1,temp0))
-dnl 	__(_rplacd(imm1,arg_z))
-dnl 	__(mov arg_z,imm1)
-dnl 	__(la imm1,cons.size(imm1))
-dnl 	__(la nargs,-fixnum_one(nargs))
-dnl 2:
-dnl 	__(bne cr1,1b)
-dnl 	__(bx lr)
-dnl 
-dnl /* do list*: last arg in arg_z, all others vpushed,  */
-dnl /* nargs set to #args vpushed.  */
-dnl _spentry(stkconslist_star)
-dnl 	__(cmpri(cr1,nargs,0))
-dnl 	__(add imm1,nargs,nargs)
-dnl 	__(addi imm1,imm1,tsp_frame.fixed_overhead)
-dnl 	__(TSP_Alloc_Var_Boxed(imm1,imm2))
-dnl 	__(la imm1,tsp_frame.data_offset+fulltag_cons(tsp))
-dnl 	__(b 2f)
-dnl 1:	__(ldr temp0,[vsp,#0])
-dnl 	__(cmpri(cr1,nargs,fixnum_one))
-dnl 	__(la vsp,node_size(vsp))
-dnl 	__(_rplaca(imm1,temp0))
-dnl 	__(_rplacd(imm1,arg_z))
-dnl 	__(mov arg_z,imm1)
-dnl 	__(la imm1,cons.size(imm1))
-dnl 	__(la nargs,-fixnum_one(nargs))
-dnl 2:
-dnl 	__(bne cr1,1b)
-dnl 	__(bx lr)
-dnl 
-dnl 
-dnl /* Make a stack-consed simple-vector out of the NARGS objects  */
-dnl /* on top of the vstack; return it in arg_z.  */
-dnl _spentry(mkstackv)
-dnl 	__(cmpri(cr1,nargs,0))
-dnl 	__(dnode_align(imm1,nargs,tsp_frame.fixed_overhead+node_size))
-dnl 	__(TSP_Alloc_Var_Boxed_nz(imm1,imm2))
-dnl 	__(slwi imm0,nargs,num_subtag_bits-fixnumshift)
-dnl 	__(ori imm0,imm0,subtag_simple_vector)
-dnl 	__(str(imm0,tsp_frame.data_offset(tsp)))
-dnl 	__(la arg_z,tsp_frame.data_offset+fulltag_misc(tsp))
-dnl 	__(beq- cr1,2f)
-dnl 	__(la imm0,misc_data_offset(arg_z))
-dnl 	__(add imm1,imm0,nargs)
-dnl 1:
-dnl 	__(la nargs,-node_size(nargs))
-dnl 	__(cmpri(cr1,nargs,0))
-dnl 	__(ldr temp1,[vsp,#0])
-dnl 	__(la vsp,node_size(vsp))
-dnl 	__(stru(temp1,-node_size(imm1)))
-dnl 	__(bne cr1,1b)
-dnl 2:
-dnl 	__(bx lr)
-dnl 
-dnl 	
+dnl  __(mov arg_z,#nil_value)
+dnl  __(bx lr)
+dnl  
+dnl  
 dnl         
-dnl 
-dnl _spentry(setqsym)
-dnl 	__(ldr imm0,[arg_y,#symbol.flags])
-dnl 	__(andi. imm0,imm0,sym_vbit_const_mask)
-dnl 	__(beq _SPspecset)
-dnl 	__(mov arg_z,arg_y)
-dnl 	__(mov arg_y,#XCONST)
-dnl 	__(set_nargs(2))
-dnl 	__(b _SPksignalerr)
-dnl 
-dnl 
-dnl 	
+dnl  
+dnl 
+	
+/* We always have to create a stack frame (even if nargs is 0), so the compiler  */
+/* doesn't get confused.  */
+_spentry(stkconslist)
+        __(mov arg_z,#nil_value)
+C(stkconslist_star):           
+        __(mov temp2,nargs,lsl 1)
+        __(add temp2,temp2,#node_size)
+        __(mov imm0,temp2,lsl #num_subtag_bits-word_shift)
+        __(orr imm0,imm0,#subtag_u32_vector)
+        __(add temp2,temp2,#node_size)
+        __(mov imm1,#0)
+        __(mov temp1,sp)
+        __(str imm0,[sp,-temp2]!)
+        __(add temp2,sp,#dnode_size)
+        __(str imm1,[sp,#node_size])
+        __(mov imm0,#subtag_simple_vector)
+        __(b 2f)
+1:      __(str imm1,[temp1,#-node_size]!)
+        __(str imm1,[temp1,#-node_size]!)
+2:      __(cmp temp2,temp1)
+        __(bne 1b)
+        __(strb imm0,[sp,#0])
+        __(add imm1,sp,#dnode_size+fulltag_cons)
+        __(cmp nargs,#0)
+        __(b 4f)
+1:      __(vpop1(temp0))
+        __(_rplaca(imm1,temp0))
+        __(_rplacd(imm1,arg_z))
+        __(mov arg_z,imm1)
+        __(add imm1,imm1,#cons.size)
+        __(subs nargs,nargs,#node_size)
+4:
+        __(bne 1b)
+        __(bx lr)
+ 
+/* do list*: last arg in arg_z, all others vpushed,  */
+/* nargs set to #args vpushed.  */
+_spentry(stkconslist_star)
+        __(b C(stkconslist_star))
+
+/* Make a stack-consed simple-vector out of the NARGS objects  */
+/* on top of the vstack; return it in arg_z.  */
+_spentry(mkstackv)
+        __(dnode_align(imm1,nargs,node_size))
+        __(mov imm0,nargs,lsl #num_subtag_bits-fixnumshift)
+        __(orr imm0,imm0,#subtag_u32_vector)
+        __(mov temp1,sp)
+        __(str imm0,[sp,-imm1]!)
+        __(mov temp2,#0)
+        __(str temp0,[sp,#node_size])
+        __(add sp,temp0,#dnode_size)
+        __(mov imm0,#subtag_simple_vector)
+        __(b 2f)
+1:      __(str temp2,[temp1,#-node_size]!)
+        __(str temp2,[temp1,#-node_size]!)
+2:      __(cmp temp1,temp0)
+        __(bne 1b)
+        __(strb imm0,[sp,#0])
+        __(add arg_z,sp,#fulltag_misc)
+        __(add imm0,arg_z,#misc_data_offset)
+        __(add imm1,imm0,nargs)
+        __(b 4f)
+3:      __(vpop1(arg_y))
+        __(str arg_y,[imm1,#-node_size]!)
+        __(sub nargs,nargs,#node_size)
+4:      __(cmp nargs,#0)
+        __(bne 3b)
+        __(bx lr)
+	
+_spentry(setqsym)
+        __(ldr imm0,[arg_y,#symbol.flags])
+        __(tst imm0,#sym_vbit_const_mask)
+        __(beq _SPspecset)
+        __(mov arg_z,arg_y)
+        __(mov arg_y,#XCONST)
+        __(set_nargs(2))
+        __(b _SPksignalerr)
+
+
+
 dnl _spentry(progvsave)
-dnl 	/* Error if arg_z isn't a proper list.  That's unlikely, */
-dnl 	/* but it's better to check now than to crash later. */
-dnl 	
-dnl 	__(cmpri(arg_z,nil_value))
-dnl 	__(mov arg_x,arg_z)	/* fast  */
-dnl 	__(mov temp1,arg_z)	/* slow  */
-dnl 	__(beq 9f)		/* Null list is proper  */
-dnl 0:	
-dnl 	__(trap_unless_list(arg_x,imm0))
-dnl 	__(_cdr(temp2,arg_x))	/* (null (cdr fast)) ?  */
-dnl 	__(cmpri(cr3,temp2,nil_value))
-dnl 	__(trap_unless_list(temp2,imm0,cr0))
-dnl 	__(_cdr(arg_x,temp2))
-dnl 	__(beq cr3,9f)
-dnl 	__(_cdr(temp1,temp1))
-dnl 	__(cmpr(arg_x,temp1))
-dnl 	__(bne 0b)
-dnl 	__(mov arg_y,#XIMPROPERLIST)
-dnl 	__(set_nargs(2))
-dnl 	__(b _SPksignalerr)
-dnl 9:	/* Whew 	 */
-dnl 	
+dnl  /* Error if arg_z isn't a proper list.  That's unlikely, */
+dnl  /* but it's better to check now than to crash later. */
+dnl  
+dnl  __(cmpri(arg_z,nil_value))
+dnl  __(mov arg_x,arg_z) /* fast  */
+dnl  __(mov temp1,arg_z) /* slow  */
+dnl  __(beq 9f)  /* Null list is proper  */
+dnl 0: 
+dnl  __(trap_unless_list(arg_x,imm0))
+dnl  __(_cdr(temp2,arg_x)) /* (null (cdr fast)) ?  */
+dnl  __(cmpri(cr3,temp2,nil_value))
+dnl  __(trap_unless_list(temp2,imm0,cr0))
+dnl  __(_cdr(arg_x,temp2))
+dnl  __(beq cr3,9f)
+dnl  __(_cdr(temp1,temp1))
+dnl  __(cmpr(arg_x,temp1))
+dnl  __(bne 0b)
+dnl  __(mov arg_y,#XIMPROPERLIST)
+dnl  __(set_nargs(2))
+dnl  __(b _SPksignalerr)
+dnl 9: /* Whew   */
+dnl  
 dnl         /* Next, determine the length of arg_y.  We  */
 dnl         /* know that it's a proper list.  */
-dnl 	__(mov imm0,#-node_size)
-dnl 	__(mov arg_x,arg_y)
+dnl  __(mov imm0,#-node_size)
+dnl  __(mov arg_x,arg_y)
 dnl 1:
-dnl 	__(cmpri(cr0,arg_x,nil_value))
-dnl 	__(la imm0,node_size(imm0))
-dnl 	__(_cdr(arg_x,arg_x))
-dnl 	__(bne 1b)
-dnl 	/* imm0 is now (boxed) triplet count.  */
-dnl 	/* Determine word count, add 1 (to align), and make room.  */
-dnl 	/* if count is 0, make an empty tsp frame and exit  */
-dnl 	__(cmpri(cr0,imm0,0))
-dnl 	__(add imm1,imm0,imm0)
-dnl 	__(add imm1,imm1,imm0)
+dnl  __(cmpri(cr0,arg_x,nil_value))
+dnl  __(la imm0,node_size(imm0))
+dnl  __(_cdr(arg_x,arg_x))
+dnl  __(bne 1b)
+dnl  /* imm0 is now (boxed) triplet count.  */
+dnl  /* Determine word count, add 1 (to align), and make room.  */
+dnl  /* if count is 0, make an empty tsp frame and exit  */
+dnl  __(cmpri(cr0,imm0,0))
+dnl  __(add imm1,imm0,imm0)
+dnl  __(add imm1,imm1,imm0)
 dnl         __(dnode_align(imm1,imm1,node_size))
-dnl 	__(bne+ cr0,2f)
-dnl 	 __(TSP_Alloc_Fixed_Boxed(2*node_size))
-dnl 	 __(bx lr)
+dnl  __(bne+ cr0,2f)
+dnl   __(TSP_Alloc_Fixed_Boxed(2*node_size))
+dnl   __(bx lr)
 dnl 2:
-dnl 	__(la imm1,tsp_frame.fixed_overhead(imm1))	/* tsp header  */
-dnl 	__(TSP_Alloc_Var_Boxed_nz(imm1,imm2))
-dnl 	__(str(imm0,tsp_frame.data_offset(tsp)))
-dnl 	__(ldr imm2,[tsp,#tsp_frame.backlink])
-dnl 	__(mov arg_x,arg_y)
-dnl 	__(ldr imm1,[rcontext,#tcr.db_link])
+dnl  __(la imm1,tsp_frame.fixed_overhead(imm1)) /* tsp header  */
+dnl  __(TSP_Alloc_Var_Boxed_nz(imm1,imm2))
+dnl  __(str(imm0,tsp_frame.data_offset(tsp)))
+dnl  __(ldr imm2,[tsp,#tsp_frame.backlink])
+dnl  __(mov arg_x,arg_y)
+dnl  __(ldr imm1,[rcontext,#tcr.db_link])
 dnl         __(ldr imm3,[rcontext,#tcr.tlb_limit])
 dnl 3:
 dnl         __(cmpri(cr1,arg_z,nil_value))
-dnl 	__(_car(temp0,arg_x))
+dnl  __(_car(temp0,arg_x))
 dnl         __(ldr imm0,[temp0,#symbol.binding_index])
-dnl 	__(_cdr(arg_x,arg_x))
+dnl  __(_cdr(arg_x,arg_x))
 dnl         __(trlle(imm3,imm0))
 dnl         __(ldr imm4,[rcontext,#tcr.tlb_pointer]) /* Need to reload after trap  */
 dnl         __(ldrx(temp3,imm4,imm0))
-dnl 	__(cmpri(cr0,arg_x,nil_value))
+dnl  __(cmpri(cr0,arg_x,nil_value))
 dnl         __(mov temp2,#unbound_marker)
 dnl         __(beq cr1,4f)
-dnl 	__(_car(temp2,arg_z))
-dnl 	__(_cdr(arg_z,arg_z))
+dnl  __(_car(temp2,arg_z))
+dnl  __(_cdr(arg_z,arg_z))
 dnl 4:      __(push(temp3,imm2))
-dnl 	__(push(imm0,imm2))
-dnl 	__(push(imm1,imm2))
+dnl  __(push(imm0,imm2))
+dnl  __(push(imm1,imm2))
 dnl         __(str temp2,imm4,imm0)
-dnl 	__(mov imm1,imm2)
-dnl 	__(bne cr0,3b)
-dnl 	__(str(imm2,tcr.db_link(rcontext)))
-dnl 	__(bx lr)
-dnl 
-dnl 	
+dnl  __(mov imm1,imm2)
+dnl  __(bne cr0,3b)
+dnl  __(str(imm2,tcr.db_link(rcontext)))
+dnl  __(bx lr)
+dnl 
+dnl  
+	
 dnl /* Allocate a miscobj on the temp stack.  (Push a frame on the tsp and  */
 dnl /* heap-cons the object if there's no room on the tstack.)  */
 dnl _spentry(stack_misc_alloc)
-dnl 	 __(rlwinm. imm2,arg_y,32-fixnumshift,0,(8+fixnumshift)-1)
-dnl 	 __(unbox_fixnum(imm0,arg_z))
-dnl 	 __(extract_fulltag(imm1,imm0))
-dnl 	 __(bne- cr0,9f)
-dnl 	 __(cmpri(cr0,imm1,fulltag_nodeheader))
-dnl 	 __(mov imm3,imm0)
-dnl 	 __(cmplri(cr1,imm0,max_32_bit_ivector_subtag))
-dnl 	 __(rlwimi imm0,arg_y,num_subtag_bits-fixnum_shift,0,31-num_subtag_bits) /* imm0 now = header  */
-dnl 	 __(mov imm2,arg_y)
-dnl 	 __(beq cr0,1f)	/* do probe if node object  */
-dnl         		/* (fixnum element count = byte count).  */
-dnl 	 __(cmplri(cr0,imm3,max_16_bit_ivector_subtag))
-dnl 	 __(bng cr1,1f) /* do probe if 32-bit imm object  */
-dnl 	 __(cmplri(cr1,imm3,max_8_bit_ivector_subtag))
-dnl 	 __(srwi imm2,imm2,1)
-dnl 	 __(bgt cr0,3f)
-dnl 	 __(bgt cr1,1f)
-dnl 	 __(srwi imm2,imm2,1)
+dnl   __(rlwinm. imm2,arg_y,32-fixnumshift,0,(8+fixnumshift)-1)
+dnl   __(unbox_fixnum(imm0,arg_z))
+dnl   __(extract_fulltag(imm1,imm0))
+dnl   __(bne- cr0,9f)
+dnl   __(cmpri(cr0,imm1,fulltag_nodeheader))
+dnl   __(mov imm3,imm0)
+dnl   __(cmplri(cr1,imm0,max_32_bit_ivector_subtag))
+dnl   __(rlwimi imm0,arg_y,num_subtag_bits-fixnum_shift,0,31-num_subtag_bits) /* imm0 now = header  */
+dnl   __(mov imm2,arg_y)
+dnl   __(beq cr0,1f) /* do probe if node object  */
+dnl           /* (fixnum element count = byte count).  */
+dnl   __(cmplri(cr0,imm3,max_16_bit_ivector_subtag))
+dnl   __(bng cr1,1f) /* do probe if 32-bit imm object  */
+dnl   __(cmplri(cr1,imm3,max_8_bit_ivector_subtag))
+dnl   __(srwi imm2,imm2,1)
+dnl   __(bgt cr0,3f)
+dnl   __(bgt cr1,1f)
+dnl   __(srwi imm2,imm2,1)
 dnl /* imm2 now = byte count.  Add 4 for header, 7 to align, then  */
-dnl /*	clear low three bits.  */
+dnl /* clear low three bits.  */
 dnl 1:
 dnl          __(dnode_align(imm3,imm2,tsp_frame.fixed_overhead+node_size))
-dnl 	 __(cmplri(cr0,imm3,tstack_alloc_limit)) /* more than limit ?  */
-dnl 	 __(bgt- cr0,0f)
-dnl 	 __(TSP_Alloc_Var_Boxed_nz(imm3,imm4))
+dnl   __(cmplri(cr0,imm3,tstack_alloc_limit)) /* more than limit ?  */
+dnl   __(bgt- cr0,0f)
+dnl   __(TSP_Alloc_Var_Boxed_nz(imm3,imm4))
 dnl 
 dnl /* Slap the header on the vector, then return.  */
-dnl 	 __(str(imm0,tsp_frame.data_offset(tsp)))
-dnl 	 __(la arg_z,tsp_frame.data_offset+fulltag_misc(tsp))
-dnl 	 __(bx lr)
+dnl   __(str(imm0,tsp_frame.data_offset(tsp)))
+dnl   __(la arg_z,tsp_frame.data_offset+fulltag_misc(tsp))
+dnl   __(bx lr)
 dnl 9: 
 dnl 
@@ -1186,97 +1172,84 @@
 dnl /* sure that there's an empty tsp frame to keep the compiler happy.  */
 dnl 0:
-dnl 	 __(TSP_Alloc_Fixed_Unboxed(0))
-dnl 	 __(b _SPmisc_alloc)
+dnl   __(TSP_Alloc_Fixed_Unboxed(0))
+dnl   __(b _SPmisc_alloc)
 dnl 3:
-dnl 	 __(cmplri(imm3,subtag_double_float_vector))
-dnl 	 __(slwi imm2,arg_y,1)
-dnl 	 __(beq 1b)
-dnl 	 __(addi imm2,arg_y,7<<fixnumshift)
-dnl 	 __(srwi imm2,imm2,fixnumshift+3)
-dnl 	 __(b 1b)
-dnl 
-dnl         
-dnl /* subtype (boxed, of course) is vpushed, followed by nargs bytes worth of  */
-dnl /* initial-contents.  Note that this can be used to cons any type of initialized  */
-dnl /* node-header'ed misc object (symbols, closures, ...) as well as vector-like  */
-dnl /* objects.  */
-dnl /* Note that we're guaranteed to win (or force GC, or run out of memory)  */
-dnl /* because nargs < 32K.  */
-dnl _spentry(gvector)
-dnl         __(subi nargs,nargs,node_size)
-dnl 	__(ldrx(arg_z,vsp,nargs))
-dnl 	__(unbox_fixnum(imm0,arg_z))
-dnl         __ifdef(`PPC64')
-dnl          __(sldi imm1,nargs,num_subtag_bits-fixnum_shift)
-dnl          __(or imm0,imm0,imm1)
-dnl         __else
-dnl 	 __(rlwimi imm0,nargs,num_subtag_bits-fixnum_shift,0,31-num_subtag_bits)
-dnl         __endif
-dnl         __(dnode_align(imm1,nargs,node_size))
-dnl 	__(Misc_Alloc(arg_z,imm0,imm1))
-dnl 	__(mov imm1,nargs)
-dnl 	__(la imm2,misc_data_offset(imm1))
-dnl 	__(b 2f)
-dnl 1:
-dnl 	__(str temp0,arg_z,imm2)
-dnl 2:
-dnl 	__(subi imm1,imm1,node_size)
-dnl 	__(cmpri(cr0,imm1,0))
-dnl 	__(subi imm2,imm2,node_size)
-dnl 	__(vpop(temp0))         /* Note the intentional fencepost: */
-dnl 				/* discard the subtype as well.  */
-dnl 	__(bge cr0,1b)
-dnl 	__(bx lr)
-dnl 	
-dnl 	
-dnl 	
-dnl 	
-dnl _spentry(fitvals)
-dnl 	__(subf. imm0,nargs,imm0)
-dnl 	__(mov imm1,#nil_value)
-dnl 	__(bge 2f)
-dnl 	__(sub vsp,vsp,imm0)
-dnl 	__(bx lr)
-dnl 1:
-dnl 	__(subic. imm0,imm0,node_size)
-dnl 	__(vpush1(imm1))
-dnl 	__(addi nargs,nargs,node_size)
-dnl 2:
-dnl 	__(bne 1b)
-dnl 	__(bx lr)
-dnl 
-dnl 
-dnl _spentry(nthvalue)
-dnl 	__(add imm0,vsp,nargs)
-dnl 	__(ldr imm1,[imm0,#0])
-dnl 	__(cmplr(imm1,nargs))	/*  do unsigned compare:	 if (n < 0) => nil.  */
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(neg imm1,imm1)
-dnl 	__(subi imm1,imm1,node_size)
-dnl 	__(bge 1f)
-dnl 	__(ldrx(arg_z,imm0,imm1))
-dnl 1:	
-dnl 	__(la vsp,node_size(imm0))
-dnl 	__(bx lr)
-dnl         
-dnl 
-dnl         	
-dnl /* Provide default (NIL) values for &optional arguments; imm0 is  */
-dnl /* the (fixnum) upper limit on the total of required and &optional  */
-dnl /* arguments.  nargs is preserved, all arguments wind up on the  */
-dnl /* vstack.  */
-dnl _spentry(default_optional_args)
-dnl 	__(cmplr( cr7,nargs,imm0))
-dnl 	__(mov imm5,#nil_value)
-dnl 	__(vpush_argregs())
-dnl 	__(mov imm1,nargs)
-dnl 	__(bgelr cr7)
-dnl 1:	
-dnl 	__(addi imm1,imm1,fixnum_one)
-dnl 	__(cmpr(cr0,imm1,imm0))
-dnl 	__(vpush1(imm5))
-dnl 	__(bne cr0,1b)
-dnl 	__(bx lr)
-dnl 	
+dnl   __(cmplri(imm3,subtag_double_float_vector))
+dnl   __(slwi imm2,arg_y,1)
+dnl   __(beq 1b)
+dnl   __(addi imm2,arg_y,7<<fixnumshift)
+dnl   __(srwi imm2,imm2,fixnumshift+3)
+dnl   __(b 1b)
+
+
+/* subtype (boxed, of course) is vpushed, followed by nargs bytes worth of  */
+/* initial-contents.  Note that this can be used to cons any type of initialized  */
+/* node-header'ed misc object (symbols, closures, ...) as well as vector-like  */
+/* objects.  */
+
+_spentry(gvector)
+        __(sub nargs,nargs,#node_size)
+        __(ldr arg_z,[vsp,nargs])
+        __(unbox_fixnum(imm0,arg_z))
+        __(orr imm0,imm0,nargs,lsl #num_subtag_bits-fixnum_shift)
+        __(dnode_align(imm1,nargs,node_size))
+        __(Misc_Alloc(arg_z,imm0,imm1))
+        __(mov imm1,nargs)
+        __(add imm2,imm1,#misc_data_offset)
+        __(b 2f)
+1:
+        __(str temp0,[arg_z,imm2])
+2:
+        __(sub imm1,imm1,#node_size)
+        __(cmp imm1,#0)
+        __(sub imm2,imm2,#node_size)
+        __(vpop1(temp0))        /* Note the intentional fencepost: */
+                                /* discard the subtype as well.  */
+        __(bge 1b)
+        __(bx lr)
+
+_spentry(fitvals)
+        __(subs imm0,imm0,nargs)
+        __(mov imm1,#nil_value)
+        __(sublt vsp,vsp,imm0)
+        __(bxlt lr)
+        __(b 2f)
+1:
+        __(subs imm0,imm0,#node_size)
+        __(vpush1(imm1))	
+        __(add nargs,nargs,#node_size)
+2:
+        __(bne 1b)
+        __(bx lr)
+
+
+_spentry(nthvalue)
+        __(add imm0,vsp,nargs)
+        __(ldr imm1,[imm0,#0])
+        __(cmp imm1,nargs) /*  do unsigned compare:  if (n < 0) => nil.  */
+        __(mov arg_z,#nil_value)
+        __(rsb imm1,imm1,#0)
+        __(sub imm1,imm1,#node_size)
+        __(ldrlo arg_z,[imm0,imm1])
+        __(add vsp,imm0,#node_size)
+        __(bx lr)
+
+/* Provide default (NIL) values for &optional arguments; imm0 is  */
+/* the (fixnum) upper limit on the total of required and &optional  */
+/* arguments.  nargs is preserved, all arguments wind up on the  */
+/* vstack.  */
+_spentry(default_optional_args)
+        __(vpush_argregs())
+        __(cmp nargs,imm0)
+        __(mov arg_z,#nil_value)
+        __(mov imm1,nargs)
+        __(bxhs lr)
+1: 
+        __(add imm1,imm1,#fixnum_one)
+        __(cmp imm1,imm0)
+        __(vpush1(arg_z))
+        __(bne 1b)
+        __(bx lr)
+
 dnl /* Indicate whether &optional arguments were actually supplied.  nargs  */
 dnl /* contains the actual arg count (minus the number of required args);  */
@@ -1284,104 +1257,78 @@
 dnl /* Note that nargs may be > imm0 if &rest/&key is involved.  */
 dnl _spentry(opt_supplied_p)
-dnl 	__(mov imm1,#0)
+dnl  __(mov imm1,#0)
 dnl 1:
-dnl 	/* (vpush (< imm1 nargs))  */
-dnl         __ifdef(`PPC64')
-dnl 	 __(xor imm2,imm1,nargs)
-dnl 	 __(sradi imm2,imm2,63)
-dnl 	 __(or imm2,imm2,imm1)
-dnl 	 __(addi imm1,imm1,fixnumone)
-dnl 	 __(cmpr(cr0,imm1,imm0))
-dnl 	 __(subf imm2,nargs,imm2)
-dnl 	 __(srdi imm2,imm2,63)
-dnl          __(mulli imm2,imm2,t_offset)
-dnl 	 __(addi imm2,imm2,nil_value)
-dnl 	 __(vpush1(imm2))
-dnl 	 __(bne cr0,1b)
-dnl 	 __(bx lr)
-dnl         __else
-dnl 	 __(xor imm2,imm1,nargs)
-dnl 	 __(srawi imm2,imm2,31)
-dnl 	 __(or imm2,imm2,imm1)
-dnl 	 __(addi imm1,imm1,fixnumone)
-dnl 	 __(cmpr(cr0,imm1,imm0))
-dnl 	 __(subf imm2,nargs,imm2)
-dnl 	 __(srwi imm2,imm2,31)
-dnl 	 __(insrwi imm2,imm2,1,27)
-dnl 	 __(addi imm2,imm2,nil_value)
-dnl 	 __(vpush1(imm2))
-dnl 	 __(bne cr0,1b)
-dnl 	 __(bx lr)
-dnl         __endif
-dnl 	
-dnl 
-dnl 
-dnl /* If nargs is <= imm0, vpush a nil.  Otherwise, cons a list of length  */
-dnl /* (- nargs imm0) and vpush it.  */
-dnl /* Use this entry point to heap-cons a simple &rest arg.  */
-dnl _spentry(heap_rest_arg)
-dnl 	__(mov imm0,#0)
-dnl 	__(vpush_argregs())
-dnl  	__(sub imm1,nargs,imm0)
-dnl 	__(cmpri(imm1,0))
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(b 2f)
-dnl 1:
-dnl 	__(ldr temp0,[vsp,#0])
-dnl 	__(cmpri(imm1,fixnum_one))
-dnl 	__(la vsp,node_size(vsp))
-dnl 	__(Cons(arg_z,temp0,arg_z))
-dnl 	__(subi imm1,imm1,fixnum_one)
-dnl 2:
-dnl 	__(bgt 1b)
-dnl 	__(vpush1(arg_z))
-dnl 	__(bx lr)
-dnl 
-dnl 	
-dnl /* And this entry point when the argument registers haven't yet been  */
-dnl /* vpushed (as is typically the case when required/&rest but no  */
-dnl /* &optional/&key.)  */
-dnl _spentry(req_heap_rest_arg)
-dnl 	__(vpush_argregs())
-dnl  	__(sub imm1,nargs,imm0)
-dnl 	__(cmpri(imm1,0))
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(b 2f)
-dnl 1:
-dnl 	__(ldr temp0,[vsp,#0])
-dnl 	__(cmpri(imm1,fixnum_one))
-dnl 	__(la vsp,node_size(vsp))
-dnl 	__(Cons(arg_z,temp0,arg_z))
-dnl 	__(subi imm1,imm1,fixnum_one)
-dnl 2:
-dnl 	__(bgt 1b)
-dnl 	__(vpush1(arg_z))
-dnl 	__(bx lr)
-dnl 
-dnl 
-dnl _spentry(heap_cons_rest_arg)
-dnl  	__(sub imm1,nargs,imm0)
-dnl 	__(cmpri(imm1,0))
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(b 2f)
-dnl 1:
-dnl 	__(ldr temp0,[vsp,#0])
-dnl 	__(cmpri(imm1,fixnum_one))
-dnl 	__(la vsp,node_size(vsp))
-dnl 	__(Cons(arg_z,temp0,arg_z))
-dnl 	__(subi imm1,imm1,fixnum_one)
-dnl 2:
-dnl 	__(bgt 1b)
-dnl 	__(vpush1(arg_z))
-dnl 	__(bx lr)
-dnl 
-dnl 	
+dnl  /* (vpush (< imm1 nargs))  */
+dnl   __(xor imm2,imm1,nargs)
+dnl   __(srawi imm2,imm2,31)
+dnl   __(or imm2,imm2,imm1)
+dnl   __(addi imm1,imm1,fixnumone)
+dnl   __(cmpr(cr0,imm1,imm0))
+dnl   __(subf imm2,nargs,imm2)
+dnl   __(srwi imm2,imm2,31)
+dnl   __(insrwi imm2,imm2,1,27)
+dnl   __(addi imm2,imm2,nil_value)
+dnl   __(vpush1(imm2))
+dnl   __(bne cr0,1b)
+dnl   __(bx lr)
+dnl  
+dnl 
+dnl 
+/* Cons a list of length nargs  and vpush it.  */
+/* Use this entry point to heap-cons a simple &rest arg.  */
+_spentry(heap_rest_arg)
+        __(vpush_argregs())
+        __(movs imm1,nargs)
+        __(mov arg_z,#nil_value)
+        __(b 2f)
+1:
+        __(vpop1(arg_y))
+        __(Cons(arg_z,arg_y,arg_z))
+        __(subs imm1,imm1,#fixnum_one)
+2:
+        __(bne 1b)
+        __(vpush1(arg_z))
+        __(bx lr)
+
+ 
+/* And this entry point when the argument registers haven't yet been  */
+/* vpushed (as is typically the case when required/&rest but no  */
+/* &optional/&key.)  */
+_spentry(req_heap_rest_arg)
+        __(vpush_argregs())
+        __(subs imm1,nargs,imm0)
+        __(mov arg_z,#nil_value)
+        __(b 2f)
+1:
+        __(vpop1(arg_y))
+        __(Cons(arg_z,arg_y,arg_z))
+        __(subs imm1,imm1,#fixnum_one)
+2:
+        __(bgt 1b)
+        __(vpush1(arg_z))
+        __(bx lr)
+
+/* Here where argregs already pushed */
+_spentry(heap_cons_rest_arg)
+        __(subs imm1,nargs,imm0)
+        __(mov arg_z,#nil_value)
+        __(b 2f)
+1:
+        __(vpop1(arg_y))
+        __(Cons(arg_z,arg_y,arg_z))
+        __(subs imm1,imm1,#fixnum_one)
+2:
+        __(bgt 1b)
+        __(vpush1(arg_z))
+        __(bx lr)
+dnl 
+dnl  
 dnl _spentry(simple_keywords)
-dnl 	__(mov imm0,#0)
+dnl  __(mov imm0,#0)
 dnl         __(vpush_argregs())
 dnl         __(b _SPkeyword_bind)
 dnl                 
 dnl _spentry(keyword_args)
-dnl 	__(vpush_argregs())
+dnl  __(vpush_argregs())
 dnl         __(b _SPkeyword_bind)
 dnl 
@@ -1413,65 +1360,65 @@
 dnl         /* how many args have actually been pushed.  Ordinarily, that'd  */
 dnl         /* be "nargs", but we may have pushed more args than we received  */
-dnl 	/* if we had to default any &optionals.  */
-dnl 	/* So, the number of args pushed so far is the larger of nargs  */
-dnl 	/* and the (canonical) total of required/&optional args received.  */
-dnl 	__(cmpr(cr0,nargs,imm0))
-dnl 	__(add arg_z,vsp,nargs)
-dnl 	__(bge+ cr0,1f)
-dnl 	__(add arg_z,vsp,imm0)
+dnl  /* if we had to default any &optionals.  */
+dnl  /* So, the number of args pushed so far is the larger of nargs  */
+dnl  /* and the (canonical) total of required/&optional args received.  */
+dnl  __(cmpr(cr0,nargs,imm0))
+dnl  __(add arg_z,vsp,nargs)
+dnl  __(bge+ cr0,1f)
+dnl  __(add arg_z,vsp,imm0)
 dnl 1:
-dnl 	__(build_lisp_frame(fn,loc_pc,arg_z))
-dnl 	__(mov fn,nfn)
-dnl 	/* If there are key/value pairs to consider, we slide them down  */
-dnl 	/* the vstack to make room for the value/supplied-p pairs.  */
-dnl 	/* The first step in that operation involves pushing imm3 pairs  */
-dnl 	/* of NILs.  */
-dnl 	/* If there aren't any such pairs, the first step is the last  */
-dnl 	/* step.  */
-dnl 	__(cmpri(cr0,imm3,0))
-dnl 	__(mov arg_z,#0)
-dnl 	__(sub imm1,nargs,imm0)
-dnl 	__(mov imm4,vsp)	/* in case odd keywords error  */
-dnl 	__(cmpri(cr1,imm1,0))
-dnl 	__(b 3f)
+dnl  __(build_lisp_frame(fn,loc_pc,arg_z))
+dnl  __(mov fn,nfn)
+dnl  /* If there are key/value pairs to consider, we slide them down  */
+dnl  /* the vstack to make room for the value/supplied-p pairs.  */
+dnl  /* The first step in that operation involves pushing imm3 pairs  */
+dnl  /* of NILs.  */
+dnl  /* If there aren't any such pairs, the first step is the last  */
+dnl  /* step.  */
+dnl  __(cmpri(cr0,imm3,0))
+dnl  __(mov arg_z,#0)
+dnl  __(sub imm1,nargs,imm0)
+dnl  __(mov imm4,vsp) /* in case odd keywords error  */
+dnl  __(cmpri(cr1,imm1,0))
+dnl  __(b 3f)
 dnl 2:
-dnl 	__(addi arg_z,arg_z,fixnum_one)
-dnl 	__(cmplr(cr0,arg_z,imm3))
-dnl 	__(mov imm5,#nil_value)
-dnl 	__(vpush1(imm5))
-dnl 	__(vpush1(imm5))
+dnl  __(addi arg_z,arg_z,fixnum_one)
+dnl  __(cmplr(cr0,arg_z,imm3))
+dnl  __(mov imm5,#nil_value)
+dnl  __(vpush1(imm5))
+dnl  __(vpush1(imm5))
 dnl 3:
-dnl 	__(bne cr0,2b)
-dnl 	__(andi. arg_z,imm1,fixnum_one)
-dnl 	__(blelr cr1)	/* no keyword/value pairs to consider.  */
-dnl 	__(bne cr0,odd_keywords)
-dnl 	/* We have key/value pairs.  Move them to the top of the vstack,  */
-dnl 	/* then set the value/supplied-p vars to NIL.  */
-dnl 	/* Have to use some save regs to do this.  */
-dnl 	__(vpush1(limit))
-dnl 	__(vpush1(valptr))
-dnl 	__(vpush1(varptr))
-dnl 	/* recompute ptr to user args in case stack overflowed  */
-dnl 	__(add imm4,vsp,imm3)
-dnl 	__(add imm4,imm4,imm3)
-dnl 	__(addi imm4,imm4,3*node_size)
-dnl 	/* error if odd number of keyword/value args  */
-dnl 	__(mov varptr,imm4)
-dnl 	__(la limit,3*node_size(vsp))
-dnl 	__(mov valptr,limit)
-dnl 	__(mov arg_z,imm1)
+dnl  __(bne cr0,2b)
+dnl  __(andi. arg_z,imm1,fixnum_one)
+dnl  __(blelr cr1) /* no keyword/value pairs to consider.  */
+dnl  __(bne cr0,odd_keywords)
+dnl  /* We have key/value pairs.  Move them to the top of the vstack,  */
+dnl  /* then set the value/supplied-p vars to NIL.  */
+dnl  /* Have to use some save regs to do this.  */
+dnl  __(vpush1(limit))
+dnl  __(vpush1(valptr))
+dnl  __(vpush1(varptr))
+dnl  /* recompute ptr to user args in case stack overflowed  */
+dnl  __(add imm4,vsp,imm3)
+dnl  __(add imm4,imm4,imm3)
+dnl  __(addi imm4,imm4,3*node_size)
+dnl  /* error if odd number of keyword/value args  */
+dnl  __(mov varptr,imm4)
+dnl  __(la limit,3*node_size(vsp))
+dnl  __(mov valptr,limit)
+dnl  __(mov arg_z,imm1)
 dnl 4:
-dnl 	__(mov imm4,#nil_value)
-dnl 	__(subi arg_z,arg_z,2<<fixnumshift)
-dnl 	__(cmplri(cr0,arg_z,0))
-dnl 	__(ldr arg_x,[varptr,#node_size*0])
-dnl 	__(ldr arg_y,[varptr,#node_size*1])
-dnl 	__(str(imm4,node_size*0(varptr)))
-dnl 	__(str(imm4,node_size*1(varptr)))
-dnl 	__(la varptr,node_size*2(varptr))
-dnl 	__(str(arg_x,node_size*0(valptr)))
-dnl 	__(str(arg_y,node_size*1(valptr)))
-dnl 	__(la valptr,node_size*2(valptr))
-dnl 	__(bne cr0,4b)
+dnl  __(mov imm4,#nil_value)
+dnl  __(subi arg_z,arg_z,2<<fixnumshift)
+dnl  __(cmplri(cr0,arg_z,0))
+dnl  __(ldr arg_x,[varptr,#node_size*0])
+dnl  __(ldr arg_y,[varptr,#node_size*1])
+dnl  __(str(imm4,node_size*0(varptr)))
+dnl  __(str(imm4,node_size*1(varptr)))
+dnl  __(la varptr,node_size*2(varptr))
+dnl  __(str(arg_x,node_size*0(valptr)))
+dnl  __(str(arg_y,node_size*1(valptr)))
+dnl  __(la valptr,node_size*2(valptr))
+dnl  __(bne cr0,4b)
 dnl 
 dnl 
@@ -1485,62 +1432,62 @@
 dnl         /* When done, complain if any unknown keywords were found and that  */
 dnl         /* situation was unexpected.  */
-dnl 	__(mov imm4,valptr)
+dnl  __(mov imm4,valptr)
 dnl 5:
 dnl         __(cmpri(cr0,keyword_flags,16<<fixnumshift)) /* seen :a-o-k yet ?  */
-dnl 	__(ldru(arg_z,-node_size(valptr)))
-dnl 	__(ldru(arg_y,-node_size(valptr)))
-dnl 	__(cmpri(cr1,arg_y,nil_value))
-dnl 	__(mov arg_x,#nrs.kallowotherkeys)
+dnl  __(ldru(arg_z,-node_size(valptr)))
+dnl  __(ldru(arg_y,-node_size(valptr)))
+dnl  __(cmpri(cr1,arg_y,nil_value))
+dnl  __(mov arg_x,#nrs.kallowotherkeys)
 dnl         /* cr6_eq <- (eq current-keyword :allow-other-keys)  */
-dnl 	__(cmpr(cr6,arg_x,arg_z))
-dnl 	__(cmpr(cr7,valptr,limit))
-dnl 	__(bne cr6,6f)
+dnl  __(cmpr(cr6,arg_x,arg_z))
+dnl  __(cmpr(cr7,valptr,limit))
+dnl  __(bne cr6,6f)
 dnl         __(bge cr0,6f) /* Already seen :allow-other-keys  */
 dnl         __(ori keyword_flags,keyword_flags,16<<fixnumshift)
-dnl 	__(beq cr1,6f)
-dnl 	__(ori keyword_flags,keyword_flags,fixnum_one)
+dnl  __(beq cr1,6f)
+dnl  __(ori keyword_flags,keyword_flags,fixnum_one)
 dnl 6:
-dnl 	__(cmpri(cr1,imm3,0))
-dnl 	__(mov imm1,#misc_data_offset)
-dnl 	__(mov imm0,#0)
-dnl 	__(b 8f)
+dnl  __(cmpri(cr1,imm3,0))
+dnl  __(mov imm1,#misc_data_offset)
+dnl  __(mov imm0,#0)
+dnl  __(b 8f)
 dnl 7:
-dnl 	__(addi imm0,imm0,fixnum_one)
-dnl 	__(cmpr(cr1,imm0,imm3))
-dnl 	__(ldrx(arg_x,keyword_vector,imm1))
-dnl 	__(cmpr(cr0,arg_x,arg_z))
-dnl 	__(addi imm1,imm1,fixnum_one)
-dnl 	__(bne cr0,8f)
-dnl 	__(add imm0,imm0,imm0)
-dnl 	__(sub imm0,varptr,imm0)
-dnl 	__(ldr arg_x,[imm0,#0])
-dnl 	__(cmpri(cr0,arg_x,nil_value))
-dnl 	__(mov arg_z,#t_value)
-dnl 	__(bne cr0,9f)
-dnl 	__(str(arg_y,node_size(imm0)))
-dnl 	__(str(arg_z,0(imm0)))
-dnl 	__(b 9f)
+dnl  __(addi imm0,imm0,fixnum_one)
+dnl  __(cmpr(cr1,imm0,imm3))
+dnl  __(ldrx(arg_x,keyword_vector,imm1))
+dnl  __(cmpr(cr0,arg_x,arg_z))
+dnl  __(addi imm1,imm1,fixnum_one)
+dnl  __(bne cr0,8f)
+dnl  __(add imm0,imm0,imm0)
+dnl  __(sub imm0,varptr,imm0)
+dnl  __(ldr arg_x,[imm0,#0])
+dnl  __(cmpri(cr0,arg_x,nil_value))
+dnl  __(mov arg_z,#t_value)
+dnl  __(bne cr0,9f)
+dnl  __(str(arg_y,node_size(imm0)))
+dnl  __(str(arg_z,0(imm0)))
+dnl  __(b 9f)
 dnl 8:
-dnl 	__(bne cr1,7b)
-dnl 	/* Unknown keyword. If it was :allow-other-keys, cr6_eq will still */
+dnl  __(bne cr1,7b)
+dnl  /* Unknown keyword. If it was :allow-other-keys, cr6_eq will still */
 dnl         /* be set.  */
 dnl         __(beq cr6,9f)
-dnl 	__(ori keyword_flags,keyword_flags,2<<fixnumshift)
+dnl  __(ori keyword_flags,keyword_flags,2<<fixnumshift)
 dnl 9:
-dnl 	__(bne cr7,5b)
-dnl 	__(vpop(varptr))
-dnl 	__(vpop(valptr))
-dnl 	__(vpop(limit))
-dnl 	/* All keyword/value pairs have been processed.  */
-dnl 	/* If we saw an unknown keyword and didn't expect to, error.  */
-dnl 	/* Unless bit 2 is set in the fixnum in keyword_flags, discard the  */
-dnl 	/* keyword/value pairs from the vstack.  */
-dnl 	__(andi. imm0,keyword_flags,(fixnum_one)|(2<<fixnumshift))
-dnl 	__(cmpri(cr0,imm0,2<<fixnumshift))
-dnl 	__(beq- cr0,badkeys)
-dnl 	__(andi. imm2,keyword_flags,4<<fixnumshift)
-dnl 	__(bnelr cr0)
-dnl 	__(mov vsp,imm4)
-dnl 	__(bx lr)
+dnl  __(bne cr7,5b)
+dnl  __(vpop(varptr))
+dnl  __(vpop(valptr))
+dnl  __(vpop(limit))
+dnl  /* All keyword/value pairs have been processed.  */
+dnl  /* If we saw an unknown keyword and didn't expect to, error.  */
+dnl  /* Unless bit 2 is set in the fixnum in keyword_flags, discard the  */
+dnl  /* keyword/value pairs from the vstack.  */
+dnl  __(andi. imm0,keyword_flags,(fixnum_one)|(2<<fixnumshift))
+dnl  __(cmpri(cr0,imm0,2<<fixnumshift))
+dnl  __(beq- cr0,badkeys)
+dnl  __(andi. imm2,keyword_flags,4<<fixnumshift)
+dnl  __(bnelr cr0)
+dnl  __(mov vsp,imm4)
+dnl  __(bx lr)
 dnl 
 dnl /* Signal an error.  We saved context on entry, so this thing doesn't  */
@@ -1554,505 +1501,65 @@
 dnl /* error with that list as an operand.  */
 dnl odd_keywords:
-dnl 	__(mov vsp,imm4)
-dnl 	__(mov nargs,imm1)
-dnl 	__(b 1f)
+dnl  __(mov vsp,imm4)
+dnl  __(mov nargs,imm1)
+dnl  __(b 1f)
 dnl badkeys:
-dnl 	__(sub nargs,imm4,vsp)
+dnl  __(sub nargs,imm4,vsp)
 dnl 1:
-dnl 	__(bl _SPconslist)
-dnl 	__(mov arg_y,#XBADKEYS)
-dnl 	__(set_nargs(2))
-dnl 	__(b _SPksignalerr)
-dnl 
-dnl /*  A PowerOpen ff-call.  arg_z is either a fixnum (word-aligned entrypoint) */
-dnl /*  or a macptr (whose address had better be word-aligned as well.)  A */
-dnl /*  PowerOpen stack frame is on top of the stack; 4 additional words (to */
-dnl /*  be used a a lisp frame) sit under the C frame. */
-dnl 
-dnl /*  Since we probably can't deal with FP exceptions in foreign code, we */
-dnl /*  disable them in the FPSCR, then check on return to see if any previously */
-dnl /*  enabled FP exceptions occurred. */
-dnl 
-dnl /*  As it turns out, we can share a lot of code with the eabi version of */
-dnl /*  ff-call.  Some things that happen up to the point of call differ between */
-dnl /*  the ABIs, but everything that happens after is the same. */
-dnl 
-dnl         
-dnl _spentry(poweropen_ffcall)
-dnl LocalLabelPrefix`'ffcall:                
-dnl 	__(mflr loc_pc)
-dnl 	__(vpush_saveregs())		/* Now we can use save0-save7 to point to stacks  */
-dnl 	__(mov save0,rcontext)	/* or address globals.  */
-dnl 	__(extract_typecode(imm0,arg_z))
-dnl 	__(cmpri(cr7,imm0,subtag_macptr))
-dnl 	__(ldr save1,[sp,#0])	/* bottom of reserved lisp frame  */
-dnl 	__(la save2,-lisp_frame.size(save1))	/* top of lisp frame */
-dnl         __(zero_doublewords save2,0,lisp_frame.size)
-dnl 	__(str(save1,lisp_frame.backlink(save2)))
-dnl 	__(str(save2,c_frame.backlink(sp)))
-dnl 	__(str(fn,lisp_frame.savefn(save2)))
-dnl 	__(str(loc_pc,lisp_frame.savelr(save2)))
-dnl 	__(str(vsp,lisp_frame.savevsp(save2)))
-dnl         __(mov nargs,arg_z)
-dnl        	__(bne cr7,1f)
-dnl 	__(ldr nargs,[arg_z,#macptr.address])
-dnl 1:
-dnl 	__(ldr save3,[rcontext,#tcr.cs_area])
-dnl 	__(str(save2,area.active(save3)))
-dnl 	__(str(allocptr,tcr.save_allocptr(rcontext)))
-dnl 	__(str(allocbase,tcr.save_allocbase(rcontext)))
-dnl 	__(str(tsp,tcr.save_tsp(rcontext)))
-dnl 	__(str(vsp,tcr.save_vsp(rcontext)))
-dnl 	__(str(rzero,tcr.ffi_exception(rcontext)))
-dnl 	__(mffs f0)
-dnl 	__(stfd f0,tcr.lisp_fpscr(rcontext))	/* remember lisp's fpscr  */
-dnl 	__(mtfsf 0xff,fp_zero)	/* zero foreign fpscr  */
-dnl 	__(mov r4,#TCR_STATE_FOREIGN)
-dnl 	__(str(r4,tcr.valence(rcontext)))
-dnl         __ifdef(`rTOC')
-dnl          __(ld rTOC,8(nargs))
-dnl          __(ld nargs,0(nargs))
-dnl         __else
-dnl 	 __(mov rcontext,#0)
-dnl         __endif
-dnl LocalLabelPrefix`'ffcall_setup: 
-dnl 	__(mtctr nargs)
-dnl 	__(ldr r3,[sp,#c_frame.param0])
-dnl 	__(ldr r4,[sp,#c_frame.param1])
-dnl 	__(ldr r5,[sp,#c_frame.param2])
-dnl 	__(ldr r6,[sp,#c_frame.param3])
-dnl 	__(ldr r7,[sp,#c_frame.param4])
-dnl 	__(ldr r8,[sp,#c_frame.param5])
-dnl 	__(ldr r9,[sp,#c_frame.param6])
-dnl 	__(ldr r10,[sp,#c_frame.param7])
-dnl 	/* Darwin is allegedly very picky about what register points */
-dnl 	/* to the function on entry.  */
-dnl 	__(mov r12,nargs)
-dnl LocalLabelPrefix`'ffcall_setup_end: 
-dnl LocalLabelPrefix`'ffcall_call:
-dnl 	__(bctrl)
-dnl LocalLabelPrefix`'ffcall_call_end:
-dnl 	/* C should have preserved save0 (= rcontext) for us.  */
-dnl 	__(ldr sp,[sp,#0])
-dnl 	__(mov imm2,save0)
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(mov rzero,#0)
-dnl 	__(mov loc_pc,rzero)
-dnl 	__(mov arg_x,#nil_value)
-dnl 	__(mov arg_y,#nil_value)
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(mov temp0,#nil_value)
-dnl 	__(mov temp1,#nil_value)
-dnl 	__(mov temp2,#nil_value)
-dnl 	__(mov temp3,#nil_value)
-dnl 	__(mov fn,#nil_value)
-dnl 	__(mov rcontext,imm2)
-dnl 	__(mov imm2,#TCR_STATE_LISP)
-dnl 	__(ldr tsp,[rcontext,#tcr.save_tsp])
-dnl         __(mov save0,#0)
-dnl         __(mov save1,#0)
-dnl         __(mov save2,#0)
-dnl         __(mov save3,#0)
-dnl         __(mov save4,#0)
-dnl         __(mov save5,#0)
-dnl         __(mov save6,#0)
-dnl         __(mov save7,#0)
-dnl         __(mov allocptr,#-dnode_size)
-dnl         __(mov allocbase,#-dnode_size)
-dnl 	__(str(imm2,tcr.valence(rcontext)))	
-dnl 	__(vpop_saveregs())
-dnl 	__(ldr allocptr,[rcontext,#tcr.save_allocptr])
-dnl 	__(ldr allocbase,[rcontext,#tcr.save_allocbase])
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(mtlr loc_pc)
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(mffs f0)
-dnl 	__(stfd f0,8(sp))
-dnl 	__(lwz imm3,12(sp))	/* imm3 = FPSCR after call  */
-dnl         __(clrrwi imm2,imm3,8)
-dnl 	__(discard_lisp_frame())
-dnl 	__(str(imm2,tcr.ffi_exception(rcontext)))
-dnl 	__(lfd f0,tcr.lisp_fpscr(rcontext))
-dnl 	__(mtfsf 0xff,f0)
-dnl 	__(check_pending_interrupt(`cr1'))
-dnl         __(mtxer rzero)
-dnl         __(mtctr rzero)
-dnl         __ifdef(`PPC64')
-dnl          __ifdef(`DARWIN')
-dnl           __(mov imm3,#1<<TCR_FLAG_BIT_FOREIGN_EXCEPTION)
-dnl           __(ld imm4,tcr.flags(rcontext))
-dnl           __(and. imm3,imm3,imm4)
-dnl           __(bne cr0,0f)
-dnl          __endif
-dnl         __endif
-dnl 	__(bx lr)
-dnl         __ifdef(`PPC64')
-dnl          __ifdef(`DARWIN')
-dnl 0:        /* Got here because TCR_FLAG_BIT_FOREIGN_EXCEPTION */
-dnl           /* was set in tcr.flags.  Clear that bit. */
-dnl           __(andc imm4,imm4,imm3)
-dnl           __(std imm4,tcr.flags(rcontext))
-dnl  	  /* Unboxed foreign exception (likely an NSException) in %imm0. */
-dnl 	  /* Box it, then signal a lisp error. */
-dnl           __(mov imm1,#macptr_header)
-dnl           __(Misc_Alloc_Fixed(arg_z,imm1,macptr.size))
-dnl           __(std imm0,macptr.address(arg_z))
-dnl           __(mov arg_y,#XFOREIGNEXCEPTION)
-dnl           __(set_nargs(2))
-dnl           __(b _SPksignalerr)
-dnl         /* Handle exceptions, for ObjC 2.0 */
-dnl LocalLabelPrefix`'ffcallLandingPad:      
-dnl           __(mov save1,r3)
-dnl           __(cmpdi r4,1)
-dnl           __(beq 1f)
-dnl LocalLabelPrefix`'ffcallUnwindResume:
-dnl           __(ref_global(r12,unwind_resume))
-dnl           __(mtctr r12)
-dnl           __(bctrl)
-dnl LocalLabelPrefix`'ffcallUnwindResume_end:         
-dnl 1:        __(mov r3,save1)
-dnl LocalLabelPrefix`'ffcallBeginCatch:
-dnl           __(ref_global(r12,objc2_begin_catch))
-dnl           __(mtctr r12)
-dnl           __(bctrl)
-dnl LocalLabelPrefix`'ffcallBeginCatch_end:          
-dnl           __(ld save1,0(r3)) /* indirection is necessary because we don't provide type info in lsda */
-dnl LocalLabelPrefix`'ffcallEndCatch:  
-dnl           __(ref_global(r12,objc2_end_catch))
-dnl           __(mtctr r12)
-dnl           __(bctrl)              
-dnl LocalLabelPrefix`'ffcallEndCatch_end:     
-dnl           __(ref_global(r12,get_tcr))
-dnl           __(mtctr r12)
-dnl           __(mov imm0,#1)       
-dnl 	  __(bctrl)
-dnl           __(ld imm2,tcr.flags(imm0))
-dnl           __(ori imm2,imm2,1<<TCR_FLAG_BIT_FOREIGN_EXCEPTION)
-dnl           __(std imm2,tcr.flags(imm0))
-dnl           __(mov imm0,save1)
-dnl 	  __(b LocalLabelPrefix`'ffcall_call_end)
-dnl LocalLabelPrefix`'ffcall_end:   
-dnl 
-dnl         	.section __DATA,__gcc_except_tab
-dnl 	  .align 3
-dnl LLSDA1:
-dnl 	  .byte	0xff	/* @LPStart format (omit) */
-dnl 	  .byte	0x0	/* @TType format (absolute) */
-dnl 	  .byte	0x4d	/* uleb128 0x4d; @TType base offset */
-dnl 	  .byte	0x3	/* call-site format (udata4) */
-dnl 	  .byte	0x41	/* uleb128 0x41; Call-site table length */
-dnl 	
-dnl 	  .long Lffcall_setup-Lffcall	/* region 0 start */
-dnl 	  .long Lffcall_setup_end-Lffcall_setup	/* length */
-dnl 	  .long	0x0	/* landing pad */
-dnl 	  .byte	0x0	/* uleb128 0x0; action */
-dnl         
-dnl 	  .long Lffcall_call-Lffcall	/* region 1 start */
-dnl 	  .long Lffcall_call_end-Lffcall_call	/* length */
-dnl 	  .long LffcallLandingPad-Lffcall	/* landing pad */
-dnl 	  .byte	0x1	/* uleb128 0x1; action */
-dnl         
-dnl 	  .long LffcallUnwindResume-Lffcall	/* region 2 start */
-dnl 	  .long LffcallUnwindResume_end-LffcallUnwindResume	/* length */
-dnl 	  .long	0x0	/* landing pad */
-dnl 	  .byte	0x0	/* uleb128 0x0; action */
-dnl 	
-dnl 	  .long LffcallBeginCatch-Lffcall	/* region 3 start */
-dnl 	  .long LffcallBeginCatch_end-LffcallBeginCatch	/* length */
-dnl 	  .long 0	/* landing pad */
-dnl 	  .byte	0x0	/* uleb128 0x0; action */
-dnl         
-dnl 	  .long LffcallEndCatch-Lffcall
-dnl 	  .long LffcallEndCatch_end-LffcallEndCatch	/* length */
-dnl 	  .long	0x0	/* landing pad */
-dnl 	  .byte	0x0	/* uleb128 0x0; action */
-dnl         
-dnl 	  .byte	0x1	/* Action record table */
-dnl 	  .byte	0x0
-dnl 	  .align 3
-dnl 	  .quad	0       /* _OBJC_EHTYPE_$_NSException */
-dnl           .text
-dnl          __endif
-dnl         __endif
-dnl 
-dnl /* Just like poweropen_ffcall, only we save all argument(result)
-dnl    registers in a buffer passed in arg_y on entry before returning
-dnl    to lisp.  (We have to do this in the ffcall glue here, because
-dnl    r9 and r10 - at least - are overloaded as dedicated lisp registers */
-dnl _spentry(poweropen_ffcall_return_registers)
-dnl LocalLabelPrefix`'ffcall_return_registers:                
-dnl 	__(mflr loc_pc)
-dnl 	__(vpush_saveregs())		/* Now we can use save0-save7 to point to stacks  */
-dnl         __(ldr save7,[arg_y,#macptr.address])
-dnl 	__(mov save0,rcontext)	/* or address globals.  */
-dnl 	__(extract_typecode(imm0,arg_z))
-dnl 	__(cmpri(cr7,imm0,subtag_macptr))
-dnl 	__(ldr save1,[sp,#0])	/* bottom of reserved lisp frame  */
-dnl 	__(la save2,-lisp_frame.size(save1))	/* top of lisp frame */
-dnl         __(zero_doublewords save2,0,lisp_frame.size)
-dnl 	__(str(save1,lisp_frame.backlink(save2)))
-dnl 	__(str(save2,c_frame.backlink(sp)))
-dnl 	__(str(fn,lisp_frame.savefn(save2)))
-dnl 	__(str(loc_pc,lisp_frame.savelr(save2)))
-dnl 	__(str(vsp,lisp_frame.savevsp(save2)))
-dnl         __(mov nargs,arg_z)
-dnl        	__(bne cr7,1f)
-dnl 	__(ldr nargs,[arg_z,#macptr.address])
-dnl 1:
-dnl 	__(ldr save3,[rcontext,#tcr.cs_area])
-dnl 	__(str(save2,area.active(save3)))
-dnl 	__(str(allocptr,tcr.save_allocptr(rcontext)))
-dnl 	__(str(allocbase,tcr.save_allocbase(rcontext)))
-dnl 	__(str(tsp,tcr.save_tsp(rcontext)))
-dnl 	__(str(vsp,tcr.save_vsp(rcontext)))
-dnl 	__(str(rzero,tcr.ffi_exception(rcontext)))
-dnl 	__(mffs f0)
-dnl 	__(stfd f0,tcr.lisp_fpscr(rcontext))	/* remember lisp's fpscr  */
-dnl 	__(mtfsf 0xff,fp_zero)	/* zero foreign fpscr  */
-dnl 	__(mov r4,#TCR_STATE_FOREIGN)
-dnl 	__(str(r4,tcr.valence(rcontext)))
-dnl         __ifdef(`rTOC')
-dnl          __(ld rTOC,8(nargs))
-dnl          __(ld nargs,0(nargs))
-dnl         __else
-dnl 	 __(mov rcontext,#0)
-dnl         __endif
-dnl LocalLabelPrefix`'ffcall_return_registers_setup: 
-dnl 	__(mtctr nargs)
-dnl 	__(ldr r3,[sp,#c_frame.param0])
-dnl 	__(ldr r4,[sp,#c_frame.param1])
-dnl 	__(ldr r5,[sp,#c_frame.param2])
-dnl 	__(ldr r6,[sp,#c_frame.param3])
-dnl 	__(ldr r7,[sp,#c_frame.param4])
-dnl 	__(ldr r8,[sp,#c_frame.param5])
-dnl 	__(ldr r9,[sp,#c_frame.param6])
-dnl 	__(ldr r10,[sp,#c_frame.param7])
-dnl 	/* Darwin is allegedly very picky about what register points */
-dnl 	/* to the function on entry.  */
-dnl 	__(mov r12,nargs)
-dnl LocalLabelPrefix`'ffcall_return_registers_setup_end: 
-dnl LocalLabelPrefix`'ffcall_return_registers_call:
-dnl 	__(bctrl)
-dnl LocalLabelPrefix`'ffcall_return_registers_call_end:
-dnl         __(str(r3,0*node_size(save7)))        
-dnl         __(str(r4,1*node_size(save7)))        
-dnl         __(str(r5,2*node_size(save7)))        
-dnl         __(str(r6,3*node_size(save7)))        
-dnl         __(str(r7,4*node_size(save7)))        
-dnl         __(str(r8,5*node_size(save7)))        
-dnl         __(str(r9,6*node_size(save7)))        
-dnl         __(str(r10,7*node_size(save7)))
-dnl         __(stfd f1,((8*node_size)+(0*8))(save7))
-dnl         __(stfd f2,((8*node_size)+(1*8))(save7))
-dnl         __(stfd f3,((8*node_size)+(2*8))(save7))
-dnl         __(stfd f4,((8*node_size)+(3*8))(save7))
-dnl         __(stfd f5,((8*node_size)+(4*8))(save7))
-dnl         __(stfd f6,((8*node_size)+(5*8))(save7))
-dnl         __(stfd f7,((8*node_size)+(6*8))(save7))
-dnl         __(stfd f8,((8*node_size)+(7*8))(save7))
-dnl         __(stfd f9,((8*node_size)+(8*8))(save7))
-dnl         __(stfd f10,((8*node_size)+(9*8))(save7))
-dnl         __(stfd f11,((8*node_size)+(10*8))(save7))
-dnl         __(stfd f12,((8*node_size)+(11*8))(save7))
-dnl         __(stfd f13,((8*node_size)+(12*8))(save7))
-dnl 	/* C should have preserved save0 (= rcontext) for us.  */
-dnl 	__(ldr sp,[sp,#0])
-dnl 	__(mov imm2,save0)
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(mov rzero,#0)
-dnl 	__(mov loc_pc,rzero)
-dnl 	__(mov arg_x,#nil_value)
-dnl 	__(mov arg_y,#nil_value)
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(mov temp0,#nil_value)
-dnl 	__(mov temp1,#nil_value)
-dnl 	__(mov temp2,#nil_value)
-dnl 	__(mov temp3,#nil_value)
-dnl 	__(mov fn,#nil_value)
-dnl 	__(mov rcontext,imm2)
-dnl 	__(mov imm2,#TCR_STATE_LISP)
-dnl 	__(ldr tsp,[rcontext,#tcr.save_tsp])
-dnl         __(mov save0,#0)
-dnl         __(mov save1,#0)
-dnl         __(mov save2,#0)
-dnl         __(mov save3,#0)
-dnl         __(mov save4,#0)
-dnl         __(mov save5,#0)
-dnl         __(mov save6,#0)
-dnl         __(mov save7,#0)
-dnl         __(mov allocptr,#-dnode_size)
-dnl         __(mov allocbase,#-dnode_size)
-dnl 	__(str(imm2,tcr.valence(rcontext)))	
-dnl 	__(vpop_saveregs())
-dnl 	__(ldr allocptr,[rcontext,#tcr.save_allocptr])
-dnl 	__(ldr allocbase,[rcontext,#tcr.save_allocbase])
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(mtlr loc_pc)
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(mffs f0)
-dnl 	__(stfd f0,8(sp))
-dnl 	__(lwz imm3,12(sp))	/* imm3 = FPSCR after call  */
-dnl         __(clrrwi imm2,imm3,8)
-dnl 	__(discard_lisp_frame())
-dnl 	__(str(imm2,tcr.ffi_exception(rcontext)))
-dnl 	__(lfd f0,tcr.lisp_fpscr(rcontext))
-dnl 	__(mtfsf 0xff,f0)
-dnl 	__(check_pending_interrupt(`cr1'))
-dnl         __(mtxer rzero)
-dnl         __(mtctr rzero)
-dnl         __ifdef(`DARWIN')
-dnl          __ifdef(`PPC64')
-dnl           __(mov imm3,#1<<TCR_FLAG_BIT_FOREIGN_EXCEPTION)
-dnl           __(ld imm4,tcr.flags(rcontext))
-dnl           __(and. imm3,imm3,imm4)
-dnl           __(bne 0f)
-dnl          __endif
-dnl         __endif
-dnl 	__(bx lr)
-dnl 
-dnl         __ifdef(`DARWIN')
-dnl          __ifdef(`PPC64')
-dnl 0:        /* Got here because TCR_FLAG_BIT_FOREIGN_EXCEPTION */
-dnl           /* was set in tcr.flags.  Clear that bit. */
-dnl           __(andc imm4,imm4,imm3)
-dnl           __(std imm4,tcr.flags(rcontext))
-dnl  	  /* Unboxed foreign exception (likely an NSException) in %imm0. */
-dnl 	  /* Box it, then signal a lisp error. */
-dnl           __(mov imm1,#macptr_header)
-dnl           __(Misc_Alloc_Fixed(arg_z,imm1,macptr.size))
-dnl           __(std imm0,macptr.address(arg_z))
-dnl           __(mov arg_y,#XFOREIGNEXCEPTION)
-dnl           __(set_nargs(2))
-dnl           __(b _SPksignalerr)
-dnl         /* Handle exceptions, for ObjC 2.0 */
-dnl LocalLabelPrefix`'ffcall_return_registersLandingPad:      
-dnl           __(mov save1,r3)
-dnl           __(cmpdi r4,1)
-dnl           __(beq 1f)
-dnl LocalLabelPrefix`'ffcall_return_registersUnwindResume:
-dnl           __(ref_global(r12,unwind_resume))
-dnl           __(mtctr r12)
-dnl           __(bctrl)
-dnl LocalLabelPrefix`'ffcall_return_registersUnwindResume_end:         
-dnl 1:        __(mov r3,save1)
-dnl LocalLabelPrefix`'ffcall_return_registersBeginCatch:
-dnl           __(ref_global(r12,objc2_begin_catch))
-dnl           __(mtctr r12)
-dnl           __(bctrl)
-dnl LocalLabelPrefix`'ffcall_return_registersBeginCatch_end:          
-dnl           __(ld save1,0(r3)) /* indirection is necessary because we don't provide type info in lsda */
-dnl LocalLabelPrefix`'ffcall_return_registersEndCatch:  
-dnl           __(ref_global(r12,objc2_end_catch))
-dnl           __(mtctr r12)
-dnl           __(bctrl)              
-dnl LocalLabelPrefix`'ffcall_return_registersEndCatch_end:     
-dnl           __(ref_global(r12,get_tcr))
-dnl           __(mtctr r12)
-dnl           __(mov imm0,#1)       
-dnl 	  __(bctrl)
-dnl           __(ld imm2,tcr.flags(imm0))
-dnl           __(ori imm2,imm2,1<<TCR_FLAG_BIT_FOREIGN_EXCEPTION)
-dnl           __(std imm2,tcr.flags(imm0))
-dnl           __(mov imm0,save1)
-dnl 	  __(b LocalLabelPrefix`'ffcall_return_registers_call_end)
-dnl LocalLabelPrefix`'ffcall_return_registers_end:
-dnl 	  .section __DATA,__gcc_except_tab
-dnl 	  .align 3
-dnl LLSDA2:
-dnl 	  .byte	0xff	/* @LPStart format (omit) */
-dnl   	  .byte	0x0	/* @TType format (absolute) */
-dnl 	  .byte	0x4d	/* uleb128 0x4d; @TType base offset */
-dnl 	  .byte	0x3	/* call-site format (udata4) */
-dnl 	  .byte	0x41	/* uleb128 0x41; Call-site table length */
-dnl 	
-dnl 	  .long Lffcall_return_registers_setup-Lffcall_return_registers	/* region 0 start */
-dnl 	  .long Lffcall_return_registers_setup_end-Lffcall_return_registers_setup	/* length */
-dnl 	  .long	0x0	/* landing pad */
-dnl 	  .byte	0x0	/* uleb128 0x0; action */
-dnl         
-dnl 	  .long Lffcall_return_registers_call-Lffcall_return_registers	/* region 1 start */
-dnl 	  .long Lffcall_return_registers_call_end-Lffcall_return_registers_call	/* length */
-dnl 	  .long Lffcall_return_registersLandingPad-Lffcall_return_registers	/* landing pad */
-dnl 	  .byte	0x1	/* uleb128 0x1; action */
-dnl         
-dnl 	  .long Lffcall_return_registersUnwindResume-Lffcall_return_registers	/* region 2 start */
-dnl 	  .long Lffcall_return_registersUnwindResume_end-Lffcall_return_registersUnwindResume	/* length */
-dnl 	  .long	0x0	/* landing pad */
-dnl 	  .byte	0x0	/* uleb128 0x0; action */
-dnl 	
-dnl 	  .long Lffcall_return_registersBeginCatch-Lffcall_return_registers	/* region 3 start */
-dnl 	  .long Lffcall_return_registersBeginCatch_end-Lffcall_return_registersBeginCatch	/* length */
-dnl 	  .long 0	/* landing pad */
-dnl 	  .byte	0x0	/* uleb128 0x0; action */
-dnl         
-dnl 	  .long Lffcall_return_registersEndCatch-Lffcall_return_registers
-dnl 	  .long Lffcall_return_registersEndCatch_end-Lffcall_return_registersEndCatch	/* length */
-dnl 	  .long	0x0	/* landing pad */
-dnl 	  .byte	0x0	/* uleb128 0x0; action */
-dnl 	  .byte	0x1	/* Action record table */
-dnl 	  .byte	0x0
-dnl 	  .align 3
-dnl 	  .quad	0       /* _OBJC_EHTYPE_$_NSException */
-dnl           .text
-dnl          __endif
-dnl         __endif
-dnl                       
-dnl 
-dnl         	
-dnl /* Signal an error synchronously, via %ERR-DISP.  */
-dnl /* If %ERR-DISP isn't fbound, it'd be nice to print a message  */
-dnl /* on the C runtime stderr.  */
-dnl 
-dnl _spentry(ksignalerr)
-dnl 	__(mov fname,#nrs.errdisp)
-dnl 	__(jump_fname)
-dnl         
+dnl  __(bl _SPconslist)
+dnl  __(mov arg_y,#XBADKEYS)
+dnl  __(set_nargs(2))
+dnl  __(b _SPksignalerr)
+dnl 
+/* Signal an error synchronously, via %ERR-DISP.  */
+/* If %ERR-DISP isn't fbound, it'd be nice to print a message  */
+/* on the C runtime stderr.  */
+ 
+_spentry(ksignalerr)
+        __(ref_nrs_symbol(fname,errdisp))
+        __(jump_fname)
+
 dnl /* As in the heap-consed cases, only stack-cons the &rest arg  */
 dnl _spentry(stack_rest_arg)
-dnl 	__(mov imm0,#0)
-dnl 	__(vpush_argregs())
+dnl  __(mov imm0,#0)
+dnl  __(vpush_argregs())
 dnl         __(b _SPstack_cons_rest_arg)
 dnl 
-dnl 	
+dnl  
 dnl _spentry(req_stack_rest_arg)
-dnl 	__(vpush_argregs())
+dnl  __(vpush_argregs())
 dnl         __(b _SPstack_cons_rest_arg)
-dnl 	
+dnl  
 dnl _spentry(stack_cons_rest_arg)
-dnl 	__(sub imm1,nargs,imm0)
-dnl 	__(cmpri(cr0,imm1,0))
-dnl 	__(cmpri(cr1,imm1,(4096-dnode_size)/2))
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(ble cr0,2f)		/* always temp-push something.  */
-dnl 	__(bge cr1,3f)
-dnl 	__(add imm1,imm1,imm1)
-dnl 	__(dnode_align(imm2,imm1,tsp_frame.fixed_overhead))
-dnl 	__(TSP_Alloc_Var_Boxed(imm2,imm3))
-dnl 	__(la imm0,tsp_frame.data_offset+fulltag_cons(tsp))
+dnl  __(sub imm1,nargs,imm0)
+dnl  __(cmpri(cr0,imm1,0))
+dnl  __(cmpri(cr1,imm1,(4096-dnode_size)/2))
+dnl  __(mov arg_z,#nil_value)
+dnl  __(ble cr0,2f)  /* always temp-push something.  */
+dnl  __(bge cr1,3f)
+dnl  __(add imm1,imm1,imm1)
+dnl  __(dnode_align(imm2,imm1,tsp_frame.fixed_overhead))
+dnl  __(TSP_Alloc_Var_Boxed(imm2,imm3))
+dnl  __(la imm0,tsp_frame.data_offset+fulltag_cons(tsp))
 dnl 1:
-dnl 	__(cmpri(cr0,imm1,cons.size))	/* last time through ?  */
-dnl 	__(subi imm1,imm1,cons.size)
-dnl 	__(vpop(arg_x))
-dnl 	__(_rplacd(imm0,arg_z))
-dnl 	__(_rplaca(imm0,arg_x))
-dnl 	__(mov arg_z,imm0)
-dnl 	__(la imm0,cons.size(imm0))
-dnl 	__(bne cr0,1b)
-dnl 	__(vpush1(arg_z))
-dnl 	__(bx lr)
+dnl  __(cmpri(cr0,imm1,cons.size)) /* last time through ?  */
+dnl  __(subi imm1,imm1,cons.size)
+dnl  __(vpop(arg_x))
+dnl  __(_rplacd(imm0,arg_z))
+dnl  __(_rplaca(imm0,arg_x))
+dnl  __(mov arg_z,imm0)
+dnl  __(la imm0,cons.size(imm0))
+dnl  __(bne cr0,1b)
+dnl  __(vpush1(arg_z))
+dnl  __(bx lr)
 dnl 2:
-dnl 	__(TSP_Alloc_Fixed_Unboxed(0))
-dnl 	__(vpush1(arg_z))
-dnl 	__(bx lr)
+dnl  __(TSP_Alloc_Fixed_Unboxed(0))
+dnl  __(vpush1(arg_z))
+dnl  __(bx lr)
 dnl 3:
-dnl 	__(TSP_Alloc_Fixed_Unboxed(0))
-dnl 	__(b _SPheap_cons_rest_arg)
-dnl 
-dnl /* This was trying to swap exception ports to work around Darwin JNI lossage.
-dnl    It's tended to bitrot, and we have another way to do that now.
-dnl */        
-dnl _spentry(poweropen_callbackX)
-dnl         .long 0x7c800008        /* debug trap */
-dnl 	
+dnl  __(TSP_Alloc_Fixed_Unboxed(0))
+dnl  __(b _SPheap_cons_rest_arg)
+dnl 
+	
 dnl /* Prepend all but the first two (closure code, fn) and last two  */
 dnl /* (function name, lfbits) elements of nfn to the "arglist".  */
@@ -2061,130 +1568,95 @@
 dnl /* even in cases where no closure object is created.  */
 dnl _spentry(call_closure)        
-dnl 	__(cmpri(cr0,nargs,nargregs<<fixnumshift))
-dnl 	__(cmpri(cr1,nargs,fixnum_one))
-dnl 	__(vector_length(imm0,nfn,imm0))
-dnl 	__(subi imm0,imm0,4<<fixnumshift) /* imm0 = inherited arg count  */
-dnl 	__(mov imm1,#misc_data_offset+(2<<fixnumshift)) /* point to 1st arg  */
-dnl 	__(mov imm4,#nil_value)
-dnl 	__(ble+ cr0,local_label(no_insert))
-dnl 	/* Some arguments have already been vpushed.  Vpush imm0's worth  */
-dnl 	/* of NILs, copy those arguments that have already been vpushed from  */
-dnl 	/* the old TOS to the new, then insert all of the inerited args  */
-dnl 	/* and go to the function.  */
-dnl 	__(mov imm2,#0)
+dnl  __(cmpri(cr0,nargs,nargregs<<fixnumshift))
+dnl  __(cmpri(cr1,nargs,fixnum_one))
+dnl  __(vector_length(imm0,nfn,imm0))
+dnl  __(subi imm0,imm0,4<<fixnumshift) /* imm0 = inherited arg count  */
+dnl  __(mov imm1,#misc_data_offset+(2<<fixnumshift)) /* point to 1st arg  */
+dnl  __(mov imm4,#nil_value)
+dnl  __(ble+ cr0,local_label(no_insert))
+dnl  /* Some arguments have already been vpushed.  Vpush imm0's worth  */
+dnl  /* of NILs, copy those arguments that have already been vpushed from  */
+dnl  /* the old TOS to the new, then insert all of the inerited args  */
+dnl  /* and go to the function.  */
+dnl  __(mov imm2,#0)
 dnl local_label(push_nil_loop):
-dnl 	__(addi imm2,imm2,fixnum_one)
-dnl 	__(cmpr(cr2,imm2,imm0))
-dnl 	__(vpush1(imm4))
-dnl 	__(bne cr2,local_label(push_nil_loop))
-dnl 
-dnl 	__(mov imm3,vsp)
-dnl 	__(add imm4,vsp,imm0)
-dnl 	__(subi imm2,nargs,nargregs<<fixnumshift)
+dnl  __(addi imm2,imm2,fixnum_one)
+dnl  __(cmpr(cr2,imm2,imm0))
+dnl  __(vpush1(imm4))
+dnl  __(bne cr2,local_label(push_nil_loop))
+dnl 
+dnl  __(mov imm3,vsp)
+dnl  __(add imm4,vsp,imm0)
+dnl  __(subi imm2,nargs,nargregs<<fixnumshift)
 dnl local_label(copy_already_loop):
-dnl 	__(cmpri(cr2,imm2,fixnum_one))
-dnl 	__(subi imm2,imm2,fixnum_one)
-dnl 	__(ldr fname,[imm4,#0])
-dnl 	__(addi imm4,imm4,fixnum_one)
-dnl 	__(str(fname,0(imm3)))
-dnl 	__(addi imm3,imm3,fixnum_one)
-dnl 	__(bne cr2,local_label(copy_already_loop))
+dnl  __(cmpri(cr2,imm2,fixnum_one))
+dnl  __(subi imm2,imm2,fixnum_one)
+dnl  __(ldr fname,[imm4,#0])
+dnl  __(addi imm4,imm4,fixnum_one)
+dnl  __(str(fname,0(imm3)))
+dnl  __(addi imm3,imm3,fixnum_one)
+dnl  __(bne cr2,local_label(copy_already_loop))
 dnl 
 dnl local_label(insert_loop):
-dnl 	__(cmpri(cr2,imm0,fixnum_one))
-dnl 	__(ldrx(fname,nfn,imm1))
-dnl 	__(addi imm1,imm1,fixnum_one)
-dnl 	__(addi nargs,nargs,fixnum_one)
-dnl 	__(subi imm0,imm0,fixnum_one)
-dnl 	__(push(fname,imm4))
-dnl 	__(bne cr2,local_label(insert_loop))
-dnl 	__(b local_label(go))
+dnl  __(cmpri(cr2,imm0,fixnum_one))
+dnl  __(ldrx(fname,nfn,imm1))
+dnl  __(addi imm1,imm1,fixnum_one)
+dnl  __(addi nargs,nargs,fixnum_one)
+dnl  __(subi imm0,imm0,fixnum_one)
+dnl  __(push(fname,imm4))
+dnl  __(bne cr2,local_label(insert_loop))
+dnl  __(b local_label(go))
 dnl local_label(no_insert):
-dnl 	/* nargregs or fewer args were already vpushed.  */
-dnl 	/* if exactly nargregs, vpush remaining inherited vars.  */
-dnl 	__(add imm2,imm1,imm0)
-dnl 	__(bne cr0,local_label(set_regs))
+dnl  /* nargregs or fewer args were already vpushed.  */
+dnl  /* if exactly nargregs, vpush remaining inherited vars.  */
+dnl  __(add imm2,imm1,imm0)
+dnl  __(bne cr0,local_label(set_regs))
 dnl local_label(vpush_remaining):
-dnl 	__(cmpri(cr2,imm0,fixnum_one))
-dnl 	__(ldrx(fname,nfn,imm1))
-dnl 	__(addi imm1,imm1,fixnum_one)
-dnl 	__(vpush1(fname))
-dnl 	__(subi imm0,imm0,fixnum_one)
-dnl 	__(addi nargs,nargs,fixnum_one)
-dnl 	__(bne cr2,local_label(vpush_remaining))
-dnl 	__(b local_label(go))
+dnl  __(cmpri(cr2,imm0,fixnum_one))
+dnl  __(ldrx(fname,nfn,imm1))
+dnl  __(addi imm1,imm1,fixnum_one)
+dnl  __(vpush1(fname))
+dnl  __(subi imm0,imm0,fixnum_one)
+dnl  __(addi nargs,nargs,fixnum_one)
+dnl  __(bne cr2,local_label(vpush_remaining))
+dnl  __(b local_label(go))
 dnl local_label(set_regs):
-dnl 	/* if nargs was > 1 (and we know that it was < 3), it must have  */
-dnl 	/* been 2.  Set arg_x, then vpush the remaining args.  */
-dnl 	__(ble cr1,local_label(set_y_z))
+dnl  /* if nargs was > 1 (and we know that it was < 3), it must have  */
+dnl  /* been 2.  Set arg_x, then vpush the remaining args.  */
+dnl  __(ble cr1,local_label(set_y_z))
 dnl local_label(set_arg_x):
-dnl 	__(subi imm0,imm0,fixnum_one)
-dnl 	__(cmpri(cr0,imm0,0))
-dnl 	__(subi imm2,imm2,fixnum_one)
-dnl 	__(ldrx(arg_x,nfn,imm2))
-dnl 	__(addi nargs,nargs,fixnum_one)
-dnl 	__(bne cr0,local_label(vpush_remaining))
-dnl 	__(b local_label(go))
-dnl 	/* Maybe set arg_y or arg_z, preceding args  */
+dnl  __(subi imm0,imm0,fixnum_one)
+dnl  __(cmpri(cr0,imm0,0))
+dnl  __(subi imm2,imm2,fixnum_one)
+dnl  __(ldrx(arg_x,nfn,imm2))
+dnl  __(addi nargs,nargs,fixnum_one)
+dnl  __(bne cr0,local_label(vpush_remaining))
+dnl  __(b local_label(go))
+dnl  /* Maybe set arg_y or arg_z, preceding args  */
 dnl local_label(set_y_z):
-dnl 	__(bne cr1,local_label(set_arg_z))
-dnl 	/* Set arg_y, maybe arg_x, preceding args  */
+dnl  __(bne cr1,local_label(set_arg_z))
+dnl  /* Set arg_y, maybe arg_x, preceding args  */
 dnl local_label(set_arg_y):
-dnl 	__(subi imm0,imm0,fixnum_one)
-dnl 	__(cmpri(cr0,imm0,0))
-dnl 	__(subi imm2,imm2,fixnum_one)
-dnl 	__(ldrx(arg_y,nfn,imm2))
-dnl 	__(addi nargs,nargs,fixnum_one)
-dnl 	__(bne cr0,local_label(set_arg_x))
-dnl 	__(b local_label(go))
+dnl  __(subi imm0,imm0,fixnum_one)
+dnl  __(cmpri(cr0,imm0,0))
+dnl  __(subi imm2,imm2,fixnum_one)
+dnl  __(ldrx(arg_y,nfn,imm2))
+dnl  __(addi nargs,nargs,fixnum_one)
+dnl  __(bne cr0,local_label(set_arg_x))
+dnl  __(b local_label(go))
 dnl local_label(set_arg_z):
-dnl 	__(subi imm0,imm0,fixnum_one)
-dnl 	__(cmpri(cr0,imm0,0))
-dnl 	__(subi imm2,imm2,fixnum_one)
-dnl 	__(ldrx(arg_z,nfn,imm2))
-dnl 	__(addi nargs,nargs,fixnum_one)
-dnl 	__(bne cr0,local_label(set_arg_y))
+dnl  __(subi imm0,imm0,fixnum_one)
+dnl  __(cmpri(cr0,imm0,0))
+dnl  __(subi imm2,imm2,fixnum_one)
+dnl  __(ldrx(arg_z,nfn,imm2))
+dnl  __(addi nargs,nargs,fixnum_one)
+dnl  __(bne cr0,local_label(set_arg_y))
 dnl 
 dnl local_label(go):
-dnl 	__(vrefr(nfn,nfn,1))
-dnl 	__(ldr loc_pc,[nfn,#_function.codevector])
-dnl 	__(mtctr loc_pc)
-dnl 	__(bctr)
+dnl  __(vrefr(nfn,nfn,1))
+dnl  __(ldr loc_pc,[nfn,#_function.codevector])
+dnl  __(mtctr loc_pc)
+dnl  __(bctr)
 dnl         
-dnl /* This  treats anything that's either */
-dnl /* #+ppc32 (signed-byte 32), (unsigned-byte 32) */
-dnl /* #+ppc64 (signed-byte 64), (unsigned-byte 64) */
-dnl /* as if it denoted a "natural-sized" value.  */
-dnl /* Argument in arg_z, result in imm0.  May use temp0.  */
-dnl _spentry(getxlong)
-dnl         __ifdef(`PPC64')
-dnl         __else
-dnl         __(extract_typecode(imm0,arg_z))
-dnl 	__(cmpri(cr0,imm0,tag_fixnum))
-dnl 	__(cmpri(cr1,imm0,subtag_bignum))
-dnl 	__(unbox_fixnum(imm0,arg_z))
-dnl 	__(beqlr cr0)
-dnl 	__(mov temp0,arg_z)
-dnl 	__(bne- cr1,local_label(error))
-dnl 	__(getvheader(imm0,temp0))
-dnl 	__(cmpri(cr1,imm0,one_digit_bignum_header))
-dnl 	__(cmpri(cr7,imm0,two_digit_bignum_header))
-dnl 	__(beq cr1,local_label(big1))
-dnl         __(beq cr7,local_label(big2))
-dnl local_label(error):
-dnl 	__(uuo_interr(error_object_not_integer,arg_z)) /* not quite right but what 68K MCL said  */
-dnl 
-dnl 
-dnl 
-dnl local_label(big2):
-dnl 	__(vrefr(imm0,temp0,1)) /* sign digit must be 0  */
-dnl 	__(cmpri(imm0,0))
-dnl 	__(bne local_label(error))
-dnl local_label(big1):
-dnl 	__(vrefr(imm0,temp0,0))
-dnl 	__(bx lr)
-dnl 
-dnl 
-dnl         __endif
 dnl                 
 dnl /* Everything up to the last arg has been vpushed, nargs is set to  */
@@ -2194,72 +1666,62 @@
 dnl /* ppc2-invoke-fn assumes that temp1 is preserved here.  */
 dnl _spentry(spreadargz)
-dnl         __ifdef(`PPC64')
-dnl 	 __(extract_fulltag(imm1,arg_z))
-dnl 	 __(cmpri(cr1,imm1,fulltag_cons))
-dnl         __else
-dnl 	 __(extract_lisptag(imm1,arg_z))
-dnl 	 __(cmpri(cr1,imm1,tag_list))
-dnl         __endif
-dnl 	__(cmpri(cr0,arg_z,nil_value))
-dnl 	__(mov imm0,#0)
-dnl 	__(mov arg_y,arg_z)		/*  save in case of error  */
-dnl 	__(beq cr0,2f)
+dnl   __(extract_lisptag(imm1,arg_z))
+dnl   __(cmpri(cr1,imm1,tag_list))
+dnl  __(cmpri(cr0,arg_z,nil_value))
+dnl  __(mov imm0,#0)
+dnl  __(mov arg_y,arg_z)  /*  save in case of error  */
+dnl  __(beq cr0,2f)
 dnl 1:
-dnl 	__(bne- cr1,3f)
-dnl 	__(_car(arg_x,arg_z))
-dnl 	__(_cdr(arg_z,arg_z))
-dnl 	__(cmpri(cr0,arg_z,nil_value))
-dnl         __ifdef(`PPC64')
-dnl 	 __(extract_fulltag(imm1,arg_z))
-dnl 	 __(cmpri(cr1,imm1,fulltag_cons))
-dnl         __else
-dnl 	 __(extract_lisptag(imm1,arg_z))
-dnl 	 __(cmpri(cr1,imm1,tag_list))
-dnl         __endif
-dnl 	__(vpush1(arg_x))
-dnl 	__(addi imm0,imm0,fixnum_one)
-dnl 	__(bne cr0,1b)
+dnl  __(bne- cr1,3f)
+dnl  __(_car(arg_x,arg_z))
+dnl  __(_cdr(arg_z,arg_z))
+dnl  __(cmpri(cr0,arg_z,nil_value))
+dnl   __(extract_lisptag(imm1,arg_z))
+dnl   __(cmpri(cr1,imm1,tag_list))
+dnl  __(vpush1(arg_x))
+dnl  __(addi imm0,imm0,fixnum_one)
+dnl  __(bne cr0,1b)
 dnl 2:
-dnl 	__(add. nargs,nargs,imm0)
-dnl 	__(cmpri(cr2,nargs,2<<fixnumshift))
-dnl 	__(beqlr- cr0)
-dnl 	__(vpop(arg_z))
-dnl 	__(bltlr cr2)
-dnl 	__(vpop(arg_y))
-dnl 	__(beqlr cr2)
-dnl 	__(vpop(arg_x))
-dnl 	__(bx lr)
+dnl  __(add. nargs,nargs,imm0)
+dnl  __(cmpri(cr2,nargs,2<<fixnumshift))
+dnl  __(beqlr- cr0)
+dnl  __(vpop(arg_z))
+dnl  __(bltlr cr2)
+dnl  __(vpop(arg_y))
+dnl  __(beqlr cr2)
+dnl  __(vpop(arg_x))
+dnl  __(bx lr)
 dnl         /*  Discard whatever's been vpushed already, complain.  */
-dnl 3:	
-dnl 	__(add vsp,vsp,imm0)
-dnl 	__(mov arg_z,arg_y)		/* recover original arg_z  */
-dnl 	__(mov arg_y,#XNOSPREAD)
-dnl 	__(set_nargs(2))
-dnl 	__(b _SPksignalerr)
+dnl 3: 
+dnl  __(add vsp,vsp,imm0)
+dnl  __(mov arg_z,arg_y)  /* recover original arg_z  */
+dnl  __(mov arg_y,#XNOSPREAD)
+dnl  __(set_nargs(2))
+dnl  __(b _SPksignalerr)
 dnl         
 dnl /* Tail-recursively funcall temp0.  */
 dnl /* Pretty much the same as the tcallsym* cases above.  */
 dnl _spentry(tfuncallgen)
-dnl 	__(cmpri(cr0,nargs,nargregs<<fixnumshift))
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(mtlr loc_pc)
-dnl 	__(ble cr0,2f)
-dnl 	__(ldr imm0,[sp,#lisp_frame.savevsp])
-dnl 	__(discard_lisp_frame())
-dnl 	/* can use nfn (= temp2) as a temporary  */
-dnl 	__(subi imm1,nargs,nargregs<<fixnumshift)
-dnl 	__(add imm1,imm1,vsp)
+dnl  __(cmpri(cr0,nargs,nargregs<<fixnumshift))
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(mtlr loc_pc)
+dnl  __(ble cr0,2f)
+dnl  __(ldr imm0,[sp,#lisp_frame.savevsp])
+dnl  __(discard_lisp_frame())
+dnl  /* can use nfn (= temp2) as a temporary  */
+dnl  __(subi imm1,nargs,nargregs<<fixnumshift)
+dnl  __(add imm1,imm1,vsp)
 dnl 1:
-dnl 	__(ldru(temp2,-node_size(imm1)))
-dnl 	__(cmpr(cr0,imm1,vsp))
-dnl 	__(push(temp2,imm0))
-dnl 	__(bne cr0,1b)
-dnl 	__(mov vsp,imm0)
-dnl 	__(do_funcall())
+dnl  __(ldru(temp2,-node_size(imm1)))
+dnl  __(cmpr(cr0,imm1,vsp))
+dnl  __(push(temp2,imm0))
+dnl  __(bne cr0,1b)
+dnl  __(mov vsp,imm0)
+dnl  __(do_funcall())
 dnl 2:
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(discard_lisp_frame())
-dnl 	__(do_funcall())
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(discard_lisp_frame())
+dnl  __(do_funcall())
 dnl 
 dnl 
@@ -2267,28 +1729,28 @@
 dnl /* the current frame, then do funcall.  */
 dnl _spentry(tfuncallslide)
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(ldr imm0,[sp,#lisp_frame.savevsp])
-dnl 	__(discard_lisp_frame())
-dnl 	/* can use nfn (= temp2) as a temporary  */
-dnl 	__(subi imm1,nargs,nargregs<<fixnumshift)
-dnl 	__(add imm1,imm1,vsp)
-dnl 	__(mtlr loc_pc)
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(ldr imm0,[sp,#lisp_frame.savevsp])
+dnl  __(discard_lisp_frame())
+dnl  /* can use nfn (= temp2) as a temporary  */
+dnl  __(subi imm1,nargs,nargregs<<fixnumshift)
+dnl  __(add imm1,imm1,vsp)
+dnl  __(mtlr loc_pc)
 dnl 1:
-dnl 	__(ldru(temp2,-node_size(imm1)))
-dnl 	__(cmpr(cr0,imm1,vsp))
-dnl 	__(push(temp2,imm0))
-dnl 	__(bne cr0,1b)
-dnl 	__(mov vsp,imm0)
-dnl 	__(do_funcall())
+dnl  __(ldru(temp2,-node_size(imm1)))
+dnl  __(cmpr(cr0,imm1,vsp))
+dnl  __(push(temp2,imm0))
+dnl  __(bne cr0,1b)
+dnl  __(mov vsp,imm0)
+dnl  __(do_funcall())
 dnl 
 dnl /* No args were vpushed; recover saved context & do funcall  */
 dnl _spentry(tfuncallvsp)
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(mtlr loc_pc)
-dnl 	__(discard_lisp_frame())
-dnl 	__(do_funcall())
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(mtlr loc_pc)
+dnl  __(discard_lisp_frame())
+dnl  __(do_funcall())
 dnl         
 dnl /* Tail-recursively call the (known symbol) in fname.  */
@@ -2298,62 +1760,62 @@
 dnl /* vsp, lr, fn from the saved lisp frame on the control stack.  */
 dnl _spentry(tcallsymgen)
-dnl 	__(cmpri(cr0,nargs,nargregs<<fixnumshift))
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(mtlr loc_pc)
-dnl 	__(ble cr0,2f)
-dnl 
-dnl 	__(ldr imm0,[sp,#lisp_frame.savevsp])
-dnl 	__(discard_lisp_frame())
-dnl 	/* can use nfn (= temp2) as a temporary  */
-dnl 	__(subi imm1,nargs,nargregs<<fixnumshift)
-dnl 	__(add imm1,imm1,vsp)
+dnl  __(cmpri(cr0,nargs,nargregs<<fixnumshift))
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(mtlr loc_pc)
+dnl  __(ble cr0,2f)
+dnl 
+dnl  __(ldr imm0,[sp,#lisp_frame.savevsp])
+dnl  __(discard_lisp_frame())
+dnl  /* can use nfn (= temp2) as a temporary  */
+dnl  __(subi imm1,nargs,nargregs<<fixnumshift)
+dnl  __(add imm1,imm1,vsp)
 dnl 1:
-dnl 	__(ldru(temp2,-node_size(imm1)))
-dnl 	__(cmpr(cr0,imm1,vsp))
-dnl 	__(push(temp2,imm0))
-dnl 	__(bne cr0,1b)
-dnl 	__(mov vsp,imm0)
-dnl 	__(jump_fname)
-dnl 	
-dnl 2:		
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(discard_lisp_frame())
-dnl 	__(jump_fname)
-dnl 	
-dnl 	
+dnl  __(ldru(temp2,-node_size(imm1)))
+dnl  __(cmpr(cr0,imm1,vsp))
+dnl  __(push(temp2,imm0))
+dnl  __(bne cr0,1b)
+dnl  __(mov vsp,imm0)
+dnl  __(jump_fname)
+dnl  
+dnl 2:  
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(discard_lisp_frame())
+dnl  __(jump_fname)
+dnl  
+dnl  
 dnl /* Some args were vpushed.  Slide them down to the base of  */
 dnl /* the current frame, then do funcall.  */
 dnl _spentry(tcallsymslide)
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(ldr imm0,[sp,#lisp_frame.savevsp])
-dnl 	__(discard_lisp_frame())
-dnl 	__(mtlr loc_pc)
-dnl 	/* can use nfn (= temp2) as a temporary  */
-dnl 	__(subi imm1,nargs,nargregs<<fixnumshift)
-dnl 	__(add imm1,imm1,vsp)
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(ldr imm0,[sp,#lisp_frame.savevsp])
+dnl  __(discard_lisp_frame())
+dnl  __(mtlr loc_pc)
+dnl  /* can use nfn (= temp2) as a temporary  */
+dnl  __(subi imm1,nargs,nargregs<<fixnumshift)
+dnl  __(add imm1,imm1,vsp)
 dnl 1:
-dnl 	__(ldru(temp2,-node_size(imm1)))
-dnl 	__(cmpr(cr0,imm1,vsp))
-dnl 	__(push(temp2,imm0))
-dnl 	__(bne cr0,1b)
-dnl 	__(mov vsp,imm0)
-dnl 	__(jump_fname)
+dnl  __(ldru(temp2,-node_size(imm1)))
+dnl  __(cmpr(cr0,imm1,vsp))
+dnl  __(push(temp2,imm0))
+dnl  __(bne cr0,1b)
+dnl  __(mov vsp,imm0)
+dnl  __(jump_fname)
 dnl 
 dnl /* No args were vpushed; recover saved context & call symbol  */
 dnl _spentry(tcallsymvsp)
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(discard_lisp_frame())
-dnl 	__(mtlr loc_pc)
-dnl 	__(jump_fname)
-dnl 	
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(discard_lisp_frame())
+dnl  __(mtlr loc_pc)
+dnl  __(jump_fname)
+dnl  
 dnl /* Tail-recursively call the function in nfn.  */
 dnl /* Pretty much the same as the tcallsym* cases above.  */
 dnl _spentry(tcallnfngen)
-dnl 	__(cmpri(cr0,nargs,nargregs<<fixnumshift))
-dnl 	__(ble cr0,_SPtcallnfnvsp)
+dnl  __(cmpri(cr0,nargs,nargregs<<fixnumshift))
+dnl  __(ble cr0,_SPtcallnfnvsp)
 dnl         __(b _SPtcallnfnslide)
 dnl 
@@ -2361,78 +1823,78 @@
 dnl /* the current frame, then do funcall.  */
 dnl _spentry(tcallnfnslide)
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(ldr imm0,[sp,#lisp_frame.savevsp])
-dnl 	__(discard_lisp_frame())
-dnl 	__(mtlr loc_pc)
-dnl 	/* Since we have a known function, can use fname as a temporary.  */
-dnl 	__(subi imm1,nargs,nargregs<<fixnumshift)
-dnl 	__(add imm1,imm1,vsp)
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(ldr imm0,[sp,#lisp_frame.savevsp])
+dnl  __(discard_lisp_frame())
+dnl  __(mtlr loc_pc)
+dnl  /* Since we have a known function, can use fname as a temporary.  */
+dnl  __(subi imm1,nargs,nargregs<<fixnumshift)
+dnl  __(add imm1,imm1,vsp)
 dnl 1:
-dnl 	__(ldru(fname,-node_size(imm1)))
-dnl 	__(cmpr(cr0,imm1,vsp))
-dnl 	__(push(fname,imm0))
-dnl 	__(bne cr0,1b)
-dnl 	__(mov vsp,imm0)
-dnl        	__(jump_nfn())
+dnl  __(ldru(fname,-node_size(imm1)))
+dnl  __(cmpr(cr0,imm1,vsp))
+dnl  __(push(fname,imm0))
+dnl  __(bne cr0,1b)
+dnl  __(mov vsp,imm0)
+dnl         __(jump_nfn())
 dnl         
 dnl _spentry(tcallnfnvsp)
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(discard_lisp_frame())
-dnl 	__(mtlr loc_pc)
-dnl        	__(jump_nfn())
-dnl 	
-dnl /* Reference index arg_z of a misc-tagged object (arg_y).  */
-dnl /* Note that this conses in some cases.  Return a properly-tagged  */
-dnl /* lisp object in arg_z.  Do type and bounds-checking.  */
-dnl 	
-dnl _spentry(misc_ref)
-dnl 	__(trap_unless_fulltag_equal(arg_y,fulltag_misc,imm0))
-dnl 	__(trap_unless_lisptag_equal(arg_z,tag_fixnum,imm0))
-dnl 	__(vector_length(imm0,arg_y,imm1))
-dnl 	__(trlge(arg_z,imm0))
-dnl 	__(extract_lowbyte(imm1,imm1))	/* imm1 = subtag  */
-dnl         __(b local_label(misc_ref_common))	
-dnl 	
-dnl 
-dnl         
-dnl /* like misc_ref, only the boxed subtag is in arg_x.  */
-dnl 
-dnl _spentry(subtag_misc_ref)
-dnl 	__(trap_unless_fulltag_equal(arg_y,fulltag_misc,imm0))
-dnl         __(trap_unless_lisptag_equal(arg_z,tag_fixnum,imm0))
-dnl 	__(vector_length(imm0,arg_y,imm1))
-dnl 	__(trlge(arg_z,imm0))
-dnl 	__(unbox_fixnum(imm1,arg_x))
-dnl         __(b local_label(misc_ref_common))
-dnl 
-dnl _spentry(builtin_aref1)
-dnl 	__(extract_typecode(imm0,arg_y))
-dnl 	__(cmpri(cr0,imm0,min_vector_subtag))
-dnl 	__(box_fixnum(arg_x,imm0))
-dnl 	__(bgt cr0,_SPsubtag_misc_ref)
-dnl 	__(jump_builtin(_builtin_aref1,2))
-dnl         	
-dnl 	
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(discard_lisp_frame())
+dnl  __(mtlr loc_pc)
+dnl         __(jump_nfn())
+
+/* Reference index arg_z of a misc-tagged object (arg_y).  */
+/* Note that this conses in some cases.  Return a properly-tagged  */
+/* lisp object in arg_z.  Do type and bounds-checking.  */
+
+_spentry(misc_ref)
+        __(trap_unless_fulltag_equal(arg_y,fulltag_misc,imm0))
+        __(trap_unless_fixnum(arg_z))
+        __(vector_length(imm0,arg_y,imm1))
+        __(cmp arg_z,imm0)
+        __(uuo_error_vector_bounds(hs,arg_z,arg_y))
+        __(extract_lowbyte(imm1,imm1)) /* imm1 = subtag  */
+        __(b C(misc_ref_common)) 
+
+/* like misc_ref, only the boxed subtag is in arg_x.  */
+
+_spentry(subtag_misc_ref)
+        __(trap_unless_fulltag_equal(arg_y,fulltag_misc,imm0))
+        __(trap_unless_fixnum(arg_z))
+        __(vector_length(imm0,arg_y,imm1))
+        __(cmp arg_z,imm0)
+        __(uuo_error_vector_bounds(hs,arg_z,arg_y))
+        __(unbox_fixnum(imm1,arg_x))
+        __(b C(misc_ref_common))
+
+_spentry(builtin_aref1)
+        __(extract_typecode(imm0,arg_y))
+        __(cmp imm0,#min_vector_subtag)
+        __(box_fixnum(arg_x,imm0))
+        __(bgt _SPsubtag_misc_ref)
+        __(jump_builtin(_builtin_aref1,2))
+dnl          
+dnl  
 dnl /* Make a cons cell on the vstack.  Always push 3 words, 'cause we're   */
 dnl /* not sure how the vstack will be aligned.  */
 dnl _spentry(stkconsyz)
-dnl 	__(mov imm0,#nil_value)
-dnl 	__(vpush1(imm0))
-dnl 	__(vpush1(imm0))
-dnl 	__(vpush1(imm0))
-dnl 	__(andi. imm0,vsp,1<<word_shift) /* (oddp vsp ?)  */
-dnl 	__(beq cr0,1f)
-dnl 	__(str(arg_y,node_size*2(vsp))) /* car  */
-dnl 	__(str(arg_z,node_size(vsp))) /* cdr  */
-dnl 	__(la arg_z,fulltag_cons+node_size(vsp))
-dnl 	__(bx lr)
+dnl  __(mov imm0,#nil_value)
+dnl  __(vpush1(imm0))
+dnl  __(vpush1(imm0))
+dnl  __(vpush1(imm0))
+dnl  __(andi. imm0,vsp,1<<word_shift) /* (oddp vsp ?)  */
+dnl  __(beq cr0,1f)
+dnl  __(str(arg_y,node_size*2(vsp))) /* car  */
+dnl  __(str(arg_z,node_size(vsp))) /* cdr  */
+dnl  __(la arg_z,fulltag_cons+node_size(vsp))
+dnl  __(bx lr)
 dnl 1:
-dnl 	__(str(arg_y,node_size(vsp))) /* car, again  */
-dnl 	__(str(arg_z,0(vsp)))
-dnl 	__(la arg_z,fulltag_cons(vsp))
-dnl 	__(bx lr)
+dnl  __(str(arg_y,node_size(vsp))) /* car, again  */
+dnl  __(str(arg_z,0(vsp)))
+dnl  __(la arg_z,fulltag_cons(vsp))
+dnl  __(bx lr)
 dnl 
 dnl /* Make a stack-consed value cell.  Much like the case of */
@@ -2440,50 +1902,50 @@
 dnl /* (already vpushed).  Replace that locative with the vcell.  */
 dnl _spentry(stkvcell0)
-dnl 	__(sub imm1,imm0,vsp) /* imm1 = delta from vsp to value cell loc  */
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(vpush1(arg_z))
-dnl 	__(vpush1(arg_z))
-dnl 	__(vpush1(arg_z))
-dnl 	__(addi imm1,imm1,node_size*3)
-dnl 	__(add imm0,vsp,imm1) /* in case stack overflowed  */
-dnl 	__(andi. imm1,vsp,1<<word_shift) /* (oddp vsp) ?  */
-dnl 	__(mov imm1,#value_cell_header)
-dnl 	__(ldr arg_z,[imm0,#0])
-dnl 	__(beq cr0,1f)
-dnl 	__(str(arg_z,node_size*2(vsp)))
-dnl 	__(str(imm1,node_size(vsp)))
-dnl 	__(la arg_z,fulltag_misc+node_size(vsp))
-dnl 	__(str(arg_z,0(imm0)))
-dnl 	__(bx lr)
+dnl  __(sub imm1,imm0,vsp) /* imm1 = delta from vsp to value cell loc  */
+dnl  __(mov arg_z,#nil_value)
+dnl  __(vpush1(arg_z))
+dnl  __(vpush1(arg_z))
+dnl  __(vpush1(arg_z))
+dnl  __(addi imm1,imm1,node_size*3)
+dnl  __(add imm0,vsp,imm1) /* in case stack overflowed  */
+dnl  __(andi. imm1,vsp,1<<word_shift) /* (oddp vsp) ?  */
+dnl  __(mov imm1,#value_cell_header)
+dnl  __(ldr arg_z,[imm0,#0])
+dnl  __(beq cr0,1f)
+dnl  __(str(arg_z,node_size*2(vsp)))
+dnl  __(str(imm1,node_size(vsp)))
+dnl  __(la arg_z,fulltag_misc+node_size(vsp))
+dnl  __(str(arg_z,0(imm0)))
+dnl  __(bx lr)
 dnl 1:
-dnl 	__(str(arg_z,node_size(vsp)))
-dnl 	__(str(imm1,0(vsp)))
-dnl 	__(la arg_z,fulltag_misc(vsp))
-dnl 	__(str(arg_z,0(imm0)))
-dnl 	__(bx lr)
+dnl  __(str(arg_z,node_size(vsp)))
+dnl  __(str(imm1,0(vsp)))
+dnl  __(la arg_z,fulltag_misc(vsp))
+dnl  __(str(arg_z,0(imm0)))
+dnl  __(bx lr)
 dnl 
 dnl         
 dnl _spentry(stkvcellvsp)      
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(vpush1(arg_z))
-dnl 	__(vpush1(arg_z))
-dnl 	__(vpush1(arg_z))
-dnl 	__(mov imm1,#node_size*3)
-dnl 	__(add imm0,vsp,imm1) /* in case stack overflowed  */
-dnl 	__(andi. imm1,vsp,1<<word_shift) /* (oddp vsp) ?  */
-dnl 	__(mov imm1,#value_cell_header)
-dnl 	__(ldr arg_z,[imm0,#0])
-dnl 	__(beq cr0,1f)
-dnl 	__(str(arg_z,node_size*2(vsp)))
-dnl 	__(str(imm1,node_size(vsp)))
-dnl 	__(la arg_z,fulltag_misc+node_size(vsp))
-dnl 	__(str(arg_z,0(imm0)))
-dnl 	__(bx lr)
+dnl  __(mov arg_z,#nil_value)
+dnl  __(vpush1(arg_z))
+dnl  __(vpush1(arg_z))
+dnl  __(vpush1(arg_z))
+dnl  __(mov imm1,#node_size*3)
+dnl  __(add imm0,vsp,imm1) /* in case stack overflowed  */
+dnl  __(andi. imm1,vsp,1<<word_shift) /* (oddp vsp) ?  */
+dnl  __(mov imm1,#value_cell_header)
+dnl  __(ldr arg_z,[imm0,#0])
+dnl  __(beq cr0,1f)
+dnl  __(str(arg_z,node_size*2(vsp)))
+dnl  __(str(imm1,node_size(vsp)))
+dnl  __(la arg_z,fulltag_misc+node_size(vsp))
+dnl  __(str(arg_z,0(imm0)))
+dnl  __(bx lr)
 dnl 1:
-dnl 	__(str(arg_z,node_size(vsp)))
-dnl 	__(str(imm1,0(vsp)))
-dnl 	__(la arg_z,fulltag_misc(vsp))
-dnl 	__(str(arg_z,0(imm0)))
-dnl 	__(bx lr)
+dnl  __(str(arg_z,node_size(vsp)))
+dnl  __(str(imm1,0(vsp)))
+dnl  __(la arg_z,fulltag_misc(vsp))
+dnl  __(str(arg_z,0(imm0)))
+dnl  __(bx lr)
 dnl 
 dnl /* Make a "raw" area on the temp stack, stack-cons a macptr to point to it,  */
@@ -2491,95 +1953,90 @@
 dnl /* in arg_z on exit.  */
 dnl _spentry(makestackblock)
-dnl 	__(unbox_fixnum(imm0,arg_z))
+dnl  __(unbox_fixnum(imm0,arg_z))
 dnl         __(dnode_align(imm0,imm0,tsp_frame.fixed_overhead+macptr.size))
-dnl 	__(cmplri(cr0,imm0,tstack_alloc_limit))
-dnl 	__(bge cr0,1f)
-dnl 	__(TSP_Alloc_Var_Unboxed(imm0))
-dnl 	__(mov imm0,#macptr_header)
-dnl 	__(la imm1,tsp_frame.data_offset+macptr.size(tsp))
-dnl 	__(str(imm0,tsp_frame.data_offset(tsp)))
-dnl 	__(la arg_z,tsp_frame.data_offset+fulltag_misc(tsp))
-dnl 	__(str(imm1,macptr.address(arg_z)))
-dnl         __ifdef(`PPC64')
-dnl          __(std rzero,macptr.domain(arg_z))
-dnl          __(std rzero,macptr.type(arg_z))
-dnl         __else
-dnl 	 __(stfd fp_zero,macptr.domain(arg_z))
-dnl         __endif
-dnl 	__(bx lr)
+dnl  __(cmplri(cr0,imm0,tstack_alloc_limit))
+dnl  __(bge cr0,1f)
+dnl  __(TSP_Alloc_Var_Unboxed(imm0))
+dnl  __(mov imm0,#macptr_header)
+dnl  __(la imm1,tsp_frame.data_offset+macptr.size(tsp))
+dnl  __(str(imm0,tsp_frame.data_offset(tsp)))
+dnl  __(la arg_z,tsp_frame.data_offset+fulltag_misc(tsp))
+dnl  __(str(imm1,macptr.address(arg_z)))
+dnl   __(stfd fp_zero,macptr.domain(arg_z))
+dnl  __(bx lr)
 dnl 
 dnl         /* Too big. Heap cons a gcable macptr  */
 dnl 1:
-dnl 	__(TSP_Alloc_Fixed_Unboxed(0))
-dnl 	__(set_nargs(1))
-dnl 	__(mov fname,#nrs.new_gcable_ptr)
-dnl 	__(jump_fname())
+dnl  __(TSP_Alloc_Fixed_Unboxed(0))
+dnl  __(set_nargs(1))
+dnl  __(mov fname,#nrs.new_gcable_ptr)
+dnl  __(jump_fname())
 dnl 
 dnl /* As above, only set the block's contents to 0.  */
 dnl _spentry(makestackblock0)
-dnl 	__(unbox_fixnum(imm0,arg_z))
+dnl  __(unbox_fixnum(imm0,arg_z))
 dnl         __(dnode_align(imm0,imm0,tsp_frame.fixed_overhead+macptr.size))
-dnl 	__(cmplri(cr0,imm0,tstack_alloc_limit))
-dnl 	__(bge cr0,3f)
-dnl 	__(TSP_Alloc_Var_Unboxed(imm0))
-dnl 	__(Zero_TSP_Frame(imm0,imm1))
-dnl 	__(mov imm0,#macptr_header)
-dnl 	__(la imm1,tsp_frame.data_offset+macptr.size(tsp))
-dnl 	__(str(imm0,tsp_frame.data_offset(tsp)))
-dnl 	__(la arg_z,tsp_frame.data_offset+fulltag_misc(tsp))
-dnl 	__(str(imm1,macptr.address(arg_z))) /* makestackblock0 expects the address to be in imm1  */
-dnl 	__(stfd fp_zero,macptr.domain(arg_z))
-dnl 	__(bx lr)
+dnl  __(cmplri(cr0,imm0,tstack_alloc_limit))
+dnl  __(bge cr0,3f)
+dnl  __(TSP_Alloc_Var_Unboxed(imm0))
+dnl  __(Zero_TSP_Frame(imm0,imm1))
+dnl  __(mov imm0,#macptr_header)
+dnl  __(la imm1,tsp_frame.data_offset+macptr.size(tsp))
+dnl  __(str(imm0,tsp_frame.data_offset(tsp)))
+dnl  __(la arg_z,tsp_frame.data_offset+fulltag_misc(tsp))
+dnl  __(str(imm1,macptr.address(arg_z))) /* makestackblock0 expects the address to be in imm1  */
+dnl  __(stfd fp_zero,macptr.domain(arg_z))
+dnl  __(bx lr)
 dnl 
 dnl         /* Too big. Heap cons a gcable macptr  */
 dnl 3:
-dnl 	__(TSP_Alloc_Fixed_Unboxed(0)) /* "raw" block to make the compiler happy  */
-dnl 
-dnl 	__(mov arg_y,arg_z) /* save block size  */
-dnl 	__(mov arg_z,#t_value) /* clear-p arg to %new-gcable-ptr  */
-dnl 	__(set_nargs(2))
-dnl 	__(mov fname,#nrs.new_gcable_ptr)
-dnl 	__(jump_fname())
+dnl  __(TSP_Alloc_Fixed_Unboxed(0)) /* "raw" block to make the compiler happy  */
+dnl 
+dnl  __(mov arg_y,arg_z) /* save block size  */
+dnl  __(mov arg_z,#t_value) /* clear-p arg to %new-gcable-ptr  */
+dnl  __(set_nargs(2))
+dnl  __(mov fname,#nrs.new_gcable_ptr)
+dnl  __(jump_fname())
 dnl 
 dnl /* Make a list of length arg_y (boxed), initial-element arg_z (boxed) on  */
 dnl /* the tstack.  Return the list in arg_z.  */
 dnl _spentry(makestacklist)
-dnl 	__(add imm0,arg_y,arg_y)
-dnl 	__(cmplri(cr1,imm0,((tstack_alloc_limit+1)-cons.size)))
-dnl 	__(addi imm0,imm0,tsp_frame.fixed_overhead)
-dnl 	__(bge cr1,3f)
-dnl 	__(TSP_Alloc_Var_Boxed(imm0,imm1))
-dnl 	__(mov imm1,arg_y)
-dnl 	__(cmpri(cr1,imm1,0))
-dnl 	__(mov arg_y,arg_z)
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(ldr imm2,[tsp,#tsp_frame.backlink])
-dnl 	__(la imm2,-tsp_frame.fixed_overhead+fulltag_cons(imm2))
-dnl 	__(b 2f)
+dnl  __(add imm0,arg_y,arg_y)
+dnl  __(cmplri(cr1,imm0,((tstack_alloc_limit+1)-cons.size)))
+dnl  __(addi imm0,imm0,tsp_frame.fixed_overhead)
+dnl  __(bge cr1,3f)
+dnl  __(TSP_Alloc_Var_Boxed(imm0,imm1))
+dnl  __(mov imm1,arg_y)
+dnl  __(cmpri(cr1,imm1,0))
+dnl  __(mov arg_y,arg_z)
+dnl  __(mov arg_z,#nil_value)
+dnl  __(ldr imm2,[tsp,#tsp_frame.backlink])
+dnl  __(la imm2,-tsp_frame.fixed_overhead+fulltag_cons(imm2))
+dnl  __(b 2f)
 dnl 1:
-dnl 	__(subi imm1,imm1,fixnum1)
-dnl 	__(cmpri(cr1,imm1,0))
-dnl 	__(_rplacd(imm2,arg_z))
-dnl 	__(_rplaca(imm2,arg_y))
-dnl 	__(mov arg_z,imm2)
-dnl 	__(subi imm2,imm2,cons.size)
+dnl  __(subi imm1,imm1,fixnum1)
+dnl  __(cmpri(cr1,imm1,0))
+dnl  __(_rplacd(imm2,arg_z))
+dnl  __(_rplaca(imm2,arg_y))
+dnl  __(mov arg_z,imm2)
+dnl  __(subi imm2,imm2,cons.size)
 dnl 2:
-dnl 	__(bne cr1,1b)
-dnl 	__(bx lr)
+dnl  __(bne cr1,1b)
+dnl  __(bx lr)
 dnl 
 dnl 3:
-dnl 	__(cmpri(cr1,arg_y,0))
-dnl 	__(TSP_Alloc_Fixed_Boxed(0))  /* make the compiler happy  */
-dnl 	__(mov imm1,arg_y) /* count  */
-dnl 	__(mov arg_y,arg_z) /* initial value  */
-dnl 	__(mov arg_z,#nil_value) /* result  */
-dnl 	__(b 5f)
+dnl  __(cmpri(cr1,arg_y,0))
+dnl  __(TSP_Alloc_Fixed_Boxed(0))  /* make the compiler happy  */
+dnl  __(mov imm1,arg_y) /* count  */
+dnl  __(mov arg_y,arg_z) /* initial value  */
+dnl  __(mov arg_z,#nil_value) /* result  */
+dnl  __(b 5f)
 dnl 4:
-dnl 	__(subi imm1,imm1,fixnum1)
-dnl 	__(cmpri(cr1,imm1,0))
-dnl 	__(Cons(arg_z,arg_y,arg_z))
+dnl  __(subi imm1,imm1,fixnum1)
+dnl  __(cmpri(cr1,imm1,0))
+dnl  __(Cons(arg_z,arg_y,arg_z))
 dnl 5:
-dnl 	__(bne cr1,4b)
-dnl 	__(bx lr)
+dnl  __(bne cr1,4b)
+dnl  __(bx lr)
 dnl 
 dnl /* subtype (boxed) vpushed before initial values. (Had better be a  */
@@ -2587,126 +2044,71 @@
 dnl 
 dnl _spentry(stkgvector)
-dnl 	__(la imm0,-fixnum_one(nargs))
-dnl 	__(cmpri(cr1,imm0,0))
-dnl 	__(add imm1,vsp,nargs)
-dnl 	__(ldru(temp0,-node_size(imm1)))
-dnl 	__(slri(imm2,imm0,num_subtag_bits-fixnumshift))
-dnl         __ifdef(`PPC64')
-dnl          __(unbox_fixnum(imm3,temp0))
-dnl          __(or imm2,imm3,imm2)
-dnl         __else
-dnl 	 __(rlwimi imm2,temp0,32-fixnumshift,32-num_subtag_bits,31)
-dnl         __endif
+dnl  __(la imm0,-fixnum_one(nargs))
+dnl  __(cmpri(cr1,imm0,0))
+dnl  __(add imm1,vsp,nargs)
+dnl  __(ldru(temp0,-node_size(imm1)))
+dnl  __(slri(imm2,imm0,num_subtag_bits-fixnumshift))
+dnl   __(rlwimi imm2,temp0,32-fixnumshift,32-num_subtag_bits,31)
 dnl         __(dnode_align(imm0,imm0,node_size+tsp_frame.fixed_overhead))
-dnl 	__(TSP_Alloc_Var_Boxed_nz(imm0,imm3))
-dnl 	__(str(imm2,tsp_frame.data_offset(tsp)))
-dnl 	__(la arg_z,tsp_frame.data_offset+fulltag_misc(tsp))
-dnl 	__(la imm3,misc_header_offset(arg_z))
-dnl 	__(mov imm0,#fixnum1)
-dnl 	__(b 2f)
+dnl  __(TSP_Alloc_Var_Boxed_nz(imm0,imm3))
+dnl  __(str(imm2,tsp_frame.data_offset(tsp)))
+dnl  __(la arg_z,tsp_frame.data_offset+fulltag_misc(tsp))
+dnl  __(la imm3,misc_header_offset(arg_z))
+dnl  __(mov imm0,#fixnum1)
+dnl  __(b 2f)
 dnl 1:
-dnl 	__(addi imm0,imm0,fixnum1)
-dnl 	__(cmpr(cr1,imm0,nargs))
-dnl 	__(ldru(temp0,-node_size(imm1)))
-dnl 	__(stru(temp0,node_size(imm3)))
+dnl  __(addi imm0,imm0,fixnum1)
+dnl  __(cmpr(cr1,imm0,nargs))
+dnl  __(ldru(temp0,-node_size(imm1)))
+dnl  __(stru(temp0,node_size(imm3)))
 dnl 2:
-dnl 	__(bne cr1,1b)
-dnl 	__(add vsp,vsp,nargs)
-dnl 	__(bx lr)
-dnl 
-dnl /* Allocate a "fulltag_misc" object.  On entry, arg_y contains the element  */
-dnl /* count (boxed) and  arg_z contains the subtag (boxed).  Both of these   */
-dnl /* parameters must be "reasonable" (the  subtag must be valid, the element  */
-dnl /* count must be of type (unsigned-byte 24)/(unsigned-byte 56).   */
-dnl /* On exit, arg_z contains the (properly tagged) misc object; it'll have a  */
-dnl /* proper header on it and its contents will be 0.   imm0 contains   */
-dnl /* the object's header (fulltag = fulltag_immheader or fulltag_nodeheader.)  */
-dnl /* This is intended for things like "make-array" and "%make-bignum" and the   */
-dnl /* like.  Things that involve creating small objects of known size can usually  */
-dnl /* do so inline with less hair.  */
-dnl 
-dnl /* If this has to go out-of-line (to GC or whatever), it should do so via a   */
-dnl /* trap (or should otherwise ensure that both the LR and CTR are preserved   */
-dnl /* where the GC can find them.)  */
-dnl 
-dnl 
-dnl _spentry(misc_alloc)
-dnl         __ifdef(`PPC64')
-dnl          __(extract_unsigned_byte_bits_(imm2,arg_y,56))
-dnl          __(unbox_fixnum(imm0,arg_z))
-dnl          __(sldi imm2,arg_y,num_subtag_bits-fixnumshift)
-dnl          __(clrldi imm1,imm0,64-nlowtagbits)
-dnl          __(or imm0,imm2,imm0)
-dnl          __(extract_fulltag(imm2,imm0))
-dnl          __(cmpdi cr1,imm1,lowtag_nodeheader)
-dnl          __(cmpdi cr2,imm2,ivector_class_64_bit)
-dnl          __(bne- cr0,9f)
-dnl          __(cmpdi cr3,imm2,ivector_class_32_bit)
-dnl          __(cmpdi cr4,imm2,ivector_class_8_bit)
-dnl          __(mov imm2,arg_y)
-dnl          __(cmpdi cr5,imm1,subtag_bit_vector)
-dnl          __(beq cr1,1f)
-dnl          __(beq cr2,1f)
-dnl          __(srdi imm2,imm2,1)
-dnl          __(beq cr3,1f)
-dnl          __(beq cr5,2f)
-dnl          __(srdi imm2,imm2,1)
-dnl          __(bne cr4,1f)
-dnl          __(srdi imm2,imm2,1)
-dnl /* imm2 now = byte count.  Add 8 for header, 15 to align, then clear */
-dnl /* low four bits. */
-dnl 1:
-dnl          __(dnode_align(imm2,imm2,node_size))
-dnl 
-dnl 	 __(Misc_Alloc(arg_z,imm0,imm2))
-dnl 	 __(bx lr)
-dnl 2:      /* bit-vector case  */
-dnl          __(addi imm2,arg_y,7<<fixnumshift)
-dnl          __(srdi imm2,imm2,3+fixnumshift)
-dnl          __(b 1b)
-dnl 9:                      
-dnl 	 __(uuo_interr(error_object_not_unsigned_byte_56,arg_y))
-dnl         __else
-dnl 	 __(extract_unsigned_byte_bits_(imm2,arg_y,24))
-dnl 	 __(unbox_fixnum(imm0,arg_z))
-dnl 	 __(extract_fulltag(imm1,imm0))
-dnl 	 __(bne- cr0,9f)
-dnl 	 __(cmpri(cr0,imm1,fulltag_nodeheader))
-dnl 	 __(mov imm3,imm0)
-dnl 	 __(cmplri(cr1,imm0,max_32_bit_ivector_subtag))
-dnl 	 __(rlwimi imm0,arg_y,num_subtag_bits-fixnum_shift,0,31-num_subtag_bits	)/* imm0 now = header  */
-dnl 	 __(mov imm2,arg_y)
-dnl 	 __(beq cr0,1f)	/* do probe if node object (fixnum element count = byte count).  */
-dnl 	 __(cmplri(cr0,imm3,max_16_bit_ivector_subtag))
-dnl 	 __(bng cr1,1f)	/* do probe if 32-bit imm object  */
-dnl 	 __(cmplri(cr1,imm3,max_8_bit_ivector_subtag))
-dnl 	 __(srwi imm2,imm2,1)
-dnl 	 __(bgt cr0,2f)
-dnl 	 __(bgt cr1,1f)
-dnl 	 __(srwi imm2,imm2,1)
-dnl         /* imm2 now = byte count.  Add 4 for header, 7 to align, then clear */
-dnl         /* low three bits.  */
-dnl 1:
-dnl          __(dnode_align(imm2,imm2,node_size))
-dnl 
-dnl 	 __(Misc_Alloc(arg_z,imm0,imm2))
-dnl 	 __(bx lr)
-dnl 2:
-dnl 	 __(cmplri(imm3,subtag_double_float_vector))
-dnl 	 __(slwi imm2,arg_y,1)
-dnl 	 __(beq 1b)
-dnl 	 __(addi imm2,arg_y,7<<fixnumshift)
-dnl 	 __(srwi imm2,imm2,fixnumshift+3)
-dnl 	 __(b 1b)
-dnl 9:
-dnl 	 __(uuo_interr(error_object_not_unsigned_byte_24,arg_y))
-dnl         __endif
+dnl  __(bne cr1,1b)
+dnl  __(add vsp,vsp,nargs)
+dnl  __(bx lr)
+
+/* Allocate a "fulltag_misc" object.  On entry, arg_y contains the element  */
+/* count (boxed) and  arg_z contains the subtag (boxed).  Both of these   */
+/* parameters must be "reasonable" (the  subtag must be valid, the element  */
+/* count must be of type (unsigned-byte 24)/(unsigned-byte 56).   */
+/* On exit, arg_z contains the (properly tagged) misc object; it'll have a  */
+/* proper header on it and its contents will be 0.   imm0 contains   */
+/* the object's header (fulltag = fulltag_immheader or fulltag_nodeheader.)  */
+
+unsigned_byte_24_mask = 0xe0000003 /* bits that should be clear in a boxed */
+                                   /* (UNSIGNED-BYTE 24) */
+_spentry(misc_alloc)
+        __(tst arg_y,#unsigned_byte_24_mask)
+        __(bne 9f)
+        __(unbox_fixnum(imm0,arg_z))
+        __(orr imm0,imm0,arg_y,lsl #num_subtag_bits-fixnumshift)
+        __(extract_fulltag(imm1,imm0))
+        __(cmp imm1,#fulltag_nodeheader)
+        __(mov imm2,arg_y)      /* imm2 = logical size in bytes */
+        __(beq 1f)
+        __(unbox_fixnum(imm1,arg_z))
+        __(cmp imm1,#max_32_bit_ivector_subtag)
+        __(ble 1f)
+        __(mov imm2,arg_y,lsr #2)
+        __(cmp imm1,#max_8_bit_ivector_subtag)
+        __(ble 1f)
+        __(mov imm2,arg_y,lsr #1)
+        __(cmp imm1,#max_16_bit_ivector_subtag)
+        __(ble 1f)
+        __(mov imm2,arg_y,lsl #1)
+        __(add imm2,imm2,#node_size)
+        __(cmp imm1,#subtag_double_float_vector)
+        __(beq 1f)
+        __(add imm2,arg_y,#7<<fixnumshift)
+        __(mov imm2,imm2,lsr #3+fixnumshift)
+        /* imm2 now = byte count.  Add 4 for header, 7 to align, then clear */
+        /* low three bits.  */
+1:
+        __(dnode_align(imm2,imm2,node_size))
+        __(Misc_Alloc(arg_z,imm0,imm2))
+        __(bx lr)
+9:
+        __(uuo_error_reg_not_xtype(al,arg_y,xtype_unsigned_byte_24))
+
 dnl         
-dnl /* almost exactly as above, but "swap exception handling info" */
-dnl /* on exit and return  */
-dnl /* Deprecated */        
-dnl _spentry(poweropen_ffcallX)
-dnl         .long 0x7c800008        /* debug trap */
-dnl 
 dnl 
 dnl /* Destructuring-bind, macro-bind.  */
@@ -2726,238 +2128,201 @@
 dnl 
 dnl _spentry(macro_bind)
-dnl         __ifdef(`PPC64')
-dnl  	 __(mov whole_reg,arg_reg)
-dnl 	 __(extract_fulltag(imm0,arg_reg))
-dnl          __(cmpri(cr1,arg_reg,nil_value))
-dnl 	 __(cmpri(cr0,imm0,fulltag_cons))
-dnl          __(beq cr1,0f)
-dnl 	 __(bne- cr0,1f)
-dnl 0:             
-dnl 	 __(_cdr(arg_reg,arg_reg))
-dnl 	 __(b local_label(destbind1))
-dnl         __else
-dnl 	 __(mov whole_reg,arg_reg)
-dnl 	 __(extract_lisptag(imm0,arg_reg))
-dnl 	 __(cmpri(cr0,imm0,tag_list))
-dnl 	 __(bne- cr0,1f)
-dnl 	 __(_cdr(arg_reg,arg_reg))
-dnl 	 __(b (local_label(destbind1)))
-dnl         __endif
+dnl   __(mov whole_reg,arg_reg)
+dnl   __(extract_lisptag(imm0,arg_reg))
+dnl   __(cmpri(cr0,imm0,tag_list))
+dnl   __(bne- cr0,1f)
+dnl   __(_cdr(arg_reg,arg_reg))
+dnl   __(b (local_label(destbind1)))
 dnl 1:
-dnl 	__(mov arg_y,#XCALLNOMATCH)
-dnl 	__(mov arg_z,whole_reg)
-dnl 	__(set_nargs(2))
-dnl 	__(b _SPksignalerr)
+dnl  __(mov arg_y,#XCALLNOMATCH)
+dnl  __(mov arg_z,whole_reg)
+dnl  __(set_nargs(2))
+dnl  __(b _SPksignalerr)
 dnl 
 dnl 
 dnl _spentry(destructuring_bind)
-dnl 	__(mov whole_reg,arg_reg)
+dnl  __(Mov whole_reg,arg_reg)
 dnl         __(b local_label(destbind1))
-dnl 	
+dnl  
 dnl _spentry(destructuring_bind_inner)
-dnl 	__(mov whole_reg,arg_z)
+dnl  __(mov whole_reg,arg_z)
 dnl local_label(destbind1): 
-dnl 	/* Extract required arg count.  */
-dnl 	/* A bug in gas: can't handle shift count of "32" (= 0  */
-dnl 	ifelse(eval(mask_req_width+mask_req_start),eval(32),`
-dnl 	__(clrlwi. imm0,nargs,mask_req_start)
-dnl 	',`
-dnl 	__(extrwi. imm0,nargs,mask_req_width,mask_req_start)
-dnl 	')
-dnl 	__(extrwi imm1,nargs,mask_opt_width,mask_opt_start)
-dnl 	__(rlwinm imm2,nargs,0,mask_initopt,mask_initopt)
-dnl 	__(rlwinm imm4,nargs,0,mask_keyp,mask_keyp)
-dnl 	__(cmpri(cr4,imm4,0))
-dnl 	__(rlwinm imm4,nargs,0,mask_restp,mask_restp)
-dnl 	__(cmpri(cr5,imm4,0))
-dnl 	__(cmpri(cr1,imm1,0))
-dnl 	__(cmpri(cr2,imm2,0))
-dnl 	/* Save entry vsp in case of error.  */
-dnl 	__(mov imm4,vsp)
-dnl 	__(beq cr0,2f)
+dnl  /* Extract required arg count.  */
+dnl  /* A bug in gas: can't handle shift count of "32" (= 0  */
+dnl  ifelse(eval(mask_req_width+mask_req_start),eval(32),`
+dnl  __(clrlwi. imm0,nargs,mask_req_start)
+dnl  ',`
+dnl  __(extrwi. imm0,nargs,mask_req_width,mask_req_start)
+dnl  ')
+dnl  __(extrwi imm1,nargs,mask_opt_width,mask_opt_start)
+dnl  __(rlwinm imm2,nargs,0,mask_initopt,mask_initopt)
+dnl  __(rlwinm imm4,nargs,0,mask_keyp,mask_keyp)
+dnl  __(cmpri(cr4,imm4,0))
+dnl  __(rlwinm imm4,nargs,0,mask_restp,mask_restp)
+dnl  __(cmpri(cr5,imm4,0))
+dnl  __(cmpri(cr1,imm1,0))
+dnl  __(cmpri(cr2,imm2,0))
+dnl  /* Save entry vsp in case of error.  */
+dnl  __(mov imm4,vsp)
+dnl  __(beq cr0,2f)
 dnl 1:
-dnl 	__(cmpri(cr7,arg_reg,nil_value))
-dnl         __ifdef(`PPC64')
-dnl          __(extract_fulltag(imm3,arg_reg))
-dnl          __(cmpri(cr3,imm3,fulltag_cons))
-dnl         __else       
-dnl 	 __(extract_lisptag(imm3,arg_reg))
-dnl 	 __(cmpri(cr3,imm3,tag_list))
-dnl         __endif
-dnl 	__(subi imm0,imm0,1)
-dnl 	__(cmpri(cr0,imm0,0))
-dnl 	__(beq cr7,toofew)
-dnl 	__(bne cr3,badlist)
-dnl 	__(ldr arg_x,[arg_reg,#cons.car])
-dnl 	__(ldr arg_reg,[arg_reg,#cons.cdr])
-dnl 	__(vpush1(arg_x))
-dnl 	__(bne cr0,1b)
+dnl  __(cmpri(cr7,arg_reg,nil_value))
+dnl   __(extract_lisptag(imm3,arg_reg))
+dnl   __(cmpri(cr3,imm3,tag_list))
+dnl  __(subi imm0,imm0,1)
+dnl  __(cmpri(cr0,imm0,0))
+dnl  __(beq cr7,toofew)
+dnl  __(bne cr3,badlist)
+dnl  __(ldr arg_x,[arg_reg,#cons.car])
+dnl  __(ldr arg_reg,[arg_reg,#cons.cdr])
+dnl  __(vpush1(arg_x))
+dnl  __(bne cr0,1b)
 dnl 2:
-dnl 	__(beq cr1,rest_keys)
-dnl 	__(bne cr2,opt_supp)
-dnl 	/* 'simple' &optionals:	 no supplied-p, default to nil.  */
+dnl  __(beq cr1,rest_keys)
+dnl  __(bne cr2,opt_supp)
+dnl  /* 'simple' &optionals:  no supplied-p, default to nil.  */
 dnl simple_opt_loop:
-dnl 	__(cmpri(cr0,arg_reg,nil_value))
-dnl         __ifdef(`PPC64')
-dnl          __(extract_fulltag(imm3,arg_reg))
-dnl          __(cmpri(cr3,imm3,fulltag_cons))
-dnl         __else
-dnl 	 __(extract_lisptag(imm3,arg_reg))
-dnl 	 __(cmpri(cr3,imm3,tag_list))
-dnl         __endif
-dnl 	__(subi imm1,imm1,1)
-dnl 	__(cmpri(cr1,imm1,0))
-dnl 	__(mov imm5,#nil_value)
-dnl 	__(beq cr0,default_simple_opt)
-dnl 	__(bne cr3,badlist)
-dnl 	__(ldr arg_x,[arg_reg,#cons.car])
-dnl 	__(ldr arg_reg,[arg_reg,#cons.cdr])
-dnl 	__(vpush1(arg_x))
-dnl 	__(bne cr1,simple_opt_loop)
-dnl 	__(b rest_keys)
+dnl  __(cmpri(cr0,arg_reg,nil_value))
+dnl   __(extract_lisptag(imm3,arg_reg))
+dnl   __(cmpri(cr3,imm3,tag_list))
+dnl  __(subi imm1,imm1,1)
+dnl  __(cmpri(cr1,imm1,0))
+dnl  __(mov imm5,#nil_value)
+dnl  __(beq cr0,default_simple_opt)
+dnl  __(bne cr3,badlist)
+dnl  __(ldr arg_x,[arg_reg,#cons.car])
+dnl  __(ldr arg_reg,[arg_reg,#cons.cdr])
+dnl  __(vpush1(arg_x))
+dnl  __(bne cr1,simple_opt_loop)
+dnl  __(b rest_keys)
 dnl default_simple_opt_loop:
-dnl 	__(subi imm1,imm1,1)
-dnl 	__(cmpri(cr1,imm1,0))
+dnl  __(subi imm1,imm1,1)
+dnl  __(cmpri(cr1,imm1,0))
 dnl default_simple_opt:
-dnl 	__(vpush1(imm5))
-dnl 	__(bne cr1,default_simple_opt_loop)
-dnl 	__(b rest_keys)
-dnl 	/* Provide supplied-p vars for the &optionals.  */
+dnl  __(vpush1(imm5))
+dnl  __(bne cr1,default_simple_opt_loop)
+dnl  __(b rest_keys)
+dnl  /* Provide supplied-p vars for the &optionals.  */
 dnl opt_supp:
-dnl 	__(mov arg_y,#t_value)
+dnl  __(mov arg_y,#t_value)
 dnl opt_supp_loop:
-dnl 	__(cmpri(cr0,arg_reg,nil_value))
-dnl         __ifdef(`PPC64')
-dnl          __(extract_fulltag(imm3,arg_reg))
-dnl          __(cmpri(cr3,imm3,fulltag_cons))
-dnl         __else        
-dnl 	 __(extract_lisptag(imm3,arg_reg))
-dnl 	 __(cmpri(cr3,imm3,tag_list))
-dnl         __endif
-dnl 	__(subi imm1,imm1,1)
-dnl 	__(cmpri(cr1,imm1,0))
-dnl 	__(beq cr0,default_hard_opt)
-dnl 	__(bne cr3,badlist)
-dnl 	__(ldr arg_x,[arg_reg,#cons.car])
-dnl 	__(ldr arg_reg,[arg_reg,#cons.cdr])
-dnl 	__(vpush1(arg_x))
-dnl 	__(vpush1(arg_y))
-dnl 	__(bne cr1,opt_supp_loop)
-dnl 	__(b rest_keys)
+dnl  __(cmpri(cr0,arg_reg,nil_value))
+dnl   __(extract_lisptag(imm3,arg_reg))
+dnl   __(cmpri(cr3,imm3,tag_list))
+dnl  __(subi imm1,imm1,1)
+dnl  __(cmpri(cr1,imm1,0))
+dnl  __(beq cr0,default_hard_opt)
+dnl  __(bne cr3,badlist)
+dnl  __(ldr arg_x,[arg_reg,#cons.car])
+dnl  __(ldr arg_reg,[arg_reg,#cons.cdr])
+dnl  __(vpush1(arg_x))
+dnl  __(vpush1(arg_y))
+dnl  __(bne cr1,opt_supp_loop)
+dnl  __(b rest_keys)
 dnl default_hard_opt_loop:
-dnl 	__(subi imm1,imm1,1)
-dnl 	__(cmpri(cr1,imm1,0))
+dnl  __(subi imm1,imm1,1)
+dnl  __(cmpri(cr1,imm1,0))
 dnl default_hard_opt:
-dnl 	__(vpush1(imm5))
-dnl 	__(vpush1(imm5))
-dnl 	__(bne cr1,default_hard_opt_loop)
+dnl  __(vpush1(imm5))
+dnl  __(vpush1(imm5))
+dnl  __(bne cr1,default_hard_opt_loop)
 dnl rest_keys:
-dnl 	__(cmpri(cr0,arg_reg,nil_value))
-dnl 	__(bne cr5,have_rest)
-dnl 	__(bne cr4,have_keys)
-dnl 	__(bne cr0,toomany)
-dnl 	__(bx lr)
+dnl  __(cmpri(cr0,arg_reg,nil_value))
+dnl  __(bne cr5,have_rest)
+dnl  __(bne cr4,have_keys)
+dnl  __(bne cr0,toomany)
+dnl  __(bx lr)
 dnl have_rest:
-dnl 	__(vpush1(arg_reg))
-dnl 	__(beqlr cr4)
+dnl  __(vpush1(arg_reg))
+dnl  __(beqlr cr4)
 dnl have_keys:
-dnl 	/* Ensure that arg_reg contains a proper,even-length list.  */
-dnl 	/* Insist that its length is <= 512 (as a cheap circularity check.)  */
-dnl 	__(mov imm0,#256)
-dnl 	__(mov arg_x,arg_reg)
+dnl  /* Ensure that arg_reg contains a proper,even-length list.  */
+dnl  /* Insist that its length is <= 512 (as a cheap circularity check.)  */
+dnl  __(mov imm0,#256)
+dnl  __(mov arg_x,arg_reg)
 dnl count_keys_loop:
-dnl         __ifdef(`PPC64')
-dnl          __(extract_fulltag(imm3,arg_x))
-dnl          __(cmpri(cr3,imm3,fulltag_cons))
-dnl         __else
-dnl 	 __(extract_lisptag(imm3,arg_x))
-dnl 	 __(cmpri(cr3,imm3,tag_list))
-dnl         __endif
-dnl 	__(cmpri(cr0,arg_x,nil_value))
-dnl 	__(subi imm0,imm0,1)
-dnl 	__(cmpri(cr4,imm0,0))
-dnl 	__(beq cr0,counted_keys)
-dnl 	__(bne cr3,badlist)
-dnl 	__(ldr arg_x,[arg_x,#cons.cdr])
-dnl         __ifdef(`PPC64')
-dnl          __(extract_fulltag(imm3,arg_x))
-dnl          __(cmpri(cr3,imm3,fulltag_cons))
-dnl         __else
-dnl 	 __(extract_lisptag(imm3,arg_x))
-dnl 	 __(cmpri(cr3,imm3,tag_list))
-dnl         __endif
-dnl 	__(blt cr4,toomany)
-dnl 	__(cmpri(cr0,arg_x,nil_value))
-dnl 	__(beq cr0,db_badkeys)
-dnl 	__(bne cr3,badlist)
-dnl 	__(ldr arg_x,[arg_x,#cons.cdr])
-dnl 	__(b count_keys_loop)
+dnl   __(extract_lisptag(imm3,arg_x))
+dnl   __(cmpri(cr3,imm3,tag_list))
+dnl  __(cmpri(cr0,arg_x,nil_value))
+dnl  __(subi imm0,imm0,1)
+dnl  __(cmpri(cr4,imm0,0))
+dnl  __(beq cr0,counted_keys)
+dnl  __(bne cr3,badlist)
+dnl  __(ldr arg_x,[arg_x,#cons.cdr])
+dnl   __(extract_lisptag(imm3,arg_x))
+dnl   __(cmpri(cr3,imm3,tag_list))
+dnl  __(blt cr4,toomany)
+dnl  __(cmpri(cr0,arg_x,nil_value))
+dnl  __(beq cr0,db_badkeys)
+dnl  __(bne cr3,badlist)
+dnl  __(ldr arg_x,[arg_x,#cons.cdr])
+dnl  __(b count_keys_loop)
 dnl counted_keys:
-dnl 	/* We've got a proper, even-length list of key/value pairs in */
-dnl 	/* arg_reg. For each keyword var in the lambda-list, push a pair */
-dnl 	/* of NILs on the vstack.  */
-dnl 	__(extrwi. imm0,nargs,mask_key_width,mask_key_start )
-dnl 	__(mov imm2,imm0) 	/* save number of keys  */
-dnl 	__(mov imm5,#nil_value)
-dnl 	__(b push_pair_test)
+dnl  /* We've got a proper, even-length list of key/value pairs in */
+dnl  /* arg_reg. For each keyword var in the lambda-list, push a pair */
+dnl  /* of NILs on the vstack.  */
+dnl  __(extrwi. imm0,nargs,mask_key_width,mask_key_start )
+dnl  __(mov imm2,imm0)  /* save number of keys  */
+dnl  __(mov imm5,#nil_value)
+dnl  __(b push_pair_test)
 dnl push_pair_loop:
-dnl 	__(cmpri(cr0,imm0,1))
-dnl 	__(subi imm0,imm0,1)
-dnl 	__(vpush1(imm5))
-dnl 	__(vpush1(imm5))
+dnl  __(cmpri(cr0,imm0,1))
+dnl  __(subi imm0,imm0,1)
+dnl  __(vpush1(imm5))
+dnl  __(vpush1(imm5))
 dnl push_pair_test:
-dnl 	__(bne cr0,push_pair_loop)
-dnl 	__(slwi imm2,imm2,dnode_shift)  /* pairs -> bytes  */
-dnl 	__(add imm2,vsp,imm2)		/* imm2 points below pairs  */
-dnl 	__(mov imm0,#0)			/* count unknown keywords so far  */
-dnl 	__(extrwi imm1,nargs,1,mask_aok) /* unknown keywords allowed  */
-dnl 	__(extrwi nargs,nargs,mask_key_width,mask_key_start)
-dnl 	/* Now, for each keyword/value pair in the list  */
-dnl 	/*  a) if the keyword is found in the keyword vector, set the  */
-dnl 	/*     corresponding entry on the vstack to the value and the  */
-dnl 	/*     associated supplied-p var to T.  */
-dnl 	/*  b) Regardless of whether or not the keyword is found,  */
+dnl  __(bne cr0,push_pair_loop)
+dnl  __(slwi imm2,imm2,dnode_shift)  /* pairs -> bytes  */
+dnl  __(add imm2,vsp,imm2)  /* imm2 points below pairs  */
+dnl  __(mov imm0,#0)   /* count unknown keywords so far  */
+dnl  __(extrwi imm1,nargs,1,mask_aok) /* unknown keywords allowed  */
+dnl  __(extrwi nargs,nargs,mask_key_width,mask_key_start)
+dnl  /* Now, for each keyword/value pair in the list  */
+dnl  /*  a) if the keyword is found in the keyword vector, set the  */
+dnl  /*     corresponding entry on the vstack to the value and the  */
+dnl  /*     associated supplied-p var to T.  */
+dnl  /*  b) Regardless of whether or not the keyword is found,  */
 dnl         /*     if :ALLOW-OTHER-KEYS is provided with a non-nil value, */
-dnl 	/*     set the low bit of imm1 to indicate that unknown keywords  */
-dnl 	/*     are acceptable. (This bit is pre-set above to the value */
+dnl  /*     set the low bit of imm1 to indicate that unknown keywords  */
+dnl  /*     are acceptable. (This bit is pre-set above to the value */
 dnl         /*     the encoded value of &allow_other_keys.) */
-dnl 	/*  c) If the keyword is not found (and isn't :ALLOW-OTHER-KEYS), increment  */
-dnl 	/*     the count of unknown keywords in the high bits of imm1*/
-dnl 	/* At the end of the list, signal an error if any unknown keywords were seen  */
-dnl 	/* but not allowed.  Otherwise, return.  */
+dnl  /*  c) If the keyword is not found (and isn't :ALLOW-OTHER-KEYS), increment  */
+dnl  /*     the count of unknown keywords in the high bits of imm1*/
+dnl  /* At the end of the list, signal an error if any unknown keywords were seen  */
+dnl  /* but not allowed.  Otherwise, return.  */
 dnl 
 dnl match_keys_loop:
-dnl 	__(cmpri(cr0,arg_reg,nil_value))
-dnl 	__(mov imm0,#0)
-dnl 	__(mov imm3,#misc_data_offset)
-dnl 	__(beq cr0,matched_keys)
-dnl 	__(ldr arg_x,[arg_reg,#cons.car])
-dnl 	__(mov arg_y,#nrs.kallowotherkeys)
-dnl 	__(cmpr(cr3,arg_x,arg_y))	/* :ALLOW-OTHER-KEYS ?  */
-dnl 	__(ldr arg_reg,[arg_reg,#cons.cdr])
-dnl 	__(ldr arg_y,[arg_reg,#cons.car])
-dnl 	__(cmpr(cr4,imm0,nargs))
-dnl 	__(ldr arg_reg,[arg_reg,#cons.cdr])
-dnl 	__(b match_test)
+dnl  __(cmpri(cr0,arg_reg,nil_value))
+dnl  __(mov imm0,#0)
+dnl  __(mov imm3,#misc_data_offset)
+dnl  __(beq cr0,matched_keys)
+dnl  __(ldr arg_x,[arg_reg,#cons.car])
+dnl  __(mov arg_y,#nrs.kallowotherkeys)
+dnl  __(cmpr(cr3,arg_x,arg_y)) /* :ALLOW-OTHER-KEYS ?  */
+dnl  __(ldr arg_reg,[arg_reg,#cons.cdr])
+dnl  __(ldr arg_y,[arg_reg,#cons.car])
+dnl  __(cmpr(cr4,imm0,nargs))
+dnl  __(ldr arg_reg,[arg_reg,#cons.cdr])
+dnl  __(b match_test)
 dnl match_loop:
-dnl 	__(ldrx(temp0,keyvect_reg,imm3))
-dnl 	__(cmpr(cr0,arg_x,temp0))
-dnl 	__(addi imm0,imm0,1)
-dnl 	__(cmpr(cr4,imm0,nargs))
-dnl 	__(addi imm3,imm3,node_size)
-dnl 	__(bne cr0,match_test)
-dnl 	/* Got a hit.  Unless this keyword's been seen already, set it.  */
-dnl 	__(slwi imm0,imm0,dnode_shift)
-dnl 	__(subf imm0,imm0,imm2)
-dnl 	__(ldr temp0,[imm0,#0])
-dnl 	__(cmpri(cr0,temp0,nil_value))
-dnl 	__(mov temp0,#t_value)
-dnl 	__(bne cr0,match_keys_loop)	/* already saw this  */
-dnl 	__(str(arg_y,node_size*1(imm0)))
-dnl 	__(str(temp0,node_size*0(imm0)))
+dnl  __(ldrx(temp0,keyvect_reg,imm3))
+dnl  __(cmpr(cr0,arg_x,temp0))
+dnl  __(addi imm0,imm0,1)
+dnl  __(cmpr(cr4,imm0,nargs))
+dnl  __(addi imm3,imm3,node_size)
+dnl  __(bne cr0,match_test)
+dnl  /* Got a hit.  Unless this keyword's been seen already, set it.  */
+dnl  __(slwi imm0,imm0,dnode_shift)
+dnl  __(subf imm0,imm0,imm2)
+dnl  __(ldr temp0,[imm0,#0])
+dnl  __(cmpri(cr0,temp0,nil_value))
+dnl  __(mov temp0,#t_value)
+dnl  __(bne cr0,match_keys_loop) /* already saw this  */
+dnl  __(str(arg_y,node_size*1(imm0)))
+dnl  __(str(temp0,node_size*0(imm0)))
 dnl         __(bne cr3,match_keys_loop)
-dnl 	__(b match_keys_check_aok)
+dnl  __(b match_keys_check_aok)
 dnl match_test:
-dnl 	__(bne cr4,match_loop)
+dnl  __(bne cr4,match_loop)
 dnl         __(beq cr3,match_keys_check_aok)
 dnl         __(addi imm1,imm1,node_size)
@@ -2970,5 +2335,5 @@
 dnl         __(beq cr1,match_keys_loop)
 dnl         __(ori imm1,imm1,1)
-dnl 	__(b match_keys_loop)
+dnl  __(b match_keys_loop)
 dnl matched_keys:
 dnl         __(clrrwi. imm0,imm1,2)
@@ -2976,23 +2341,23 @@
 dnl         __(andi. imm1,imm1,1)
 dnl         __(bnelr)
-dnl 	/* Some unrecognized keywords.  Complain generically about  */
-dnl 	/* invalid keywords.  */
+dnl  /* Some unrecognized keywords.  Complain generically about  */
+dnl  /* invalid keywords.  */
 dnl db_badkeys:
-dnl 	__(mov arg_y,#XBADKEYS)
-dnl 	__(b destructure_error)
+dnl  __(mov arg_y,#XBADKEYS)
+dnl  __(b destructure_error)
 dnl toomany:
-dnl 	__(mov arg_y,#XCALLTOOMANY)
-dnl 	__(b destructure_error)
+dnl  __(mov arg_y,#XCALLTOOMANY)
+dnl  __(b destructure_error)
 dnl toofew:
-dnl 	__(mov arg_y,#XCALLTOOFEW)
-dnl 	__(b destructure_error)
+dnl  __(mov arg_y,#XCALLTOOFEW)
+dnl  __(b destructure_error)
 dnl badlist:
-dnl 	__(mov arg_y,#XCALLNOMATCH)
-dnl 	/* b destructure_error  */
+dnl  __(mov arg_y,#XCALLNOMATCH)
+dnl  /* b destructure_error  */
 dnl destructure_error:
-dnl 	__(mov vsp,imm4)		/* undo everything done to the stack  */
-dnl 	__(mov arg_z,whole_reg)
-dnl 	__(set_nargs(2))
-dnl 	__(b _SPksignalerr)
+dnl  __(mov vsp,imm4)  /* undo everything done to the stack  */
+dnl  __(mov arg_z,whole_reg)
+dnl  __(set_nargs(2))
+dnl  __(b _SPksignalerr)
 dnl         
 dnl /* vpush the values in the value set atop the vsp, incrementing nargs.  */
@@ -3003,1005 +2368,74 @@
 dnl /* First, walk the segments reversing the pointer to previous segment pointers  */
 dnl /* Can tell the end because that previous segment pointer is the prev tsp pointer  */
-dnl 	__(ldr imm0,[tsp,#tsp_frame.backlink]) /* previous tsp  */
-dnl 	__(mov imm1,tsp) /* current segment  */
-dnl 	__(mov imm2,tsp) /* last segment  */
+dnl  __(ldr imm0,[tsp,#tsp_frame.backlink]) /* previous tsp  */
+dnl  __(mov imm1,tsp) /* current segment  */
+dnl  __(mov imm2,tsp) /* last segment  */
 dnl local_label(walkloop):
-dnl 	__(ldr imm3,[imm1,#tsp_frame.fixed_overhead+node_size]) /* next segment  */
-dnl 	__(cmpr(cr0,imm0,imm3)) /* last segment?  */
-dnl 	__(str(imm2,tsp_frame.fixed_overhead+node_size(imm1))) /* reverse pointer  */
-dnl 	__(mov imm2,imm1) /* last segment <- current segment  */
-dnl 	__(mov imm1,imm3) /* current segment <- next segment  */
-dnl 	__(bne cr0,local_label(walkloop))
+dnl  __(ldr imm3,[imm1,#tsp_frame.fixed_overhead+node_size]) /* next segment  */
+dnl  __(cmpr(cr0,imm0,imm3)) /* last segment?  */
+dnl  __(str(imm2,tsp_frame.fixed_overhead+node_size(imm1))) /* reverse pointer  */
+dnl  __(mov imm2,imm1) /* last segment <- current segment  */
+dnl  __(mov imm1,imm3) /* current segment <- next segment  */
+dnl  __(bne cr0,local_label(walkloop))
 dnl 
 dnl         /* the final segment ptr is now in imm2  */
 dnl         /* walk backwards, pushing values on VSP and incrementing NARGS  */
 dnl local_label(pushloop):
-dnl 	__(ldr imm0,[imm2,#tsp_frame.data_offset]) /* nargs in segment  */
-dnl 	__(cmpri(cr0,imm0,0))
-dnl 	__(cmpr(cr1,imm2,tsp))
-dnl 	__(la imm3,tsp_frame.data_offset+(2*node_size)(imm2))
-dnl 	__(add imm3,imm3,imm0)
-dnl 	__(add nargs,nargs,imm0)
-dnl 	__(b 2f)
+dnl  __(ldr imm0,[imm2,#tsp_frame.data_offset]) /* nargs in segment  */
+dnl  __(cmpri(cr0,imm0,0))
+dnl  __(cmpr(cr1,imm2,tsp))
+dnl  __(la imm3,tsp_frame.data_offset+(2*node_size)(imm2))
+dnl  __(add imm3,imm3,imm0)
+dnl  __(add nargs,nargs,imm0)
+dnl  __(b 2f)
 dnl 1:
-dnl 	__(ldru(arg_z,-node_size(imm3)))
-dnl 	__(cmpri(cr0,imm0,fixnum_one))
-dnl 	__(subi imm0,imm0,fixnum_one)
-dnl 	__(vpush1(arg_z))
+dnl  __(ldru(arg_z,-node_size(imm3)))
+dnl  __(cmpri(cr0,imm0,fixnum_one))
+dnl  __(subi imm0,imm0,fixnum_one)
+dnl  __(vpush1(arg_z))
 dnl 2:
-dnl 	__(bne cr0,1b)
-dnl 	__(ldr imm2,[imm2,#tsp_frame.data_offset+node_size]) /* previous segment  */
-dnl 	__(bne cr1,local_label(pushloop))
-dnl 	__(unlink(tsp))
-dnl 	__(bx lr)
-dnl 
-dnl 	
-dnl /* Go out of line to do this.  Sheesh.  */
-dnl 
-dnl _spentry(vpopargregs)
-dnl 	__(cmpri(cr0,nargs,0))
-dnl 	__(cmpri(cr1,nargs,2<<fixnumshift))
-dnl 	__(beqlr cr0)
-dnl 	__(beq cr1,local_label(yz))
-dnl 	__(blt cr1,local_label(z))
-dnl 	__(ldr arg_z,[vsp,#node_size*0])
-dnl 	__(ldr arg_y,[vsp,#node_size*1])
-dnl 	__(ldr arg_x,[vsp,#node_size*2])
-dnl 	__(la vsp,node_size*3(vsp))
-dnl 	__(bx lr)
-dnl local_label(yz):
-dnl 	__(ldr arg_z,[vsp,#node_size*0])
-dnl 	__(ldr arg_y,[vsp,#node_size*1])
-dnl 	__(la vsp,node_size*2(vsp))
-dnl 	__(bx lr)
-dnl local_label(z):
-dnl 	__(ldr arg_z,[vsp,#node_size*0])
-dnl 	__(la vsp,node_size*1(vsp))
-dnl 	__(bx lr)
-dnl 
-dnl /* If arg_z is an integer, return in imm0 something whose sign  */
-dnl /* is the same as arg_z's.  If not an integer, error.  */
-dnl _spentry(integer_sign)
-dnl 	__(extract_typecode(imm0,arg_z))
-dnl 	__(cmpri(cr1,imm0,tag_fixnum))
-dnl 	__(cmpri(cr0,imm0,subtag_bignum))
-dnl 	__(mov imm0,arg_z)
-dnl 	__(beqlr+ cr1)
-dnl 	__(bne- cr0,1f)
-dnl 	__(getvheader(imm0,arg_z))
-dnl         __ifdef(`PPC64')
-dnl          __(header_size(imm0,imm0))
-dnl          __(sldi imm0,imm0,2)
-dnl         __else
-dnl          __(header_length(imm0,imm0)) /* boxed length = scaled size  */
-dnl         __endif
-dnl         __(addi imm0,imm0,misc_data_offset-4) /* bias, less 1 element  */
-dnl 	__(lwzx imm0,arg_z,imm0)
-dnl 	__(cmpwi cr0,imm0,0)
-dnl 	__(mov imm0,#1)
-dnl 	__(bgelr cr0)
-dnl 	__(mov imm0,#-1)
-dnl 	__(bx lr)
-dnl 1:
-dnl 	__(uuo_interr(error_object_not_integer,arg_z))
-dnl 
+dnl  __(bne cr0,1b)
+dnl  __(ldr imm2,[imm2,#tsp_frame.data_offset+node_size]) /* previous segment  */
+dnl  __(bne cr1,local_label(pushloop))
+dnl  __(unlink(tsp))
+dnl  __(bx lr)
+
+
+/* Go out of line to do this.  Sheesh.  */
+_spentry(vpopargregs)
+        __(cmp nargs,#0)
+        __(bxeq lr)
+        __(vpop_argregs_nz)
+        __(bx lr)
+
+/* If arg_z is an integer, return in imm0 something whose sign  */
+/* is the same as arg_z's.  If not an integer, error.  */
+_spentry(integer_sign)
+        __(test_fixnum(arg_z))
+        __(moveq imm0,arg_z)
+        __(bxeq lr)
+        __(extract_typecode(imm0,arg_z))
+        __(cmp imm0,#subtag_bignum)
+        __(uuo_error_reg_not_xtype(ne,arg_z,xtype_integer))
+        __(getvheader(imm0,arg_z))
+        __(header_length(imm0,imm0)) /* boxed length = scaled size  */
+        __(add imm0,imm0,#misc_data_offset-4) /* bias, less 1 element  */
+        __(ldr imm0,[arg_z,imm0])
+        __(cmp imm0,0)
+        __(movge imm0,#1)
+        __(movlt imm0,#-1)
+        __(bx lr)
+
+
 dnl /* like misc_set, only pass the (boxed) subtag in temp0  */
 dnl _spentry(subtag_misc_set)
-dnl 	__(trap_unless_fulltag_equal(arg_x,fulltag_misc,imm0))
-dnl 	__(trap_unless_lisptag_equal(arg_y,tag_fixnum,imm0))
-dnl 	__(vector_length(imm0,arg_x,imm1))
-dnl 	__(trlge(arg_y,imm0))
-dnl 	__(unbox_fixnum(imm1,temp0))
-dnl local_label(misc_set_common):
-dnl         __ifdef(`PPC64')
-dnl          __(slwi imm1,imm1,3)
-dnl          __(mov imm0,#LO(local_label(misc_set_jmp)))
-dnl          __(addis imm0,imm0,HA(local_label(misc_set_jmp)))
-dnl          __(ldx imm0,imm0,imm1)
-dnl          __(mtctr imm0)
-dnl          __(bctr)
-dnl local_label(misc_set_jmp):              
-dnl         /* 00-0f  */
-dnl          .quad local_label(misc_set_invalid) /* 00 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 01 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* 02 immheader_0  */
-dnl          .quad _SPgvset /* 03 function  */
-dnl          .quad local_label(misc_set_invalid) /* 04 cons  */
-dnl          .quad local_label(misc_set_invalid) /* 05 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* 06 immheader_1  */
-dnl          .quad _SPgvset /* 07 catch_frame  */
-dnl          .quad local_label(misc_set_invalid) /* 08 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 09 imm_2  */
-dnl          .quad local_label(misc_set_u32) /* 0a code_vector  */
-dnl          .quad _SPgvset /* 0b slot_vector  */
-dnl          .quad local_label(misc_set_invalid) /* 0c misc  */
-dnl          .quad local_label(misc_set_invalid) /* 0d imm3  */
-dnl          .quad local_label(misc_set_invalid) /* 0e immheader_3  */
-dnl          .quad _SPgvset /* 0f ratio  */
-dnl         /* 10-1f  */
-dnl          .quad local_label(misc_set_invalid) /* 10 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 11 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* 12 immheader_0  */
-dnl          .quad _SPgvset /* 13 symbol_0  */
-dnl          .quad local_label(misc_set_invalid) /* 14 cons  */
-dnl          .quad local_label(misc_set_invalid) /* 15 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* 16 immheader_1  */
-dnl          .quad _SPgvset /* 17 lisp_tread  */
-dnl          .quad local_label(misc_set_invalid) /* 18 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 19 imm_2  */
-dnl          .quad local_label(misc_set_u32) /* 1a xcode_vector  */
-dnl          .quad _SPgvset /* 1b instance  */
-dnl          .quad local_label(misc_set_invalid) /* 1c misc  */
-dnl          .quad local_label(misc_set_invalid) /* 1d imm3  */
-dnl          .quad local_label(misc_set_u64) /* 1e macptr  */
-dnl          .quad _SPgvset /* 1f complex  */
-dnl         /* 20-2f  */
-dnl          .quad local_label(misc_set_invalid) /* 20 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 21 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* 22 immheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 23 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 24 cons  */
-dnl          .quad local_label(misc_set_invalid) /* 25 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* 26 immheader_1  */
-dnl          .quad _SPgvset /* 27 lock  */
-dnl          .quad local_label(misc_set_invalid) /* 28 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 29 imm_2  */
-dnl          .quad local_label(misc_set_u32) /* 2a bignum  */
-dnl          .quad _SPgvset /* 2b struct  */
-dnl          .quad local_label(misc_set_invalid) /* 2c misc  */
-dnl          .quad local_label(misc_set_invalid) /* 2d imm3  */
-dnl          .quad local_label(misc_set_u64) /* 2e dead_macptr  */
-dnl          .quad local_label(misc_set_invalid) /* 2f nodeheader_3  */
-dnl         /* 30-3f  */
-dnl          .quad local_label(misc_set_invalid) /* 30 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 31 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* 32 immheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 33 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 34 cons  */
-dnl          .quad local_label(misc_set_invalid) /* 35 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* 36 immheader_1  */
-dnl          .quad _SPgvset /* 37 hash_vector  */
-dnl          .quad local_label(misc_set_invalid) /* 38 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 39 imm_2  */
-dnl          .quad local_label(misc_set_u32) /* 3a double_float  */
-dnl          .quad _SPgvset /* 3b istruct  */
-dnl          .quad local_label(misc_set_invalid) /* 3c misc  */
-dnl          .quad local_label(misc_set_invalid) /* 3d imm3  */
-dnl          .quad local_label(misc_set_invalid) /* 3e immheader_3  */
-dnl          .quad local_label(misc_set_invalid) /* 3f nodeheader_3  */
-dnl         /* 40-4f  */
-dnl          .quad local_label(misc_set_invalid) /* 40 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 41 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* 42 immheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 43 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 44 cons  */
-dnl          .quad local_label(misc_set_invalid) /* 45 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* 46 immheader_1  */
-dnl          .quad _SPgvset /* 47 pool  */
-dnl          .quad local_label(misc_set_invalid) /* 48 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 49 imm_2  */
-dnl          .quad local_label(misc_set_invalid) /* 4a immheader_2  */
-dnl          .quad _SPgvset /* 4b value_cell_2  */
-dnl          .quad local_label(misc_set_invalid) /* 4c misc  */
-dnl          .quad local_label(misc_set_invalid) /* 4d imm3  */
-dnl          .quad local_label(misc_set_invalid) /* 4e immheader_3  */
-dnl          .quad local_label(misc_set_invalid) /* 4f nodeheader_3  */
-dnl         /* 50-5f  */
-dnl          .quad local_label(misc_set_invalid) /* 50 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 51 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* 52 immheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 53 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 54 cons  */
-dnl          .quad local_label(misc_set_invalid) /* 55 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* 56 immheader_1  */
-dnl          .quad _SPgvset /* 57 weak  */
-dnl          .quad local_label(misc_set_invalid) /* 58 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 59 imm_2  */
-dnl          .quad local_label(misc_set_invalid) /* 5a immheader_2  */
-dnl          .quad _SPgvset /* 5b xfunction  */
-dnl          .quad local_label(misc_set_invalid) /* 5c misc  */
-dnl          .quad local_label(misc_set_invalid) /* 5d imm3  */
-dnl          .quad local_label(misc_set_invalid) /* 5e immheader_3  */
-dnl          .quad local_label(misc_set_invalid) /* 5f nodeheader_3  */
-dnl         /* 60-6f  */
-dnl          .quad local_label(misc_set_invalid) /* 60 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 61 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* 62 immheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 63 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 64 cons  */
-dnl          .quad local_label(misc_set_invalid) /* 65 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* 66 immheader_1  */
-dnl          .quad _SPgvset /* 67 package  */
-dnl          .quad local_label(misc_set_invalid) /* 68 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 69 imm_2  */
-dnl          .quad local_label(misc_set_invalid) /* 6a immheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* 6b nodeheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* 6c misc  */
-dnl          .quad local_label(misc_set_invalid) /* 6d imm3  */
-dnl          .quad local_label(misc_set_invalid) /* 6e immheader_3  */
-dnl          .quad local_label(misc_set_invalid) /* 6f nodeheader_3  */
-dnl         /* 70-7f  */
-dnl          .quad local_label(misc_set_invalid) /* 70 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 71 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* 72 immheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 73 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 74 cons  */
-dnl          .quad local_label(misc_set_invalid) /* 75 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* 76 immheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* 77 nodeheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* 78 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 79 imm_2  */
-dnl          .quad local_label(misc_set_invalid) /* 7a immheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* 7b nodeheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* 7c misc  */
-dnl          .quad local_label(misc_set_invalid) /* 7d imm3  */
-dnl          .quad local_label(misc_set_invalid) /* 7e immheader_3  */
-dnl          .quad local_label(misc_set_invalid) /* 7f nodeheader_3  */
-dnl         /* 80-8f  */
-dnl          .quad local_label(misc_set_invalid) /* 80 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 81 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* 82 immheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 83 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 84 cons  */
-dnl          .quad local_label(misc_set_invalid) /* 85 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* 86 immheader_1  */
-dnl          .quad _SPgvset /* 87 arrayH  */
-dnl          .quad local_label(misc_set_invalid) /* 88 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 89 imm_2  */
-dnl          .quad local_label(misc_set_invalid) /* 8a immheader_2  */
-dnl          .quad _SPgvset /* 8b vectorH  */
-dnl          .quad local_label(misc_set_invalid) /* 8c misc  */
-dnl          .quad local_label(misc_set_invalid) /* 8d imm3  */
-dnl          .quad local_label(misc_set_invalid) /* 8e immheader_3  */
-dnl          .quad _SPgvset /* 8f simple_vector  */
-dnl         /* 90-9f  */
-dnl          .quad local_label(misc_set_invalid) /* 90 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 91 imm_0  */
-dnl          .quad local_label(misc_set_s8) /* 92 s8  */
-dnl          .quad local_label(misc_set_invalid) /* 93 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* 94 cons  */
-dnl          .quad local_label(misc_set_invalid) /* 95 imm_1  */
-dnl          .quad local_label(misc_set_s16) /* 96 immheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* 97 nodeheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* 98 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* 99 imm_2  */
-dnl          .quad local_label(misc_set_s32) /* 9a s32  */
-dnl          .quad local_label(misc_set_invalid) /* 9b nodeheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* 9c misc  */
-dnl          .quad local_label(misc_set_invalid) /* 9d imm3  */
-dnl          .quad local_label(misc_set_s64) /* 9e s64  */
-dnl          .quad local_label(misc_set_invalid) /* 9f nodeheader_3  */
-dnl         /* a0-af  */
-dnl          .quad local_label(misc_set_invalid) /* a0 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* a1 imm_0  */
-dnl          .quad local_label(misc_set_u8) /* a2 u8  */
-dnl          .quad local_label(misc_set_invalid) /* a3 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* a4 cons  */
-dnl          .quad local_label(misc_set_invalid) /* a5 imm_1  */
-dnl          .quad local_label(misc_set_u16) /* a6 u16  */
-dnl          .quad local_label(misc_set_invalid) /* a7 nodeheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* a8 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* a9 imm_2  */
-dnl          .quad local_label(misc_set_u32) /* aa u32  */
-dnl          .quad local_label(misc_set_invalid) /* ab nodeheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* ac misc  */
-dnl          .quad local_label(misc_set_invalid) /* ad imm3  */
-dnl          .quad local_label(misc_set_u64) /* ae u64  */
-dnl          .quad local_label(misc_set_invalid) /* af nodeheader_3  */
-dnl         /* b0-bf  */
-dnl          .quad local_label(misc_set_invalid) /* b0 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* b1 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* b2 immheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* b3 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* b4 cons  */
-dnl          .quad local_label(misc_set_invalid) /* b5 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* b6 immheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* b7 nodeheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* b8 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* b9 imm_2  */
-dnl          .quad local_label(misc_set_single_float_vector) /* ba sf vector  */
-dnl          .quad local_label(misc_set_invalid) /* bb nodeheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* bc misc  */
-dnl          .quad local_label(misc_set_invalid) /* bd imm3  */
-dnl          .quad local_label(misc_set_fixnum_vector) /* be fixnum_vector  */
-dnl          .quad local_label(misc_set_invalid) /* bf nodeheader_3  */
-dnl         /* c0-cf  */
-dnl          .quad local_label(misc_set_invalid) /* c0 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* c1 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* c2 immheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* c3 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* c4 cons  */
-dnl          .quad local_label(misc_set_invalid) /* c5 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* c6 immheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* c7 nodeheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* c8 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* c9 imm_2  */
-dnl          .quad local_label(misc_set_invalid) /* ca immheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* cb nodeheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* cc misc  */
-dnl          .quad local_label(misc_set_invalid) /* cd imm3  */
-dnl          .quad local_label(misc_set_double_float_vector) /* ce double-float vector  */
-dnl          .quad local_label(misc_set_invalid) /* cf nodeheader_3  */
-dnl         /* d0-df  */
-dnl          .quad local_label(misc_set_invalid) /* d0 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* d1 imm_0  */
-dnl          .quad local_label(misc_set_string) /* d2 string  */
-dnl          .quad local_label(misc_set_invalid) /* d3 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* d4 cons  */
-dnl          .quad local_label(misc_set_invalid) /* d5 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* d6 immheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* d7 nodeheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* d8 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* d9 imm_2  */
-dnl          .quad local_label(misc_set_new_string) /* da new_string  */
-dnl          .quad local_label(misc_set_invalid) /* db nodeheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* dc misc  */
-dnl          .quad local_label(misc_set_invalid) /* dd imm3  */
-dnl          .quad local_label(misc_set_invalid) /* de immheader_3  */
-dnl          .quad local_label(misc_set_invalid) /* df nodeheader_3  */
-dnl         /* e0-ef  */
-dnl          .quad local_label(misc_set_invalid) /* e0 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* e1 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* e2 immheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* e3 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* e4 cons  */
-dnl          .quad local_label(misc_set_invalid) /* e5 imm_1  */
-dnl          .quad local_label(misc_set_invalid) /* e6 immheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* e7 nodeheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* e8 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* e9 imm_2  */
-dnl          .quad local_label(misc_set_invalid) /* ea immheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* eb nodeheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* ec misc  */
-dnl          .quad local_label(misc_set_invalid) /* ed imm3  */
-dnl          .quad local_label(misc_set_invalid) /* ee immheader_3  */
-dnl          .quad local_label(misc_set_invalid) /* ef nodeheader_3  */
-dnl         /* f0-ff  */
-dnl          .quad local_label(misc_set_invalid) /* f0 even_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* f1 imm_0  */
-dnl          .quad local_label(misc_set_invalid) /* f2 immheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* f3 nodeheader_0  */
-dnl          .quad local_label(misc_set_invalid) /* f4 cons  */
-dnl          .quad local_label(misc_set_invalid) /* f5 imm_1  */
-dnl          .quad local_label(misc_set_bit_vector) /* f6 bit_vector  */
-dnl          .quad local_label(misc_set_invalid) /* f7 nodeheader_1  */
-dnl          .quad local_label(misc_set_invalid) /* f8 odd_fixnum  */
-dnl          .quad local_label(misc_set_invalid) /* f9 imm_2  */
-dnl          .quad local_label(misc_set_invalid) /* fa immheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* fb nodeheader_2  */
-dnl          .quad local_label(misc_set_invalid) /* fc misc  */
-dnl          .quad local_label(misc_set_invalid) /* fd imm3  */
-dnl          .quad local_label(misc_set_invalid) /* fe immheader_3  */
-dnl          .quad local_label(misc_set_invalid) /* ff nodeheader_3  */
-dnl 
-dnl local_label(misc_set_bit_vector):               
-dnl          __(lis imm3,0x8000)
-dnl          __(extract_unsigned_byte_bits_(imm0,arg_z,1))
-dnl 	 __(extrwi imm1,arg_y,5,32-(fixnumshift+5))	/* imm1 = bitnum  */
-dnl          __(srdi imm0,arg_y,5+fixnumshift)
-dnl 	 __(srw imm3,imm3,imm1)
-dnl          __(bne local_label(misc_set_bad))
-dnl          __(cmpdi cr0,arg_z,0)
-dnl          __(sldi imm0,imm0,2)
-dnl 	 __(la imm0,misc_data_offset(imm0))
-dnl 	 __(lwzx imm2,arg_x,imm0)
-dnl          __(beq 1f)
-dnl          __(or imm2,imm3,imm2)
-dnl          __(stwx imm2,arg_x,imm0)
-dnl          __(bx lr)
-dnl 1:       __(andc imm2,imm2,imm3)
-dnl          __(stwx imm2,arg_x,imm0)
-dnl          __(bx lr)
-dnl local_label(misc_set_s16):
-dnl          __(extract_lisptag(imm2,arg_z))
-dnl          __(sldi imm0,arg_z,64-(16+fixnumshift))
-dnl          __(srdi imm1,arg_y,2)
-dnl          __(cmpdi cr7,imm2,tag_fixnum)
-dnl          __(sradi imm0,imm0,64-(16+fixnumshift))
-dnl          __(cmpd imm0,arg_z)
-dnl          __(la imm1,misc_data_offset(imm1))
-dnl          __(unbox_fixnum(imm0,arg_z))
-dnl          __(bne local_label(misc_set_bad))
-dnl          __(bne cr7,local_label(misc_set_bad))
-dnl          __(sthx imm0,arg_x,imm1)
-dnl          __(bx lr)
-dnl local_label(misc_set_u16):
-dnl          __(extract_unsigned_byte_bits_(imm0,arg_z,16))
-dnl          __(srdi imm1,arg_y,2)                
-dnl          __(unbox_fixnum(imm0,arg_z))
-dnl          __(la imm1,misc_data_offset(imm1))
-dnl          __(bne local_label(misc_set_bad))
-dnl          __(sthx imm0,arg_x,imm1)
-dnl          __(bx lr)
-dnl local_label(misc_set_single_float_vector):
-dnl          __(extract_fulltag(imm3,arg_z))
-dnl          __(srdi imm4,arg_y,1)
-dnl          __(cmpdi cr3,imm3,subtag_single_float)
-dnl          __(la imm4,misc_data_offset(imm4))
-dnl          __(bne cr3,local_label(misc_set_bad))
-dnl          __(srdi imm0,arg_z,32)
-dnl          __(stwx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(misc_set_s32):
-dnl          __(extract_lisptag(imm2,arg_z))
-dnl          __(srdi imm4,arg_y,1)
-dnl          __(unbox_fixnum(imm0,arg_z))
-dnl          __(cmpdi imm2,tag_fixnum)
-dnl          __(sldi imm1,imm0,32)
-dnl          __(sradi imm1,imm1,32)
-dnl          __(la imm4,misc_data_offset(imm4))
-dnl          __(bne local_label(misc_set_bad))
-dnl          __(cmpd imm1,imm0)
-dnl          __(bne local_label(misc_set_bad))
-dnl          __(stwx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(misc_set_u32):              
-dnl          __(extract_unsigned_byte_bits_(imm0,arg_z,32))
-dnl          __(srdi imm4,arg_y,1)
-dnl 	 __(la imm4,misc_data_offset(imm4))
-dnl          __(unbox_fixnum(imm0,arg_z))
-dnl          __(bne local_label(misc_set_bad))
-dnl          __(stwx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(misc_set_new_string):
-dnl          __(extract_lowbyte(imm0,arg_z))
-dnl          __(srdi imm4,arg_y,1)
-dnl          __(cmpdi imm0,subtag_character)
-dnl 	 __(la imm4,misc_data_offset(imm4))
-dnl          __(srwi imm0,arg_z,charcode_shift)
-dnl          __(bne local_label(misc_set_bad))
-dnl          __(stwx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(misc_set_string):      
-dnl          __(extract_lowbyte(imm0,arg_z))                
-dnl          __(srdi imm4,arg_y,3)
-dnl          __(cmpdi imm0,subtag_character)
-dnl          __(la imm4,misc_data_offset(imm4))
-dnl          __(bne cr0,local_label(misc_set_bad))
-dnl          __(srwi imm0,arg_z,charcode_shift)
-dnl          __(stbx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(misc_set_s8):     
-dnl          __(extract_lisptag(imm2,arg_z))
-dnl          __(unbox_fixnum(imm0,arg_z))
-dnl          __(cmpdi cr2,imm2,tag_fixnum)
-dnl          __(srdi imm4,arg_y,3)
-dnl          __(sldi imm1,imm0,56)
-dnl          __(sradi imm1,imm1,56)
-dnl          __(cmpd imm1,imm0)
-dnl          __(bne cr2,local_label(misc_set_bad))
-dnl          __(la imm4,misc_data_offset(imm4))
-dnl          __(bne local_label(misc_set_bad))
-dnl          __(stbx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(misc_set_u8):     
-dnl          __(extract_unsigned_byte_bits_(imm0,arg_z,8))
-dnl          __(srdi imm4,arg_y,3)
-dnl          __(unbox_fixnum(imm0,arg_z))
-dnl          __(la imm4,misc_data_offset(imm4))
-dnl          __(bne local_label(misc_set_bad))
-dnl          __(stbx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(misc_set_u64):
-dnl          __(extract_lisptag(imm0,arg_z))
-dnl          __(extract_fulltag(imm2,arg_z))
-dnl          __(cmpdi cr0,arg_z,0)
-dnl          __(cmpdi cr7,imm0,0)
-dnl          __(cmpdi cr6,imm2,fulltag_misc)
-dnl          __(la imm4,misc_data_offset(arg_y))
-dnl          __(bne cr7,local_label(setu64_maybe_bignum))
-dnl          __(unbox_fixnum(imm0,arg_z))
-dnl          __(blt cr0,local_label(misc_set_bad))
-dnl          __(stdx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(setu64_maybe_bignum):
-dnl          __(bne cr6,local_label(misc_set_bad))
-dnl          __(getvheader(imm1,arg_z))
-dnl          __(ld imm0,misc_data_offset(arg_z))
-dnl          __(rotldi imm0,imm0,32)
-dnl          __(cmpdi cr2,imm1,two_digit_bignum_header)
-dnl          __(cmpdi cr3,imm1,three_digit_bignum_header)
-dnl          __(cmpdi cr0,imm0,0)
-dnl          __(beq cr2,1f)
-dnl          __(bne cr3,local_label(misc_set_bad))
-dnl          __(lwz imm3,misc_data_offset+8(arg_z))
-dnl          __(cmpwi cr0,imm3,0)
-dnl          __(bne cr0,local_label(misc_set_bad))
-dnl          __(stdx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl 1:       __(blt cr0,local_label(misc_set_bad))
-dnl          __(stdx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(misc_set_double_float_vector):
-dnl          __(extract_typecode(imm0,arg_z))
-dnl          __(la imm4,misc_data_offset(arg_y))
-dnl          __(cmpdi imm0,subtag_double_float)
-dnl          __(bne local_label(misc_set_bad))
-dnl          __(ld imm0,misc_dfloat_offset(arg_z))
-dnl          __(stdx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(misc_set_fixnum_vector):
-dnl          __(extract_lisptag(imm2,arg_z))
-dnl          __(unbox_fixnum(imm0,arg_z))
-dnl          __(cmpdi cr2,imm2,tag_fixnum)
-dnl          __(la imm4,misc_data_offset(arg_y))
-dnl          __(bne cr2,local_label(misc_set_bad))
-dnl          __(stdx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(misc_set_s64):
-dnl          __(extract_lisptag(imm2,arg_z))
-dnl          __(extract_fulltag(imm3,arg_z))
-dnl          __(unbox_fixnum(imm0,arg_z))
-dnl          __(cmpdi cr2,imm2,tag_fixnum)
-dnl          __(cmpdi cr6,imm3,fulltag_misc) 
-dnl          __(la imm4,misc_data_offset(arg_y))
-dnl          __(bne cr2,local_label(sets64_maybe_bignum))
-dnl          __(stdx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(sets64_maybe_bignum):       
-dnl          __(bne cr6,local_label(misc_set_bad))
-dnl          __(getvheader(imm1,arg_z))
-dnl          __(ld imm0,misc_data_offset(arg_z))
-dnl          __(cmpdi cr1,imm1,two_digit_bignum_header)
-dnl          __(rotldi imm0,imm0,32)
-dnl          __(bne cr1,local_label(misc_set_bad))
-dnl          __(stdx imm0,arg_x,imm4)
-dnl          __(bx lr)
-dnl local_label(misc_set_bad):
-dnl 	 __(mov arg_y,arg_z)
-dnl 	 __(mov arg_z,arg_x)
-dnl 	 __(mov arg_x,#XNOTELT)
-dnl 	 __(set_nargs(3))
-dnl 	 __(b _SPksignalerr)
-dnl local_label(misc_set_invalid):  
-dnl          __(mov temp0,#XSETBADVEC)        
-dnl          __(set_nargs(4))
-dnl          __(vpush1(temp0))
-dnl          __(b _SPksignalerr)        
-dnl         __else
-dnl          __(slwi imm1,imm1,2)
-dnl          __(mov imm0,#LO(local_label(misc_set_jmp)))
-dnl          __(addis imm0,imm0,HA(local_label(misc_set_jmp)))
-dnl          __(lwzx imm0,imm0,imm1)
-dnl          __(mtctr imm0)
-dnl          __(bctr)
-dnl local_label(misc_set_jmp):             
-dnl         /* 00-0f  */
-dnl          .long local_label(misc_set_invalid) /* 00 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 01 cons  */
-dnl          .long local_label(misc_set_invalid) /* 02 nodeheader  */
-dnl          .long local_label(misc_set_invalid) /* 03 imm  */
-dnl          .long local_label(misc_set_invalid) /* 04 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 05 nil  */
-dnl          .long local_label(misc_set_invalid) /* 06 misc  */
-dnl          .long local_label(misc_set_u32) /* 07 bignum  */
-dnl          .long local_label(misc_set_invalid) /* 08 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 09 cons  */
-dnl          .long _SPgvset /* 0a ratio  */
-dnl          .long local_label(misc_set_invalid) /* 0b imm  */
-dnl          .long local_label(misc_set_invalid) /* 0c odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 0d nil  */
-dnl          .long local_label(misc_set_invalid) /* 0e misc  */
-dnl          .long local_label(misc_set_u32) /* 0f single_float  */
-dnl         /* 10-1f  */
-dnl          .long local_label(misc_set_invalid) /* 10 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 11 cons  */
-dnl          .long local_label(misc_set_invalid) /* 12 nodeheader  */
-dnl          .long local_label(misc_set_invalid) /* 13 imm  */
-dnl          .long local_label(misc_set_invalid) /* 14 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 15 nil  */
-dnl          .long local_label(misc_set_invalid) /* 16 misc  */
-dnl          .long local_label(misc_set_u32) /* 17 double_float  */
-dnl          .long local_label(misc_set_invalid) /* 18 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 19 cons  */
-dnl          .long _SPgvset /* 1a complex  */
-dnl          .long local_label(misc_set_invalid) /* 1b imm  */
-dnl          .long local_label(misc_set_invalid) /* 1c odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 1d nil  */
-dnl          .long local_label(misc_set_invalid) /* 1e misc  */
-dnl          .long local_label(misc_set_u32) /* 1f macptr  */
-dnl         /* 20-2f  */
-dnl          .long local_label(misc_set_invalid) /* 20 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 21 cons  */
-dnl          .long _SPgvset /* 22 catch_frame  */
-dnl          .long local_label(misc_set_invalid) /* 23 imm  */
-dnl          .long local_label(misc_set_invalid) /* 24 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 25 nil  */
-dnl          .long local_label(misc_set_invalid) /* 26 misc  */
-dnl          .long local_label(misc_set_u32) /* 27 dead_macptr  */
-dnl          .long local_label(misc_set_invalid) /* 28 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 29 cons  */
-dnl          .long _SPgvset /* 2a function  */
-dnl          .long local_label(misc_set_invalid) /* 2b imm  */
-dnl          .long local_label(misc_set_invalid) /* 2c odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 2d nil  */
-dnl          .long local_label(misc_set_invalid) /* 2e misc  */
-dnl          .long local_label(misc_set_u32) /* 2f code_vector  */
-dnl         /* 30-3f  */
-dnl          .long local_label(misc_set_invalid) /* 30 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 31 cons  */
-dnl          .long _SPgvset /* 32 lisp_thread  */
-dnl          .long local_label(misc_set_invalid) /* 33 imm  */
-dnl          .long local_label(misc_set_invalid) /* 34 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 35 nil  */
-dnl          .long local_label(misc_set_invalid) /* 36 misc  */
-dnl          .long local_label(misc_set_u32) /* 37 creole  */
-dnl          .long local_label(misc_set_invalid) /* 38 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 39 cons  */
-dnl          .long _SPgvset /* 3a symbol  */
-dnl          .long local_label(misc_set_invalid) /* 3b imm  */
-dnl          .long local_label(misc_set_invalid) /* 3c odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 3d nil  */
-dnl          .long local_label(misc_set_invalid) /* 3e misc  */
-dnl          .long local_label(misc_set_u32) /* 3f xcode_vector  */
-dnl         /* 40-4f  */
-dnl          .long local_label(misc_set_invalid) /* 40 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 41 cons  */
-dnl          .long _SPgvset /* 42 lock  */
-dnl          .long local_label(misc_set_invalid) /* 43 imm  */
-dnl          .long local_label(misc_set_invalid) /* 44 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 45 nil  */
-dnl          .long local_label(misc_set_invalid) /* 46 misc  */
-dnl          .long local_label(misc_set_invalid) /* 47 immheader  */
-dnl          .long local_label(misc_set_invalid) /* 48 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 49 cons  */
-dnl          .long _SPgvset /* 4a hash_vector  */
-dnl          .long local_label(misc_set_invalid) /* 4b imm  */
-dnl          .long local_label(misc_set_invalid) /* 4c odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 4d nil  */
-dnl          .long local_label(misc_set_invalid) /* 4e misc  */
-dnl          .long local_label(misc_set_invalid) /* 4f immheader  */
-dnl         /* 50-5f  */
-dnl          .long local_label(misc_set_invalid) /* 50 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 51 cons  */
-dnl          .long _SPgvset /* 52 pool  */
-dnl          .long local_label(misc_set_invalid) /* 53 imm  */
-dnl          .long local_label(misc_set_invalid) /* 54 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 55 nil  */
-dnl          .long local_label(misc_set_invalid) /* 56 misc  */
-dnl          .long local_label(misc_set_invalid) /* 57 immheader  */
-dnl          .long local_label(misc_set_invalid) /* 58 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 59 cons  */
-dnl          .long _SPgvset /* 5a weak  */
-dnl          .long local_label(misc_set_invalid) /* 5b imm  */
-dnl          .long local_label(misc_set_invalid) /* 5c odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 5d nil  */
-dnl          .long local_label(misc_set_invalid) /* 5e misc  */
-dnl          .long local_label(misc_set_invalid) /* 5f immheader  */
-dnl         /* 60-6f  */
-dnl          .long local_label(misc_set_invalid) /* 60 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 61 cons  */
-dnl          .long _SPgvset /* 62 package  */
-dnl          .long local_label(misc_set_invalid) /* 63 imm  */
-dnl          .long local_label(misc_set_invalid) /* 64 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 65 nil  */
-dnl          .long local_label(misc_set_invalid) /* 66 misc  */
-dnl          .long local_label(misc_set_invalid) /* 67 immheader  */
-dnl          .long local_label(misc_set_invalid) /* 68 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 69 cons  */
-dnl          .long _SPgvset /* 6a slot_vector  */
-dnl          .long local_label(misc_set_invalid) /* 6b imm  */
-dnl          .long local_label(misc_set_invalid) /* 6c odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 6d nil  */
-dnl          .long local_label(misc_set_invalid) /* 6e misc  */
-dnl          .long local_label(misc_set_invalid) /* 6f immheader  */
-dnl         /* 70-7f  */
-dnl          .long local_label(misc_set_invalid) /* 70 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 71 cons  */
-dnl          .long _SPgvset /* 72 instance  */
-dnl          .long local_label(misc_set_invalid) /* 73 imm  */
-dnl          .long local_label(misc_set_invalid) /* 74 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 75 nil  */
-dnl          .long local_label(misc_set_invalid) /* 76 misc  */
-dnl          .long local_label(misc_set_invalid) /* 77 immheader  */
-dnl          .long local_label(misc_set_invalid) /* 78 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 79 cons  */
-dnl          .long _SPgvset /* 7a struct  */
-dnl          .long local_label(misc_set_invalid) /* 7b imm  */
-dnl          .long local_label(misc_set_invalid) /* 7c odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 7d nil  */
-dnl          .long local_label(misc_set_invalid) /* 7e misc  */
-dnl          .long local_label(misc_set_invalid) /* 7f immheader  */
-dnl         /* 80-8f  */
-dnl          .long local_label(misc_set_invalid) /* 80 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 81 cons  */
-dnl          .long _SPgvset /* 82 istruct  */
-dnl          .long local_label(misc_set_invalid) /* 83 imm  */
-dnl          .long local_label(misc_set_invalid) /* 84 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 85 nil  */
-dnl          .long local_label(misc_set_invalid) /* 86 misc  */
-dnl          .long local_label(misc_set_invalid) /* 87 immheader  */
-dnl          .long local_label(misc_set_invalid) /* 88 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 89 cons  */
-dnl          .long _SPgvset /* 8a value_cell  */
-dnl          .long local_label(misc_set_invalid) /* 8b imm  */
-dnl          .long local_label(misc_set_invalid) /* 8c odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 8d nil  */
-dnl          .long local_label(misc_set_invalid) /* 8e misc  */
-dnl          .long local_label(misc_set_invalid) /* 8f immheader  */
-dnl         /* 90-9f  */
-dnl          .long local_label(misc_set_invalid) /* 90 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 91 cons  */
-dnl          .long _SPgvset /* 92 xfunction  */
-dnl          .long local_label(misc_set_invalid) /* 93 imm  */
-dnl          .long local_label(misc_set_invalid) /* 94 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 95 nil  */
-dnl          .long local_label(misc_set_invalid) /* 96 misc  */
-dnl          .long local_label(misc_set_invalid) /* 97 immheader  */
-dnl          .long local_label(misc_set_invalid) /* 98 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 99 cons  */
-dnl          .long _SPgvset /* 9a arrayH  */
-dnl          .long local_label(misc_set_invalid) /* 9b imm  */
-dnl          .long local_label(misc_set_invalid) /* 9c odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* 9d nil  */
-dnl          .long local_label(misc_set_invalid) /* 9e misc  */
-dnl          .long local_label(misc_set_invalid) /* 9f immheader  */
-dnl         /* a0-af  */
-dnl          .long local_label(misc_set_invalid) /* a0 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* a1 cons  */
-dnl          .long _SPgvset /* a2 vectorH  */
-dnl          .long local_label(misc_set_invalid) /* a3 imm  */
-dnl          .long local_label(misc_set_invalid) /* a4 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* a5 nil  */
-dnl          .long local_label(misc_set_invalid) /* a6 misc  */
-dnl          .long local_label(misc_set_single_float_vector) /* a7 sf vector  */
-dnl          .long local_label(misc_set_invalid) /* a8 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* a9 cons  */
-dnl          .long _SPgvset /* aa vectorH  */
-dnl          .long local_label(misc_set_invalid) /* ab imm  */
-dnl          .long local_label(misc_set_invalid) /* ac odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* ad nil  */
-dnl          .long local_label(misc_set_invalid) /* ae misc  */
-dnl          .long local_label(misc_set_u32) /* af u32  */
-dnl         /* b0-bf  */
-dnl          .long local_label(misc_set_invalid) /* b0 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* b1 cons  */
-dnl          .long local_label(misc_set_invalid) /* b2 node  */
-dnl          .long local_label(misc_set_invalid) /* b3 imm  */
-dnl          .long local_label(misc_set_invalid) /* b4 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* b5 nil  */
-dnl          .long local_label(misc_set_invalid) /* b6 misc  */
-dnl          .long local_label(misc_set_s32) /* b7 s32  */
-dnl          .long local_label(misc_set_invalid) /* b8 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* b9 cons  */
-dnl          .long local_label(misc_set_invalid) /* ba nodeheader  */
-dnl          .long local_label(misc_set_invalid) /* bb imm  */
-dnl          .long local_label(misc_set_invalid) /* bc odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* bd nil  */
-dnl          .long local_label(misc_set_invalid) /* be misc  */
-dnl          .long local_label(misc_set_fixnum_vector) /* bf fixnum_vector  */
-dnl         /* c0-cf  */
-dnl          .long local_label(misc_set_invalid) /* c0 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* c1 cons  */
-dnl          .long local_label(misc_set_invalid) /* c2 nodeheader  */
-dnl          .long local_label(misc_set_invalid) /* c3 imm  */
-dnl          .long local_label(misc_set_invalid) /* c4 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* c5 nil  */
-dnl          .long local_label(misc_set_invalid) /* c6 misc  */
-dnl          .long local_label(misc_set_new_string) /* c7 new_string  */
-dnl          .long local_label(misc_set_invalid) /* c8 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* c9 cons  */
-dnl          .long local_label(misc_set_invalid) /* ca nodeheader  */
-dnl          .long local_label(misc_set_invalid) /* cb imm  */
-dnl          .long local_label(misc_set_invalid) /* cc odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* cd nil  */
-dnl          .long local_label(misc_set_invalid) /* ce misc  */
-dnl          .long local_label(misc_set_u8) /* cf u8  */
-dnl         /* d0-df  */
-dnl          .long local_label(misc_set_invalid) /* d0 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* d1 cons  */
-dnl          .long local_label(misc_set_invalid) /* d2 nodeheader  */
-dnl          .long local_label(misc_set_invalid) /* d3 imm  */
-dnl          .long local_label(misc_set_invalid) /* d4 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* d5 nil  */
-dnl          .long local_label(misc_set_invalid) /* d6 misc  */
-dnl          .long local_label(misc_set_s8) /* d7 s8  */
-dnl          .long local_label(misc_set_invalid) /* d8 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* d9 cons  */
-dnl          .long local_label(misc_set_invalid) /* da nodeheader  */
-dnl          .long local_label(misc_set_invalid) /* db imm  */
-dnl          .long local_label(misc_set_invalid) /* dc odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* dd nil  */
-dnl          .long local_label(misc_set_invalid) /* de misc  */
-dnl          .long local_label(misc_set_old_string) /* df (old) simple_base_string  */
-dnl         /* e0-ef  */
-dnl          .long local_label(misc_set_invalid) /* e0 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* e1 cons  */
-dnl          .long local_label(misc_set_invalid) /* e2 nodeheader  */
-dnl          .long local_label(misc_set_invalid) /* e3 imm  */
-dnl          .long local_label(misc_set_invalid) /* e4 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* e5 nil  */
-dnl          .long local_label(misc_set_invalid) /* e6 misc  */
-dnl          .long local_label(misc_set_u16) /* e7 u16  */
-dnl          .long local_label(misc_set_invalid) /* e8 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* e9 cons  */
-dnl          .long local_label(misc_set_invalid) /* ea nodeheader  */
-dnl          .long local_label(misc_set_invalid) /* eb imm  */
-dnl          .long local_label(misc_set_invalid) /* ec odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* ed nil  */
-dnl          .long local_label(misc_set_invalid) /* ee misc  */
-dnl          .long local_label(misc_set_s16) /* ef s16  */
-dnl         /* f0-ff  */
-dnl          .long local_label(misc_set_invalid) /* f0 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* f1 cons  */
-dnl          .long local_label(misc_set_invalid) /* f2 nodeheader  */
-dnl          .long local_label(misc_set_invalid) /* f3 imm  */
-dnl          .long local_label(misc_set_invalid) /* f4 odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* f5 nil  */
-dnl          .long local_label(misc_set_invalid) /* f6 misc  */
-dnl          .long local_label(misc_set_double_float_vector) /* f7 df vector  */
-dnl          .long local_label(misc_set_invalid) /* f8 even_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* f9 cons  */
-dnl          .long local_label(misc_set_invalid) /* fa nodeheader  */
-dnl          .long local_label(misc_set_invalid) /* fb imm  */
-dnl          .long local_label(misc_set_invalid) /* fc odd_fixnum  */
-dnl          .long local_label(misc_set_invalid) /* fd nil  */
-dnl          .long local_label(misc_set_invalid) /* fe misc  */
-dnl          .long local_label(misc_set_bit_vector) /* ff bit_vector  */
-dnl 
-dnl local_label(misc_set_u32):        
-dnl 	/* Either a non-negative fixnum, a positiveone-digit bignum, */
-dnl 	/* or a two-digit bignum whose sign-digit is 0 is ok.  */
-dnl 	 __(extract_lisptag(imm2,arg_z))
-dnl 	 __(srawi. imm1,arg_z,fixnum_shift)
-dnl          __(cmpwi cr5,imm2,tag_fixnum)         
-dnl          __(la imm0,misc_data_offset(arg_y))
-dnl          __(cmpwi cr7,imm2,tag_misc)
-dnl 	 __(bne cr5,local_label(set_not_fixnum_u32))
-dnl 	 __(blt- cr0,local_label(set_bad))
-dnl local_label(set_set32):         
-dnl 	 __(stwx imm1,arg_x,imm0)
-dnl 	 __(bx lr)
-dnl local_label(set_not_fixnum_u32):
-dnl 	 __(bne cr7,local_label(set_bad))
-dnl 	 __(extract_header(imm2,arg_z))
-dnl 	 __(cmpri(cr0,imm2,one_digit_bignum_header))
-dnl 	 __(cmpri(cr1,imm2,two_digit_bignum_header))
-dnl 	 __(vrefr(imm1,arg_z,0))
-dnl 	 __(cmpri(cr2,imm1,0))
-dnl 	 __(bne cr0,local_label(set_not_1_digit_u32))
-dnl 	 __(bge cr2,local_label(set_set32))
-dnl 	 __(b local_label(set_bad))
-dnl local_label(set_not_1_digit_u32):
-dnl 	 __(bne- cr1,local_label(set_bad))
-dnl 	 __(vrefr(imm2,arg_z,1))
-dnl 	 __(cmpri(cr0,imm2,0))
-dnl 	 __(bne- cr1,local_label(set_bad))
-dnl 	 __(beq cr0,local_label(set_set32))
-dnl local_label(set_bad):
-dnl 	/* arg_z does not match the array-element-type of arg_x.  */
-dnl 	 __(mov arg_y,arg_z)
-dnl 	 __(mov arg_z,arg_x)
-dnl 	 __(mov arg_x,#XNOTELT)
-dnl 	 __(set_nargs(3))
-dnl 	 __(b _SPksignalerr)
-dnl local_label(misc_set_fixnum_vector):   
-dnl          __(extract_lisptag(imm2,arg_z))
-dnl          __(la imm0,misc_data_offset(arg_y))
-dnl          __(cmpwi cr5,imm2,tag_fixnum)
-dnl          __(unbox_fixnum(imm1,arg_z))
-dnl          __(bne cr5,local_label(set_bad))
-dnl          __(stwx imm1,arg_x,imm0)
-dnl          __(bx lr)
-dnl local_label(misc_set_new_string):   
-dnl          __(clrlwi imm2,arg_z,ncharcodebits)
-dnl          __(la imm0,misc_data_offset(arg_y))
-dnl          __(cmpwi cr5,imm2,subtag_character)
-dnl          __(srwi imm1,arg_z,charcode_shift)
-dnl          __(bne cr5,local_label(set_bad))
-dnl          __(stwx imm1,arg_x,imm0)
-dnl          __(bx lr)
-dnl local_label(misc_set_s32):
-dnl          __(extract_lisptag(imm2,arg_z))
-dnl          __(cmpwi cr5,imm2,tag_fixnum)
-dnl          __(cmpwi cr7,imm2,tag_misc)
-dnl          __(la imm0,misc_data_offset(arg_y))
-dnl 	 __(unbox_fixnum(imm1,arg_z))
-dnl 	 __(beq cr5,local_label(set_set32))
-dnl 	 __(bne cr7,local_label(set_bad))
-dnl 	 __(extract_header(imm2,arg_z))
-dnl 	 __(cmpri(cr0,imm2,one_digit_bignum_header))
-dnl 	 __(vrefr(imm1,arg_z,0))
-dnl 	 __(bne- cr0,local_label(set_bad))
-dnl 	 __(str imm1,arg_x,imm0)
-dnl 	 __(bx lr)
-dnl local_label(misc_set_single_float_vector):
-dnl          __(extract_lisptag(imm2,arg_z))
-dnl          __(cmpwi cr7,imm2,tag_misc)
-dnl          __(la imm0,misc_data_offset(arg_y))
-dnl 	 __(bne- cr7,local_label(set_bad))
-dnl 	 __(extract_header(imm2,arg_z))
-dnl 	 __(cmpri(cr0,imm2,single_float_header))
-dnl 	 __(bne- cr0,local_label(set_bad))
-dnl 	 __(ldr imm1,[arg_z,#single_float.value])
-dnl 	 __(str imm1,arg_x,imm0)
-dnl 	 __(bx lr)
-dnl local_label(misc_set_u8):               
-dnl 	 __(extract_lisptag(imm2,arg_z))
-dnl 	 __(srwi imm0,arg_y,2)
-dnl 	 __(la imm0,misc_data_offset(imm0))
-dnl 	 __(extract_unsigned_byte_bits_(imm1,arg_z,8))
-dnl 	 __(unbox_fixnum(imm1,arg_z))
-dnl 	 __(bne- cr0,local_label(set_bad))
-dnl 	 __(stbx imm1,arg_x,imm0)
-dnl 	 __(bx lr)
-dnl local_label(misc_set_old_string):
-dnl 	 __(srwi imm0,arg_y,2)
-dnl 	 __(extract_lowbyte(imm2,arg_z))
-dnl 	 __(cmpri(cr2,imm2,subtag_character))
-dnl 	 __(la imm0,misc_data_offset(imm0))
-dnl 	 __(srwi imm1,arg_z,charcode_shift)
-dnl 	 __(bne- cr2,local_label(set_bad))
-dnl 	 __(stbx imm1,arg_x,imm0)
-dnl 	 __(bx lr)
-dnl local_label(misc_set_s8):
-dnl 	 __(extract_lisptag(imm2,arg_z))
-dnl          __(srwi imm0,arg_y,2)
-dnl 	 __(unbox_fixnum(imm1,arg_z))
-dnl          __(la imm0,misc_data_offset(imm0))
-dnl          __(cmpwi cr5,imm2,tag_fixnum)
-dnl 	 __(extsb imm2,imm1)
-dnl 	 __(cmpw cr0,imm2,imm1)
-dnl 	 __(bne- cr5,local_label(set_bad))
-dnl 	 __(bne- cr0,local_label(set_bad))
-dnl 	 __(stbx imm1,arg_x,imm0)
-dnl 	 __(bx lr)
-dnl local_label(misc_set_u16):         
-dnl 	 __(srwi imm0,arg_y,1)
-dnl 	 __(extract_unsigned_byte_bits_(imm1,arg_z,16))
-dnl 	 __(unbox_fixnum(imm1,arg_z))
-dnl 	 __(la imm0,misc_data_offset(imm0))
-dnl 	 __(bne- cr0,local_label(set_bad))
-dnl 	 __(sthx imm1,arg_x,imm0)
-dnl 	 __(bx lr)
-dnl local_label(misc_set_s16):
-dnl          __(extract_lisptag(imm2,arg_z))
-dnl          __(srwi imm0,arg_y,1)
-dnl 	 __(unbox_fixnum(imm1,arg_z))
-dnl          __(cmpwi cr5,imm2,tag_fixnum)
-dnl          __(la imm0,misc_data_offset(imm0))
-dnl 	 __(extsh imm2,imm1)
-dnl 	 __(cmpw cr0,imm2,imm1)
-dnl 	 __(bne- cr5,local_label(set_bad))
-dnl 	 __(bne- cr0,local_label(set_bad))
-dnl 	 __(sthx imm1,arg_x,imm0)
-dnl 	 __(bx lr)
-dnl local_label(misc_set_bit_vector):	
-dnl 	 __(cmplwi cr2,arg_z,fixnumone)   /* nothing not a (boxed) bit   */
-dnl 	 __(extrwi imm1,arg_y,5,32-(fixnumshift+5))	/* imm1 = bitnum  */
-dnl 	 __(extlwi imm2,arg_z,1,31-fixnumshift)
-dnl 	 __(srw imm2,imm2,imm1)
-dnl 	 __(lis imm3,0x8000)
-dnl 	 __(rlwinm imm0,arg_y,32-5,5,31-fixnumshift)
-dnl 	 __(la imm0,misc_data_offset(imm0))
-dnl 	 __(srw imm3,imm3,imm1)
-dnl 	 __(bgt- cr2,local_label(set_bad))
-dnl 	 __(lwzx imm1,arg_x,imm0)
-dnl 	 __(andc imm1,imm1,imm3)
-dnl 	 __(or imm1,imm1,imm2)
-dnl 	 __(stwx imm1,arg_x,imm0)
-dnl 	 __(bx lr)
-dnl 
-dnl local_label(misc_set_double_float_vector):
-dnl          __(extract_lisptag(imm2,arg_z))
-dnl 	 __(slwi imm0,arg_y,1)
-dnl          __(cmpwi cr7,imm2,tag_misc)
-dnl 	 __(la imm0,misc_dfloat_offset(imm0))
-dnl          __(bne- cr7,local_label(set_bad))
-dnl 	 __(extract_header(imm2,arg_z))
-dnl 	 __(cmpri(cr0,imm2,double_float_header))
-dnl 	 __(bne- cr0,local_label(set_bad))
-dnl 	 __(lwz imm1,double_float.value(arg_z))
-dnl 	 __(lwz imm2,double_float.value+4(arg_z))
-dnl 	 __(stwx imm1,arg_x,imm0)
-dnl 	 __(la imm0,4(imm0))
-dnl 	 __(stwx imm2,arg_x,imm0)
-dnl 	 __(bx lr)
-dnl local_label(misc_set_invalid):  
-dnl          __(mov temp0,#XSETBADVEC)        
-dnl          __(set_nargs(4))
-dnl          __(vpush1(temp0))
-dnl          __(b _SPksignalerr)                
-dnl         __endif
+dnl  __(trap_unless_fulltag_equal(arg_x,fulltag_misc,imm0))
+dnl  __(trap_unless_lisptag_equal(arg_y,tag_fixnum,imm0))
+dnl  __(vector_length(imm0,arg_x,imm1))
+dnl  __(trlge(arg_y,imm0))
+dnl  __(unbox_fixnum(imm1,temp0))
+dnl     __(b C(misc_set_common))
+
+
 dnl 
 dnl /* misc_set (vector index newval).  Pretty damned similar to  */
@@ -4009,100 +2443,100 @@
 dnl 
 dnl _spentry(misc_set)
-dnl 	__(trap_unless_fulltag_equal(arg_x,fulltag_misc,imm0))
-dnl 	__(trap_unless_lisptag_equal(arg_y,tag_fixnum,imm0))
-dnl 	__(vector_length(imm0,arg_x,imm1))
-dnl 	__(trlge(arg_y,imm0))
-dnl 	__(extract_lowbyte(imm1,imm1))
-dnl         __(b local_label(misc_set_common))
+dnl  __(trap_unless_fulltag_equal(arg_x,fulltag_misc,imm0))
+dnl  __(trap_unless_lisptag_equal(arg_y,tag_fixnum,imm0))
+dnl  __(vector_length(imm0,arg_x,imm1))
+dnl  __(trlge(arg_y,imm0))
+dnl  __(extract_lowbyte(imm1,imm1))
+dnl         __(b C(misc_set_common))
 dnl         
 dnl /* "spread" the lexpr in arg_z.  */
 dnl /* ppc2-invoke-fn assumes that temp1 is preserved here.  */
 dnl _spentry(spread_lexprz)
-dnl 	__(ldr imm0,[arg_z,#0])
-dnl 	__(cmpri(cr3,imm0,3<<fixnumshift))
-dnl 	__(cmpri(cr4,imm0,2<<fixnumshift))
-dnl 	__(add imm1,arg_z,imm0)
-dnl 	__(cmpri(cr0,imm0,0))
-dnl 	__(add nargs,nargs,imm0)
-dnl 	__(cmpri(cr1,nargs,0))
-dnl 	__(cmpri(cr2,nargs,2<<fixnumshift))
-dnl 	__(la imm1,node_size(imm1))
-dnl 	__(bge cr3,9f)
-dnl 	__(beq cr4,2f)
-dnl 	__(bne cr0,1f)
-dnl 	/* lexpr count was 0; vpop the arg regs that  */
-dnl 	/* were vpushed by the caller  */
-dnl 	__(beqlr cr1)
-dnl 	__(vpop(arg_z))
-dnl 	__(bltlr cr2)
-dnl 	__(vpop(arg_y))
-dnl 	__(beqlr cr2)
-dnl 	__(vpop(arg_x))
-dnl 	__(bx lr)
-dnl 
-dnl 	/* vpush args from the lexpr until we have only  */
-dnl 	/* three left, then assign them to arg_x, arg_y,  */
-dnl 	/* and arg_z.  */
+dnl  __(ldr imm0,[arg_z,#0])
+dnl  __(cmpri(cr3,imm0,3<<fixnumshift))
+dnl  __(cmpri(cr4,imm0,2<<fixnumshift))
+dnl  __(add imm1,arg_z,imm0)
+dnl  __(cmpri(cr0,imm0,0))
+dnl  __(add nargs,nargs,imm0)
+dnl  __(cmpri(cr1,nargs,0))
+dnl  __(cmpri(cr2,nargs,2<<fixnumshift))
+dnl  __(la imm1,node_size(imm1))
+dnl  __(bge cr3,9f)
+dnl  __(beq cr4,2f)
+dnl  __(bne cr0,1f)
+dnl  /* lexpr count was 0; vpop the arg regs that  */
+dnl  /* were vpushed by the caller  */
+dnl  __(beqlr cr1)
+dnl  __(vpop(arg_z))
+dnl  __(bltlr cr2)
+dnl  __(vpop(arg_y))
+dnl  __(beqlr cr2)
+dnl  __(vpop(arg_x))
+dnl  __(bx lr)
+dnl 
+dnl  /* vpush args from the lexpr until we have only  */
+dnl  /* three left, then assign them to arg_x, arg_y,  */
+dnl  /* and arg_z.  */
 dnl 8:
-dnl 	__(cmpri(cr3,imm0,4<<fixnumshift))
-dnl 	__(subi imm0,imm0,fixnumone)
-dnl 	__(ldru(arg_z,-node_size(imm1)))
-dnl 	__(vpush1(arg_z))
+dnl  __(cmpri(cr3,imm0,4<<fixnumshift))
+dnl  __(subi imm0,imm0,fixnumone)
+dnl  __(ldru(arg_z,-node_size(imm1)))
+dnl  __(vpush1(arg_z))
 dnl 9:
-dnl 	__(bne cr3,8b)
-dnl 	__(ldr arg_x,[imm1,#-node_size*1])
-dnl 	__(ldr arg_y,[imm1,#-node_size*2])
-dnl 	__(ldr arg_z,[imm1,#-node_size*3])
-dnl 	__(bx lr)
-dnl 
-dnl 	/* lexpr count is two: set arg_y, arg_z from the  */
-dnl 	/* lexpr, maybe vpop arg_x  */
-dnl 2:	
-dnl 	__(ldr arg_y,[imm1,#-node_size*1])
-dnl 	__(ldr arg_z,[imm1,#-node_size*2])
-dnl 	__(beqlr cr2)		/* return if (new) nargs = 2  */
-dnl 	__(vpop(arg_x))
-dnl 	__(bx lr)
-dnl 
-dnl 	/* lexpr count is one: set arg_z from the lexpr,  */
-dnl 	/* maybe vpop arg_y, arg_x  */
-dnl 1:	
-dnl 	__(ldr arg_z,[imm1,#-node_size])
-dnl 	__(bltlr cr2)		/* return if (new) nargs < 2  */
-dnl 	__(vpop(arg_y))
-dnl 	__(beqlr cr2)		/* return if (new) nargs = 2  */
-dnl 	__(vpop(arg_x))
-dnl 	__(bx lr)
+dnl  __(bne cr3,8b)
+dnl  __(ldr arg_x,[imm1,#-node_size*1])
+dnl  __(ldr arg_y,[imm1,#-node_size*2])
+dnl  __(ldr arg_z,[imm1,#-node_size*3])
+dnl  __(bx lr)
+dnl 
+dnl  /* lexpr count is two: set arg_y, arg_z from the  */
+dnl  /* lexpr, maybe vpop arg_x  */
+dnl 2: 
+dnl  __(ldr arg_y,[imm1,#-node_size*1])
+dnl  __(ldr arg_z,[imm1,#-node_size*2])
+dnl  __(beqlr cr2)  /* return if (new) nargs = 2  */
+dnl  __(vpop(arg_x))
+dnl  __(bx lr)
+dnl 
+dnl  /* lexpr count is one: set arg_z from the lexpr,  */
+dnl  /* maybe vpop arg_y, arg_x  */
+dnl 1: 
+dnl  __(ldr arg_z,[imm1,#-node_size])
+dnl  __(bltlr cr2)  /* return if (new) nargs < 2  */
+dnl  __(vpop(arg_y))
+dnl  __(beqlr cr2)  /* return if (new) nargs = 2  */
+dnl  __(vpop(arg_x))
+dnl  __(bx lr)
 dnl         
-dnl 		
+dnl   
 dnl _spentry(reset)
-dnl 	.globl _SPthrow
-dnl 	__(nop)
-dnl 	__(ref_nrs_value(temp0,toplcatch))
-dnl 	__(mov temp1,#XSTKOVER)
-dnl 	__(vpush1(temp0))
-dnl 	__(vpush1(temp1))
-dnl 	__(set_nargs(1))
-dnl 	__(b _SPthrow)
-dnl 
-dnl 	
+dnl  .globl _SPthrow
+dnl  __(nop)
+dnl  __(ref_nrs_value(temp0,toplcatch))
+dnl  __(mov temp1,#XSTKOVER)
+dnl  __(vpush1(temp0))
+dnl  __(vpush1(temp1))
+dnl  __(set_nargs(1))
+dnl  __(b _SPthrow)
+dnl 
+dnl  
 dnl /* "slide" nargs worth of values up the vstack.  IMM0 contains  */
 dnl /* the difference between the current VSP and the target.  */
 dnl _spentry(mvslide)
-dnl 	__(cmpri(cr0,nargs,0))
-dnl 	__(mov imm3,nargs)
-dnl 	__(add imm2,vsp,nargs)
-dnl 	__(add imm2,imm2,imm0)
-dnl 	__(add imm0,vsp,nargs)
-dnl 	__(beq 2f)
+dnl  __(cmpri(cr0,nargs,0))
+dnl  __(mov imm3,nargs)
+dnl  __(add imm2,vsp,nargs)
+dnl  __(add imm2,imm2,imm0)
+dnl  __(add imm0,vsp,nargs)
+dnl  __(beq 2f)
 dnl 1:
-dnl 	__(cmpri(cr0,imm3,1<<fixnumshift))
-dnl 	__(subi imm3,imm3,1<<fixnumshift)
-dnl 	__(ldru(temp0,-node_size(imm0)))
-dnl 	__(stru(temp0,-node_size(imm2)))
-dnl 	__(bne cr0,1b)
+dnl  __(cmpri(cr0,imm3,1<<fixnumshift))
+dnl  __(subi imm3,imm3,1<<fixnumshift)
+dnl  __(ldru(temp0,-node_size(imm0)))
+dnl  __(stru(temp0,-node_size(imm2)))
+dnl  __(bne cr0,1b)
 dnl 2:
-dnl 	__(mov vsp,imm2)
-dnl 	__(bx lr)
+dnl  __(mov vsp,imm2)
+dnl  __(bx lr)
 dnl 
 dnl /* Build a new TSP area to hold nargs worth of multiple-values.  */
@@ -4123,29 +2557,29 @@
 dnl 
 dnl _spentry(save_values)
-dnl 	__(mov imm1,tsp)
+dnl  __(mov imm1,tsp)
 dnl 
 dnl         /* common exit: nargs = values in this set, imm1 = ptr to tsp before  */
 dnl         /* call to save_values  */
 dnl local_label(save_values_to_tsp):
-dnl 	__(mov imm2,tsp)
-dnl 	__(dnode_align(imm0,nargs,tsp_frame.fixed_overhead+(2*node_size))) /* count, link  */
-dnl 	__(TSP_Alloc_Var_Boxed_nz(imm0,imm3))
-dnl 	__(str(imm1,tsp_frame.backlink(tsp))) /* keep one tsp "frame" as far as rest of lisp is concerned  */
-dnl 	__(str(nargs,tsp_frame.data_offset(tsp)))
-dnl 	__(str(imm2,tsp_frame.data_offset+node_size(tsp))) /* previous tsp  */
-dnl 	__(la imm3,tsp_frame.data_offset+node_size*2(tsp))
-dnl 	__(add imm3,imm3,nargs)
-dnl 	__(add imm0,vsp,nargs)
-dnl 	__(cmpr(cr0,imm0,vsp))
-dnl 	__(b 2f)
+dnl  __(mov imm2,tsp)
+dnl  __(dnode_align(imm0,nargs,tsp_frame.fixed_overhead+(2*node_size))) /* count, link  */
+dnl  __(TSP_Alloc_Var_Boxed_nz(imm0,imm3))
+dnl  __(str(imm1,tsp_frame.backlink(tsp))) /* keep one tsp "frame" as far as rest of lisp is concerned  */
+dnl  __(str(nargs,tsp_frame.data_offset(tsp)))
+dnl  __(str(imm2,tsp_frame.data_offset+node_size(tsp))) /* previous tsp  */
+dnl  __(la imm3,tsp_frame.data_offset+node_size*2(tsp))
+dnl  __(add imm3,imm3,nargs)
+dnl  __(add imm0,vsp,nargs)
+dnl  __(cmpr(cr0,imm0,vsp))
+dnl  __(b 2f)
 dnl 1:
-dnl 	__(ldru(arg_z,-node_size(imm0)))
-dnl 	__(cmpr(cr0,imm0,vsp))
-dnl 	__(stru(arg_z,-node_size(imm3)))
+dnl  __(ldru(arg_z,-node_size(imm0)))
+dnl  __(cmpr(cr0,imm0,vsp))
+dnl  __(stru(arg_z,-node_size(imm3)))
 dnl 2:
-dnl 	__(bne cr0,1b)
-dnl 	__(add vsp,vsp,nargs) /*  discard values  */
-dnl 	__(bx lr)
-dnl 	
+dnl  __(bne cr0,1b)
+dnl  __(add vsp,vsp,nargs) /*  discard values  */
+dnl  __(bx lr)
+dnl  
 dnl 
 dnl /* Add the multiple values that are on top of the vstack to the set  */
@@ -4158,207 +2592,9 @@
 dnl 
 dnl _spentry(add_values)
-dnl 	__(cmpri(cr0,nargs,0))
-dnl 	__(ldr imm1,[tsp,#0])
-dnl 	__(bne cr0,local_label(save_values_to_tsp))
-dnl 	__(bx lr)
+dnl  __(cmpri(cr0,nargs,0))
+dnl  __(ldr imm1,[tsp,#0])
+dnl  __(bne cr0,local_label(save_values_to_tsp))
+dnl  __(bx lr)
 dnl         
-dnl /* On entry, R11->callback-index  */
-dnl /* Restore lisp context, then funcall #'%pascal-functions% with  */
-dnl /* two args: callback-index, args-ptr (a macptr pointing to the args on the stack)  */
-dnl _spentry(poweropen_callback)
-dnl         __ifdef(`rTOC')
-dnl          __(mov r11,rTOC)
-dnl         __endif
-dnl 	/* Save C argument registers  */
-dnl 	__(str(r3,c_frame.param0(sp)))
-dnl 	__(str(r4,c_frame.param1(sp)))
-dnl 	__(str(r5,c_frame.param2(sp)))
-dnl 	__(str(r6,c_frame.param3(sp)))
-dnl 	__(str(r7,c_frame.param4(sp)))
-dnl 	__(str(r8,c_frame.param5(sp)))
-dnl 	__(str(r9,c_frame.param6(sp)))
-dnl 	__(str(r10,c_frame.param7(sp)))
-dnl 	__(mflr imm3)
-dnl 	__(str(imm3,c_frame.savelr(sp)))
-dnl 	__(mfcr imm0)
-dnl 	__(str(imm0,c_frame.crsave(sp)))
-dnl 
-dnl 	/* Save the non-volatile registers on the sp stack  */
-dnl 	/* This is a non-standard stack frame, but noone will ever see it,  */
-dnl         /* so it doesn't matter. It will look like more of the stack frame pushed below.  */
-dnl 	__(stru(sp,-(stack_align(c_reg_save.size))(sp)))
-dnl         __(str(r13,c_reg_save.save_gprs+(0*node_size)(sp)))
-dnl         __(str(r14,c_reg_save.save_gprs+(1*node_size)(sp)))
-dnl         __(str(r15,c_reg_save.save_gprs+(2*node_size)(sp)))
-dnl         __(str(r16,c_reg_save.save_gprs+(3*node_size)(sp)))
-dnl         __(str(r17,c_reg_save.save_gprs+(4*node_size)(sp)))
-dnl         __(str(r18,c_reg_save.save_gprs+(5*node_size)(sp)))
-dnl         __(str(r19,c_reg_save.save_gprs+(6*node_size)(sp)))
-dnl         __(str(r20,c_reg_save.save_gprs+(7*node_size)(sp)))
-dnl         __(str(r21,c_reg_save.save_gprs+(8*node_size)(sp)))
-dnl         __(str(r22,c_reg_save.save_gprs+(9*node_size)(sp)))
-dnl         __(str(r23,c_reg_save.save_gprs+(10*node_size)(sp)))
-dnl         __(str(r24,c_reg_save.save_gprs+(11*node_size)(sp)))
-dnl         __(str(r25,c_reg_save.save_gprs+(12*node_size)(sp)))
-dnl         __(str(r26,c_reg_save.save_gprs+(13*node_size)(sp)))
-dnl         __(str(r27,c_reg_save.save_gprs+(14*node_size)(sp)))
-dnl         __(str(r28,c_reg_save.save_gprs+(15*node_size)(sp)))
-dnl         __(str(r29,c_reg_save.save_gprs+(16*node_size)(sp)))
-dnl         __(str(r30,c_reg_save.save_gprs+(17*node_size)(sp)))
-dnl         __(str(r31,c_reg_save.save_gprs+(18*node_size)(sp)))
-dnl         __(stfd f1,c_reg_save.save_fprs+(0*8)(sp))
-dnl         __(stfd f2,c_reg_save.save_fprs+(1*8)(sp))
-dnl         __(stfd f3,c_reg_save.save_fprs+(2*8)(sp))
-dnl         __(stfd f4,c_reg_save.save_fprs+(3*8)(sp))
-dnl         __(stfd f5,c_reg_save.save_fprs+(4*8)(sp))
-dnl         __(stfd f6,c_reg_save.save_fprs+(5*8)(sp))
-dnl         __(stfd f7,c_reg_save.save_fprs+(6*8)(sp))
-dnl         __(stfd f8,c_reg_save.save_fprs+(7*8)(sp))
-dnl         __(stfd f9,c_reg_save.save_fprs+(8*8)(sp))
-dnl         __(stfd f10,c_reg_save.save_fprs+(9*8)(sp))
-dnl         __(stfd f11,c_reg_save.save_fprs+(10*8)(sp))
-dnl         __(stfd f12,c_reg_save.save_fprs+(11*8)(sp))
-dnl         __(stfd f13,c_reg_save.save_fprs+(12*8)(sp))
-dnl 	__(check_stack_alignment(r0))
-dnl 	__(mffs f0)
-dnl 	__(stfd f0,c_reg_save.save_fp_zero(sp))
-dnl 	__(lwz r31,c_reg_save.save_fp_zero+4(sp))	/* recover FPSCR image  */
-dnl 	__(stw r31,c_reg_save.save_fpscr(sp))
-dnl 	__(mov r30,#0x43300000)
-dnl 	__(mov r31,#0x80000000)
-dnl 	__(stw r30,c_reg_save.save_fp_zero(sp))
-dnl 	__(stw r31,c_reg_save.save_fp_zero+4(sp))
-dnl 	__(stfd fp_s32conv,c_reg_save.save_fps32conv(sp))
-dnl 	__(lfd fp_s32conv,c_reg_save.save_fp_zero(sp))
-dnl 	__(stfd fp_zero,c_reg_save.save_fp_zero(sp))
-dnl 	__(lfs fp_zero,lisp_globals.short_float_zero(0))	/* ensure that fp_zero contains 0.0  */
-dnl 
-dnl /* Restore rest of Lisp context.  */
-dnl /* Could spread out the memory references here to gain a little speed  */
-dnl 
-dnl 	__(mov loc_pc,#0)
-dnl 	__(mov fn,#0)                     /* subprim, not a lisp function  */
-dnl 	__(mov temp3,#0)
-dnl 	__(mov temp2,#0)
-dnl 	__(mov temp1,#0)
-dnl 	__(mov temp0,#0)
-dnl 	__(mov arg_x,#0)
-dnl 	__(box_fixnum(arg_y,r11))	/* callback-index  */
-dnl         __(la arg_z,c_reg_save.save_fprs(sp))
-dnl         __(str(arg_z,stack_align(c_reg_save.size)+c_frame.unused(sp)))
-dnl 	__(la arg_z,stack_align(c_reg_save.size)+c_frame.param0(sp))	/* parameters (tagged as a fixnum)  */
-dnl 
-dnl 	/* Recover lisp thread context. Have to call C code to do so.  */
-dnl 	__(ref_global(r12,get_tcr))
-dnl         __ifdef(`rTOC')
-dnl          __(ld rTOC,8(r12))
-dnl          __(ld r12,0(r12))
-dnl         __endif
-dnl 	__(mtctr r12)
-dnl         __(mov r3,#1)
-dnl 	__(stru(sp,-(stack_align(c_frame.minsiz))(sp)))
-dnl 	__(bctrl)
-dnl 	__(la rcontext,TCR_BIAS(r3))
-dnl 	__(la sp,(stack_align(c_frame.minsiz))(sp))
-dnl 
-dnl 	__(ldr vsp,[rcontext,#tcr.save_vsp])
-dnl 	__(ldr tsp,[rcontext,#tcr.save_tsp])		
-dnl 	__(mov rzero,#0)
-dnl 	__(mov imm0,#TCR_STATE_LISP)
-dnl 	__(mtxer rzero) /* lisp wants the overflow bit being clear  */
-dnl         __(mtctr rzero)
-dnl 	__(mov save0,#0)
-dnl 	__(mov save1,#0)
-dnl 	__(mov save2,#0)
-dnl 	__(mov save3,#0)
-dnl 	__(mov save4,#0)
-dnl 	__(mov save5,#0)
-dnl 	__(mov save6,#0)
-dnl 	__(mov save7,#0)
-dnl 	__(lfd f0,tcr.lisp_fpscr(rcontext))
-dnl 	__(mtfsf 0xff,f0)
-dnl 	__(mov allocbase,#0)
-dnl 	__(mov allocptr,#0)	
-dnl 	__(str(imm0,tcr.valence(rcontext)))
-dnl 	__(ldr allocptr,[rcontext,#tcr.save_allocptr])
-dnl 	__(ldr allocbase,[rcontext,#tcr.save_allocbase])
-dnl 	
-dnl         __(restore_saveregs(vsp))
-dnl 
-dnl 	/* load nargs and callback to the lisp  */
-dnl 	__(set_nargs(2))
-dnl 	__(ldr imm2,[rcontext,#tcr.cs_area])
-dnl 	__(ldr imm4,[imm2,#area.active])
-dnl 	__(stru(imm4,-lisp_frame.size(sp)))
-dnl 	__(str(imm3,lisp_frame.savelr(sp)))
-dnl 	__(mov fname,#nrs.callbacks)	/* %pascal-functions%  */
-dnl 	__(call_fname)
-dnl 	__(ldr imm2,[sp,#lisp_frame.backlink])
-dnl 	__(ldr imm3,[rcontext,#tcr.cs_area])
-dnl 	__(str(imm2,area.active(imm3)))
-dnl 	__(discard_lisp_frame())
-dnl 	/* save_vsp will be restored from ff_call's stack frame, but  */
-dnl 	/* I included it here for consistency.  */
-dnl 	/* save_tsp is set below after we exit Lisp context.  */
-dnl 	__(str(allocptr,tcr.save_allocptr(rcontext)))
-dnl 	__(str(allocbase,tcr.save_allocbase(rcontext)))
-dnl 	__(str(vsp,tcr.save_vsp(rcontext)))
-dnl 	__(str(tsp,tcr.save_tsp(rcontext)))
-dnl 	/* Exit lisp context  */
-dnl 	__(mov imm1,#TCR_STATE_FOREIGN)
-dnl 	__(str(imm1,tcr.valence(rcontext)))
-dnl 	/* Restore the non-volatile registers & fpscr  */
-dnl 	__(lfd fp_zero,c_reg_save.save_fp_zero(sp))
-dnl 	__(lwz r31,c_reg_save.save_fpscr(sp))
-dnl 	__(stw r31,c_reg_save.save_fp_zero+4(sp))
-dnl 	__(lfd f0,c_reg_save.save_fp_zero(sp))
-dnl 	__(mtfsf 0xff,f0)
-dnl 	__(ldr r13,c_reg_save.save_gprs+(0*node_size)(sp)))
-dnl 	__(ldr(r14,c_reg_save.save_gprs+(1*node_size)(sp)))
-dnl 	__(ldr(r15,c_reg_save.save_gprs+(2*node_size)(sp)))
-dnl 	__(ldr(r16,c_reg_save.save_gprs+(3*node_size)(sp)))
-dnl 	__(ldr(r17,c_reg_save.save_gprs+(4*node_size)(sp)))
-dnl 	__(ldr(r18,c_reg_save.save_gprs+(5*node_size)(sp)))
-dnl 	__(ldr(r19,c_reg_save.save_gprs+(6*node_size)(sp)))
-dnl 	__(ldr(r20,c_reg_save.save_gprs+(7*node_size)(sp)))
-dnl 	__(ldr(r21,c_reg_save.save_gprs+(8*node_size)(sp)))
-dnl 	__(ldr(r22,c_reg_save.save_gprs+(9*node_size)(sp)))
-dnl 	__(ldr(r23,c_reg_save.save_gprs+(10*node_size)(sp)))
-dnl 	__(ldr(r24,c_reg_save.save_gprs+(11*node_size)(sp)))
-dnl 	__(ldr(r25,c_reg_save.save_gprs+(12*node_size)(sp)))
-dnl 	__(ldr(r26,c_reg_save.save_gprs+(13*node_size)(sp)))
-dnl 	__(ldr(r27,c_reg_save.save_gprs+(14*node_size)(sp)))
-dnl 	__(ldr(r28,c_reg_save.save_gprs+(15*node_size)(sp)))
-dnl 	__(ldr(r29,c_reg_save.save_gprs+(16*node_size)(sp)))
-dnl 	__(ldr(r30,c_reg_save.save_gprs+(17*node_size)(sp)))
-dnl 	__(ldr(r31,c_reg_save.save_gprs+(18*node_size)(sp)))
-dnl         __(lfd f1,c_reg_save.save_fprs+(0*8)(sp))
-dnl         __(lfd f2,c_reg_save.save_fprs+(1*8)(sp))
-dnl         __(lfd f3,c_reg_save.save_fprs+(2*8)(sp))
-dnl         __(lfd f4,c_reg_save.save_fprs+(3*8)(sp))
-dnl         __(lfd f5,c_reg_save.save_fprs+(4*8)(sp))
-dnl         __(lfd f6,c_reg_save.save_fprs+(5*8)(sp))
-dnl         __(lfd f7,c_reg_save.save_fprs+(6*8)(sp))
-dnl         __(lfd f8,c_reg_save.save_fprs+(7*8)(sp))
-dnl         __(lfd f9,c_reg_save.save_fprs+(8*8)(sp))
-dnl         __(lfd f10,c_reg_save.save_fprs+(9*8)(sp))
-dnl         __(lfd f11,c_reg_save.save_fprs+(10*8)(sp))
-dnl         __(lfd f12,c_reg_save.save_fprs+(11*8)(sp))
-dnl         __(lfd f13,c_reg_save.save_fprs+(12*8)(sp))
-dnl 	__(lfd fp_s32conv,c_reg_save.save_fps32conv(sp))
-dnl 	__(ldr(sp,0(sp)))
-dnl 	__(ldr r3,[sp,#c_frame.param0])
-dnl 	__(ldr r4,[sp,#c_frame.param1])
-dnl 	__(ldr r5,[sp,#c_frame.param2])
-dnl 	__(ldr r6,[sp,#c_frame.param3])
-dnl 	__(ldr r7,[sp,#c_frame.param4])
-dnl 	__(ldr r8,[sp,#c_frame.param5])
-dnl 	__(ldr r9,[sp,#c_frame.param6])
-dnl 	__(ldr r10,[sp,#c_frame.param7])
-dnl 	__(ldr r11,[sp,#c_frame.savelr])
-dnl 	__(mtlr r11)
-dnl 	__(ldr r11,[sp,#c_frame.crsave])
-dnl 	__(mtcr r11)
-dnl 	__(bx lr)
 dnl         
 dnl /* Like misc_alloc (a LOT like it, since it does most of the work), but takes  */
@@ -4367,47 +2603,47 @@
 dnl 
 dnl _spentry(misc_alloc_init)
-dnl 	__(mflr loc_pc)
-dnl 	__(build_lisp_frame(fn,loc_pc,vsp))
-dnl 	__(mov fn,#0)
-dnl 	__(mov temp0,arg_z)		/* initval  */
-dnl 	__(mov arg_z,arg_y)		/* subtag  */
-dnl 	__(mov arg_y,arg_x)		/* element-count  */
-dnl 	__(bl _SPmisc_alloc)
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(mtlr loc_pc)
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp]) 
-dnl 	__(discard_lisp_frame())
-dnl 	__(mov fname,#nrs.init_misc)
-dnl 	__(set_nargs(2))
-dnl 	__(mov arg_y,temp0)
-dnl 	__(jump_fname())
+dnl  __(mflr loc_pc)
+dnl  __(build_lisp_frame(fn,loc_pc,vsp))
+dnl  __(mov fn,#0)
+dnl  __(mov temp0,arg_z)  /* initval  */
+dnl  __(mov arg_z,arg_y)  /* subtag  */
+dnl  __(mov arg_y,arg_x)  /* element-count  */
+dnl  __(bl _SPmisc_alloc)
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(mtlr loc_pc)
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp]) 
+dnl  __(discard_lisp_frame())
+dnl  __(mov fname,#nrs.init_misc)
+dnl  __(set_nargs(2))
+dnl  __(mov arg_y,temp0)
+dnl  __(jump_fname())
 dnl 
 dnl /* As in stack_misc_alloc above, only with a non-default initial-value.  */
 dnl 
 dnl _spentry(stack_misc_alloc_init)
-dnl 	__(mflr loc_pc)
-dnl 	__(build_lisp_frame(fn,loc_pc,vsp))
-dnl 	__(mov fn,#0)
-dnl 	__(mov temp0,arg_z) /* initval  */
-dnl 	__(mov arg_z,arg_y) /* subtag  */
-dnl 	__(mov arg_y,arg_x) /* element-count  */
-dnl 	__(bl _SPstack_misc_alloc)
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(mtlr loc_pc)
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(discard_lisp_frame())
-dnl 	__(mov fname,#nrs.init_misc)
-dnl 	__(set_nargs(2))
-dnl 	__(mov arg_y,temp0)
-dnl 	__(jump_fname())
-dnl 
-dnl 	
+dnl  __(mflr loc_pc)
+dnl  __(build_lisp_frame(fn,loc_pc,vsp))
+dnl  __(mov fn,#0)
+dnl  __(mov temp0,arg_z) /* initval  */
+dnl  __(mov arg_z,arg_y) /* subtag  */
+dnl  __(mov arg_y,arg_x) /* element-count  */
+dnl  __(bl _SPstack_misc_alloc)
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(mtlr loc_pc)
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(discard_lisp_frame())
+dnl  __(mov fname,#nrs.init_misc)
+dnl  __(set_nargs(2))
+dnl  __(mov arg_y,temp0)
+dnl  __(jump_fname())
+dnl 
+dnl  
 dnl _spentry(callbuiltin)
-dnl 	__(ref_nrs_value(fname,builtin_functions))
-dnl 	__(la imm0,misc_data_offset(imm0))
-dnl 	__(ldrx(fname,fname,imm0))
-dnl 	__(jump_fname())
+dnl  __(ref_nrs_value(fname,builtin_functions))
+dnl  __(la imm0,misc_data_offset(imm0))
+dnl  __(ldrx(fname,fname,imm0))
+dnl  __(jump_fname())
 dnl 
 dnl /* the value of the nilreg-relative symbol %builtin-functions% should be  */
@@ -4416,67 +2652,67 @@
 dnl 
 dnl _spentry(callbuiltin0)
-dnl 	__(set_nargs(0))
-dnl 	__(ref_nrs_value(fname,builtin_functions))
-dnl 	__(la imm0,misc_data_offset(imm0))
-dnl 	__(ldrx(fname,fname,imm0))
-dnl 	__(jump_fname())
+dnl  __(set_nargs(0))
+dnl  __(ref_nrs_value(fname,builtin_functions))
+dnl  __(la imm0,misc_data_offset(imm0))
+dnl  __(ldrx(fname,fname,imm0))
+dnl  __(jump_fname())
 dnl 
 dnl _spentry(callbuiltin1)
-dnl 	__(ref_nrs_value(fname,builtin_functions))
-dnl 	__(set_nargs(1))
-dnl 	__(la imm0,misc_data_offset(imm0))
-dnl 	__(ldrx(fname,fname,imm0))
-dnl 	__(jump_fname())
+dnl  __(ref_nrs_value(fname,builtin_functions))
+dnl  __(set_nargs(1))
+dnl  __(la imm0,misc_data_offset(imm0))
+dnl  __(ldrx(fname,fname,imm0))
+dnl  __(jump_fname())
 dnl 
 dnl _spentry(callbuiltin2)
-dnl 	__(set_nargs(2))
-dnl 	__(ref_nrs_value(fname,builtin_functions))
-dnl 	__(la imm0,misc_data_offset(imm0))
-dnl 	__(ldrx(fname,fname,imm0))
-dnl 	__(jump_fname())
+dnl  __(set_nargs(2))
+dnl  __(ref_nrs_value(fname,builtin_functions))
+dnl  __(la imm0,misc_data_offset(imm0))
+dnl  __(ldrx(fname,fname,imm0))
+dnl  __(jump_fname())
 dnl 
 dnl 
 dnl _spentry(callbuiltin3)
-dnl 	__(set_nargs(3))
-dnl 	__(ref_nrs_value(fname,builtin_functions))
-dnl 	__(la imm0,misc_data_offset(imm0))
-dnl 	__(ldrx(fname,fname,imm0))
-dnl 	__(jump_fname())
-dnl 	
+dnl  __(set_nargs(3))
+dnl  __(ref_nrs_value(fname,builtin_functions))
+dnl  __(la imm0,misc_data_offset(imm0))
+dnl  __(ldrx(fname,fname,imm0))
+dnl  __(jump_fname())
+dnl  
 dnl 
 dnl _spentry(popj)
-dnl 	.globl C(popj)
+dnl  .globl C(popj)
 dnl C(popj):
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(mtlr loc_pc)
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(discard_lisp_frame())
-dnl 	__(bx lr)
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(mtlr loc_pc)
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(discard_lisp_frame())
+dnl  __(bx lr)
 dnl 
 dnl _spentry(restorefullcontext)
-dnl 	__(mflr loc_pc)
-dnl 	__(mtctr loc_pc)
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(mtlr loc_pc)
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(discard_lisp_frame())
-dnl 	__(bctr)
+dnl  __(mflr loc_pc)
+dnl  __(mtctr loc_pc)
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(mtlr loc_pc)
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(discard_lisp_frame())
+dnl  __(bctr)
 dnl 
 dnl _spentry(savecontextvsp)
-dnl 	__(ldr imm0,[rcontext,#tcr.cs_limit])
-dnl 	__(build_lisp_frame(fn,loc_pc,vsp))
-dnl 	__(mov fn,nfn)
-dnl 	__(trllt(sp,imm0))
-dnl 	__(bx lr)
+dnl  __(ldr imm0,[rcontext,#tcr.cs_limit])
+dnl  __(build_lisp_frame(fn,loc_pc,vsp))
+dnl  __(mov fn,nfn)
+dnl  __(trllt(sp,imm0))
+dnl  __(bx lr)
 dnl 
 dnl _spentry(savecontext0)
-dnl 	__(add imm0,vsp,imm0)
-dnl 	__(build_lisp_frame(fn,loc_pc,imm0))
-dnl 	__(ldr imm0,[rcontext,#tcr.cs_limit])
-dnl 	__(mov fn,nfn)
-dnl 	__(trllt(sp,imm0))
-dnl 	__(bx lr)
+dnl  __(add imm0,vsp,imm0)
+dnl  __(build_lisp_frame(fn,loc_pc,imm0))
+dnl  __(ldr imm0,[rcontext,#tcr.cs_limit])
+dnl  __(mov fn,nfn)
+dnl  __(trllt(sp,imm0))
+dnl  __(bx lr)
 dnl 
 dnl 
@@ -4484,9 +2720,9 @@
 dnl /* winds up in loc-pc instead of getting thrashed around ...  */
 dnl _spentry(restorecontext)
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(discard_lisp_frame())
-dnl 	__(bx lr)
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(discard_lisp_frame())
+dnl  __(bx lr)
 dnl 
 dnl         
@@ -4498,136 +2734,30 @@
 dnl /* multiple values, then things are even simpler.  */
 dnl _spentry(lexpr_entry)
-dnl 	__(ref_global(imm1,ret1val_addr))
-dnl 	__(cmpr(cr0,imm1,loc_pc))
-dnl 	__(build_lisp_frame(fn,loc_pc,imm0))
-dnl 	__(bne cr0,1f)
-dnl 	__(ref_global(imm0,lexpr_return))
-dnl 	__(build_lisp_frame(rzero,imm0,vsp))
-dnl 	__(mov loc_pc,imm1)
-dnl 	__(ldr imm0,[rcontext,#tcr.cs_limit])
-dnl 	__(trllt(sp,imm0))
-dnl 	__(mov fn,#0)
-dnl 	__(bx lr)
+dnl  __(ref_global(imm1,ret1val_addr))
+dnl  __(cmpr(cr0,imm1,loc_pc))
+dnl  __(build_lisp_frame(fn,loc_pc,imm0))
+dnl  __(bne cr0,1f)
+dnl  __(ref_global(imm0,lexpr_return))
+dnl  __(build_lisp_frame(rzero,imm0,vsp))
+dnl  __(mov loc_pc,imm1)
+dnl  __(ldr imm0,[rcontext,#tcr.cs_limit])
+dnl  __(trllt(sp,imm0))
+dnl  __(mov fn,#0)
+dnl  __(bx lr)
 dnl 
 dnl         /* The single-value case just needs to return to something that'll pop  */
 dnl         /* the variable-length frame off of the vstack.  */
 dnl 1:
-dnl 	__(ref_global(loc_pc,lexpr_return1v))
-dnl 	__(ldr imm0,[rcontext,#tcr.cs_limit])
-dnl 	__(trllt(sp,imm0))
-dnl 	__(mov fn,#0)
-dnl 	__(bx lr)
-dnl 
-dnl /* */
-dnl /* Do a system call in Darwin.  The stack is set up much as it would be */
-dnl /* for a PowerOpen ABI ff-call:	register parameters are in the stack */
-dnl /* frame, and there are 4 extra words at the bottom of the frame that */
-dnl /* we can carve a lisp frame out of. */
-dnl /*  */
-dnl /* System call return conventions are a little funky in Darwin: if "@sc" */
-dnl /* is the address of the "sc" instruction, errors return to @sc+4 and */
-dnl /* non-error cases return to @sc+8.  Error values are returned as */
-dnl /* positive values in r3; this is true even if the system call returns */
-dnl /* a doubleword (64-bit) result.  Since r3 would ordinarily contain */
-dnl /* the high half of a doubleword result, this has to be special-cased. */
-dnl /*  */
-dnl /* The caller should set the c_frame.crsave field of the stack frame */
-dnl /* to 0 if the result is to be interpreted as anything but a doubleword */
-dnl /* and to non-zero otherwise.  (This only matters on an error return.) */
-dnl 
-dnl         
-dnl _spentry(poweropen_syscall)
-dnl 	__(mflr loc_pc)
-dnl 	__(vpush_saveregs())
-dnl 	__(ldr imm1,[sp,#0])
-dnl 	__(la imm2,-lisp_frame.size(imm1))
-dnl         __(zero_doublewords imm2,0,lisp_frame.size)
-dnl 	__(str(imm1,lisp_frame.backlink(imm2)))
-dnl 	__(str(imm2,c_frame.backlink(sp)))
-dnl 	__(str(fn,lisp_frame.savefn(imm2)))
-dnl 	__(str(loc_pc,lisp_frame.savelr(imm2)))
-dnl 	__(str(vsp,lisp_frame.savevsp(imm2)))
-dnl 	__(ldr imm3,[rcontext,#tcr.cs_area])
-dnl 	__(str(imm2,area.active(imm3)))
-dnl 	__(str(allocptr,tcr.save_allocptr(rcontext)))
-dnl 	__(str(allocbase,tcr.save_allocbase(rcontext)))
-dnl 	__(str(tsp,tcr.save_tsp(rcontext)))
-dnl 	__(str(vsp,tcr.save_vsp(rcontext)))
-dnl 	__(str(rzero,tcr.ffi_exception(rcontext)))
-dnl 	__(mov save0,rcontext)
-dnl 	__(mov r3,#TCR_STATE_FOREIGN)
-dnl 	__(str(r3,tcr.valence(rcontext)))
-dnl 	__(mov rcontext,#0)
-dnl 	__(ldr r3,[sp,#c_frame.param0])
-dnl 	__(ldr r4,[sp,#c_frame.param1])
-dnl 	__(ldr r5,[sp,#c_frame.param2])
-dnl 	__(ldr r6,[sp,#c_frame.param3])
-dnl 	__(ldr r7,[sp,#c_frame.param4])
-dnl 	__(ldr r8,[sp,#c_frame.param5])
-dnl 	__(ldr r9,[sp,#c_frame.param6])
-dnl 	__(ldr r10,[sp,#c_frame.param7])
-dnl 	__(unbox_fixnum(r0,arg_z))
-dnl 	__(sc)
-dnl         __ifdef(`LINUX')
-dnl          __(bns+ 9f)
-dnl         __else
-dnl 	 __(b 1f)
-dnl 	 __(b 9f)
-dnl         __endif
-dnl 1:
-dnl         __ifdef(`PPC64')
-dnl          __(neg r3,r3)
-dnl         __else
-dnl 	 __(ldr imm2,[sp,#c_frame.crsave])
-dnl 	 __(cmpri(cr0,imm2,0))
-dnl 	 __(bne cr0,2f)
-dnl 	 /* 32-bit result  */
-dnl 	 __(neg r3,r3)
-dnl 	 __(b 9f)
-dnl 2:
-dnl 	 /* 64-bit result  */
-dnl 	 __(neg r4,r3)
-dnl 	 __(mov r3,#-1)
-dnl         __endif
-dnl 9:
-dnl 	__(mov imm2,save0)	/* recover context  */
-dnl 	__(ldr sp,[sp,#c_frame.backlink])
-dnl 	__(mov imm4,#TCR_STATE_LISP)
-dnl 	__(mov rzero,#0)
-dnl 	__(mov loc_pc,#0)
-dnl 	__(mov arg_x,#nil_value)
-dnl 	__(mov arg_y,#nil_value)
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(mov temp0,#nil_value)
-dnl 	__(mov temp1,#nil_value)
-dnl 	__(mov temp2,#nil_value)
-dnl 	__(mov temp3,#nil_value)
-dnl 	__(mov fn,#nil_value)
-dnl 	__(mov rcontext,imm2)
-dnl 	__(ldr allocptr,[rcontext,#tcr.save_allocptr])
-dnl 	__(ldr allocbase,[rcontext,#tcr.save_allocbase])
-dnl 	__(ldr tsp,[rcontext,#tcr.save_tsp])
-dnl         __(mov save0,#0)
-dnl         __(mov save1,#0)
-dnl         __(mov save2,#0)
-dnl         __(mov save3,#0)
-dnl         __(mov save4,#0)
-dnl         __(mov save5,#0)
-dnl         __(mov save6,#0)
-dnl         __(mov save7,#0)        
-dnl 	__(str(imm4,tcr.valence(rcontext)))
-dnl 	__(vpop_saveregs)
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(mtlr loc_pc)
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(discard_lisp_frame)
-dnl         __(mtxer rzero)
-dnl 	__(check_pending_interrupt(`cr1'))
-dnl 	__(bx lr)
+dnl  __(ref_global(loc_pc,lexpr_return1v))
+dnl  __(ldr imm0,[rcontext,#tcr.cs_limit])
+dnl  __(trllt(sp,imm0))
+dnl  __(mov fn,#0)
+dnl  __(bx lr)
+dnl 
 dnl         
 dnl         
 dnl 
 dnl _spentry(builtin_div)
-dnl 	__(jump_builtin(_builtin_div,2))
+dnl  __(jump_builtin(_builtin_div,2))
 dnl 
 dnl 
@@ -4646,307 +2776,167 @@
 dnl         __(cmpr(cr0,imm0,imm1))
 dnl         __(bne cr0,2f)
-dnl 	__(jump_builtin(_builtin_eql,2))
-dnl 1:	__(mov arg_z,#t_value)
-dnl 	__(bx lr)
-dnl 2:	__(mov arg_z,#nil_value)
-dnl 	__(bx lr)
+dnl  __(jump_builtin(_builtin_eql,2))
+dnl 1: __(mov arg_z,#t_value)
+dnl  __(bx lr)
+dnl 2: __(mov arg_z,#nil_value)
+dnl  __(bx lr)
 dnl         
 dnl _spentry(builtin_length)
 dnl         __(cmpri(cr1,arg_z,nil_value))
-dnl 	__(extract_typecode(imm0,arg_z))
-dnl 	__(cmpri(cr0,imm0,min_vector_subtag))
+dnl  __(extract_typecode(imm0,arg_z))
+dnl  __(cmpri(cr0,imm0,min_vector_subtag))
 dnl         __(beq cr1,1f)
-dnl         __ifdef(`PPC64')
-dnl          __(cmpdi cr2,imm0,fulltag_cons)
-dnl         __else
-dnl 	 __(cmpwi cr2,imm0,tag_list)
-dnl         __endif
-dnl 	__(beq- cr0,2f)
-dnl 	__(blt- cr0,3f)
-dnl 	/* (simple-array * (*))  */
-dnl 	__(vector_length(arg_z,arg_z,imm0))
-dnl 	__(bx lr)
+dnl   __(cmpwi cr2,imm0,tag_list)
+dnl  __(beq- cr0,2f)
+dnl  __(blt- cr0,3f)
+dnl  /* (simple-array * (*))  */
+dnl  __(vector_length(arg_z,arg_z,imm0))
+dnl  __(bx lr)
 dnl 1:      __(mov arg_z,#0)
 dnl         __(bx lr)
 dnl 2:
-dnl 	__(ldr arg_z,[arg_z,#vectorH.logsize])
-dnl 	__(bx lr)        
-dnl 3:	__(bne cr2,8f)
-dnl 	__(mov temp2,#-1<<fixnum_shift)
-dnl 	__(mov temp0,arg_z)	/* fast pointer  */
-dnl 	__(mov temp1,arg_z)	/* slow pointer  */
-dnl         __ifdef(`PPC64')
-dnl 4:       __(extract_fulltag(imm0,temp0))
-dnl          __(cmpdi cr7,temp0,nil_value)
-dnl          __(cmpdi cr1,imm0,fulltag_cons)
-dnl          __(addi temp2,temp2,fixnum_one)
-dnl          __(beq cr7,9f)
-dnl          __(andi. imm0,temp2,1<<fixnum_shift)
-dnl          __(bne cr1,8f)
-dnl          __(extract_fulltag(imm1,temp1))
-dnl          __(_cdr(temp0,temp0))
-dnl          __(cmpdi cr1,imm1,fulltag_cons)
-dnl 	 __(beq cr0,4b)
-dnl 	 __(bne cr1,8f)
-dnl 	 __(_cdr(temp1,temp1))
-dnl 	 __(cmpd cr0,temp0,temp1)
-dnl 	 __(bne cr0,4b)
-dnl         __else
-dnl 4:	 __(extract_lisptag(imm0,temp0))
-dnl 	 __(cmpri(cr7,temp0,nil_value))
-dnl 	 __(cmpri(cr1,imm0,tag_list))
-dnl 	 __(addi temp2,temp2,fixnum_one)
-dnl 	 __(beq cr7,9f)
-dnl 	 __(andi. imm0,temp2,1<<fixnum_shift)
-dnl 	 __(bne cr1,8f)
-dnl 	 __(extract_lisptag(imm1,temp1))	
-dnl 	 __(_cdr(temp0,temp0))
-dnl 	 __(cmpri(cr1,imm1,tag_list))
-dnl 	 __(beq cr0,4b)
-dnl 	 __(bne cr1,8f)
-dnl 	 __(_cdr(temp1,temp1))
-dnl 	 __(cmpr(cr0,temp0,temp1))
-dnl 	 __(bne cr0,4b)
-dnl         __endif
-dnl 8:	
-dnl 	__(jump_builtin(_builtin_length,1))
-dnl 9:	
-dnl 	__(mov arg_z,temp2)
-dnl 	__(bx lr)
+dnl  __(ldr arg_z,[arg_z,#vectorH.logsize])
+dnl  __(bx lr)        
+dnl 3: __(bne cr2,8f)
+dnl  __(mov temp2,#-1<<fixnum_shift)
+dnl  __(mov temp0,arg_z) /* fast pointer  */
+dnl  __(mov temp1,arg_z) /* slow pointer  */
+dnl 4:  __(extract_lisptag(imm0,temp0))
+dnl   __(cmpri(cr7,temp0,nil_value))
+dnl   __(cmpri(cr1,imm0,tag_list))
+dnl   __(addi temp2,temp2,fixnum_one)
+dnl   __(beq cr7,9f)
+dnl   __(andi. imm0,temp2,1<<fixnum_shift)
+dnl   __(bne cr1,8f)
+dnl   __(extract_lisptag(imm1,temp1)) 
+dnl   __(_cdr(temp0,temp0))
+dnl   __(cmpri(cr1,imm1,tag_list))
+dnl   __(beq cr0,4b)
+dnl   __(bne cr1,8f)
+dnl   __(_cdr(temp1,temp1))
+dnl   __(cmpr(cr0,temp0,temp1))
+dnl   __(bne cr0,4b)
+
+dnl 8: 
+dnl  __(jump_builtin(_builtin_length,1))
+dnl 9: 
+dnl  __(mov arg_z,temp2)
+dnl  __(bx lr)
 dnl         
 dnl _spentry(builtin_seqtype)
-dnl         __ifdef(`PPC64')
-dnl          __(cmpdi cr2,arg_z,nil_value)
-dnl          __(extract_typecode(imm0,arg_z))
-dnl          __(beq cr2,1f)
-dnl 	 __(cmpri(cr0,imm0,fulltag_cons))
-dnl         __else
-dnl 	 __(extract_typecode(imm0,arg_z))
-dnl  	 __(cmpri(cr0,imm0,tag_list))
-dnl         __endif
-dnl 	__(cmpri(cr1,imm0,min_vector_subtag))
-dnl 	__(beq cr0,1f)
-dnl 	__(blt- cr1,2f)
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(bx lr)
-dnl 1:	__(mov arg_z,#t_value)
-dnl 	__(bx lr)
+dnl   __(extract_typecode(imm0,arg_z))
+dnl    __(cmpri(cr0,imm0,tag_list))
+dnl  __(cmpri(cr1,imm0,min_vector_subtag))
+dnl  __(beq cr0,1f)
+dnl  __(blt- cr1,2f)
+dnl  __(mov arg_z,#nil_value)
+dnl  __(bx lr)
+dnl 1: __(mov arg_z,#t_value)
+dnl  __(bx lr)
 dnl 2:
-dnl 	__(jump_builtin(_builtin_seqtype,1))
-dnl         
-dnl _spentry(builtin_assq)
-dnl 	__(cmpri(arg_z,nil_value))
-dnl 	__(beqlr)
-dnl 1:	__(trap_unless_list(arg_z,imm0))
-dnl 	__(_car(arg_x,arg_z))
-dnl 	__(_cdr(arg_z,arg_z))
-dnl 	__(cmpri(cr2,arg_x,nil_value))
-dnl 	__(cmpri(cr1,arg_z,nil_value))
-dnl 	__(beq cr2,2f)
-dnl 	__(trap_unless_list(arg_x,imm0))
-dnl 	__(_car(temp0,arg_x))
-dnl 	__(cmpr(temp0,arg_y))
-dnl 	__(bne cr0,2f)
-dnl 	__(mov arg_z,arg_x)
-dnl 	__(bx lr)
-dnl 2:	__(bne cr1,1b)
-dnl 	__(bx lr)
-dnl 
-dnl _spentry(builtin_memq)
-dnl 	__(cmpri(cr1,arg_z,nil_value))
-dnl 	__(b 2f)
-dnl 1:	__(trap_unless_list(arg_z,imm0))
-dnl 	__(_car(arg_x,arg_z))
-dnl 	__(_cdr(temp0,arg_z))
-dnl 	__(cmpr(arg_x,arg_y))
-dnl 	__(cmpri(cr1,temp0,nil_value))
-dnl 	__(beqlr)
-dnl 	__(mov arg_z,temp0)
-dnl 2:	__(bne cr1,1b)
-dnl 	__(bx lr)
-dnl 
-dnl logbitp_max_bit = 30
-dnl         
-dnl _spentry(builtin_logbitp)
-dnl 	/* Call out unless both fixnums,0 <=  arg_y < logbitp_max_bit  */
-dnl         __(cmplri(cr2,arg_y,logbitp_max_bit<<fixnum_shift))
-dnl         __(extract_lisptag(imm0,arg_y))
-dnl         __(extract_lisptag(imm1,arg_z))
-dnl         __(cmpri(cr0,imm0,tag_fixnum))
-dnl         __(cmpri(cr1,imm1,tag_fixnum))
-dnl 	__(unbox_fixnum(imm0,arg_y))
-dnl 	__(subfic imm0,imm0,logbitp_max_bit)
-dnl         __ifdef(`PPC64')
-dnl          __(rldcl imm0,arg_z,imm0,63)
-dnl          __(mulli imm0,imm0,t_offset)
-dnl         __else
-dnl   	 __(rlwnm imm0,arg_z,imm0,31,31)
-dnl 	 __(rlwimi imm0,imm0,4,27,27)
-dnl         __endif
-dnl 	__(bnl cr2,1f)
-dnl 	__(bne cr0,1f)
-dnl         __(bne cr1,1f)
-dnl 	__(addi arg_z,imm0,nil_value)
-dnl 	__(bx lr)
-dnl 1:
-dnl 	__(jump_builtin(_builtin_logbitp,2))
-dnl 
-dnl _spentry(builtin_logior)
-dnl         __(orr imm0,arg_y,arg_z)
-dnl         __(test_fixnum(imm0))
-dnl         __(moveq arg_z,imm0)
-dnl         __(bxeq lr)
-dnl 1:
-dnl 	__(jump_builtin(_builtin_logior,2))
-dnl 
-dnl _spentry(builtin_logand)
-dnl         __(orr imm0,arg_y,arg_z)
-dnl         __(test_fixnum(imm0))
-dnl 	__(andeq arg_z,arg_y,arg_z)
-dnl 	__(bxeq lr)
-dnl 	__(jump_builtin(_builtin_logand,2))
-dnl 	
-dnl _spentry(builtin_ash)
-dnl         __ifdef(`PPC64')
-dnl 	 __(cmpdi cr1,arg_z,0)
-dnl          __(extract_lisptag(imm0,arg_y))
-dnl          __(extract_lisptag(imm1,arg_z))
-dnl          __(cmpdi cr0,imm0,tag_fixnum)
-dnl          __(cmpdi cr3,imm1,tag_fixnum)
-dnl 	 __(cmpdi cr2,arg_z,-(63<<3))	/* !! 3 =  fixnumshift  */
-dnl 	 __(bne- cr0,9f)
-dnl          __(bne- cr3,9f)
-dnl 	 __(bne cr1,0f)
-dnl 	 __(mov arg_z,arg_y)	/* (ash n 0) => n  */
-dnl 	 __(bx lr)
-dnl 0:		
-dnl 	 __(unbox_fixnum(imm1,arg_y))
-dnl 	 __(unbox_fixnum(imm0,arg_z))
-dnl 	 __(bgt cr1,2f)
-dnl 	 /* (ash n -count) => fixnum  */
-dnl 	 __(neg imm2,imm0)
-dnl 	 __(bgt cr2,1f)
-dnl 	 __(mov imm2,#63)
-dnl 1:	
-dnl 	 __(srad imm0,imm1,imm2)
-dnl 	 __(box_fixnum(arg_z,imm0))
-dnl 	 __(bx lr)
-dnl 	 /* Integer-length of arg_y/imm1 to imm2  */
-dnl 2:		
-dnl 	 __(cntlzd. imm2,imm1)
-dnl 	 __(bne 3f)		/* cr0`eq' set if negative  */
-dnl 	 __(not imm2,imm1)
-dnl 	 __(cntlzd imm2,imm2)
-dnl 3:
-dnl 	 __(subfic imm2,imm2,64)
-dnl 	 __(add imm2,imm2,imm0)	 /* imm2 <- integer-length(imm1) + count  */
-dnl 	 __(cmpdi cr1,imm2,63-fixnumshift)
-dnl 	 __(cmpdi cr2,imm0,64)
-dnl 	 __(sld imm2,imm1,imm0)
-dnl 	 __(bgt cr1,6f)
-dnl 	 __(box_fixnum(arg_z,imm2))
-dnl 	 __(bx lr)	
-dnl 6:
-dnl 	 __(bgt cr2,9f)
-dnl 	 __(bne cr2,7f)
-dnl 	 /* Shift left by 64 bits exactly  */
-dnl 	 __(mov imm0,imm1)
-dnl 	 __(mov imm1,#0)
-dnl 	 __(beq _SPmakes128)
-dnl 	 __(b _SPmakeu128)
-dnl 7:
-dnl 	 /* Shift left by fewer than 64 bits, result not a fixnum  */
-dnl 	 __(subfic imm0,imm0,64)
-dnl 	 __(beq 8f)
-dnl 	 __(srd imm0,imm1,imm0)
-dnl 	 __(mov imm1,imm2)
-dnl 	 __(b _SPmakeu128)
-dnl 8:	
-dnl 	 __(srad imm0,imm1,imm0)
-dnl 	 __(mov imm1,imm2)
-dnl 	 __(b _SPmakes128)
-dnl         __else
-dnl 	 __(cmpri(cr1,arg_z,0))
-dnl          __(extract_lisptag(imm0,arg_y))
-dnl          __(extract_lisptag(imm1,arg_z))
-dnl          __(cmpri(cr0,imm0,tag_fixnum))
-dnl          __(cmpri(cr3,imm1,tag_fixnum))
-dnl 	 __(cmpri(cr2,arg_z,-(29<<2)))	/* !! 2 =  fixnumshift  */
-dnl 	 __(bne- cr0,9f)
-dnl          __(bne- cr3,9f)
-dnl 	 __(bne cr1,0f)
-dnl 	 __(mov arg_z,arg_y)	/* (ash n 0) => n  */
-dnl 	 __(bx lr)
-dnl 0:		
-dnl 	 __(unbox_fixnum(imm1,arg_y))
-dnl 	 __(unbox_fixnum(imm0,arg_z))
-dnl 	 __(bgt cr1,2f)
-dnl 	 /* (ash n -count) => fixnum  */
-dnl 	 __(neg imm2,imm0)
-dnl 	 __(bgt cr2,1f)
-dnl 	 __(mov imm2,#31)
-dnl 1:	
-dnl 	 __(sraw imm0,imm1,imm2)
-dnl 	 __(box_fixnum(arg_z,imm0))
-dnl 	 __(bx lr)
-dnl 	 /* Integer-length of arg_y/imm1 to imm2  */
-dnl 2:		
-dnl 	 __(cntlzw. imm2,imm1)
-dnl 	 __(bne 3f)		/* cr0`eq' set if negative  */
-dnl 	 __(not imm2,imm1)
-dnl 	 __(cntlzw imm2,imm2)
-dnl 3:
-dnl 	 __(subfic imm2,imm2,32)
-dnl 	 __(add imm2,imm2,imm0)	 /* imm2 <- integer-length(imm1) + count  */
-dnl 	 __(cmpri(cr1,imm2,31-fixnumshift))
-dnl 	 __(cmpri(cr2,imm0,32))
-dnl 	 __(slw imm2,imm1,imm0)
-dnl 	 __(bgt cr1,6f)
-dnl 	 __(box_fixnum(arg_z,imm2))
-dnl 	 __(bx lr)	
-dnl 6:
-dnl 	 __(bgt cr2,9f)
-dnl 	 __(bne cr2,7f)
-dnl 	 /* Shift left by 32 bits exactly  */
-dnl 	 __(mov imm0,imm1)
-dnl 	 __(mov imm1,#0)
-dnl 	 __(beq _SPmakes64)
-dnl 	 __(b _SPmakeu64)
-dnl 7:
-dnl 	 /* Shift left by fewer than 32 bits, result not a fixnum  */
-dnl 	 __(subfic imm0,imm0,32)
-dnl 	 __(beq 8f)
-dnl 	 __(srw imm0,imm1,imm0)
-dnl 	 __(mov imm1,imm2)
-dnl 	 __(b _SPmakeu64)
-dnl 8:	
-dnl 	 __(sraw imm0,imm1,imm0)
-dnl 	 __(mov imm1,imm2)
-dnl 	 __(b _SPmakes64)
-dnl         __endif
-dnl 9:		
-dnl 	__(jump_builtin(_builtin_ash,2))
-dnl 
-dnl _spentry(builtin_negate)
-dnl         __(test_fixnum(arg_z))
-dnl         __(bne 1f)
-dnl         __(rsbs arg_z,arg_z,#0)
-dnl         __(bxvc lr)
-dnl 	__(unbox_fixnum(imm1,arg_z))
-dnl         __ifdef(`PPC64')
-dnl 	 __(mov imm0,#two_digit_bignum_header)
-dnl          __(rotldi imm1,imm1,32)
-dnl 	 __(xoris imm1,imm1,0xe000)
-dnl 	 __(Misc_Alloc_Fixed(arg_z,imm0,aligned_bignum_size(2)))
-dnl 	 __(str(imm1,misc_data_offset(arg_z)))
-dnl         __else
-dnl 	 __(mov imm0,#one_digit_bignum_header)
-dnl 	 __(xoris imm1,imm1,0xc000)
-dnl 	 __(Misc_Alloc_Fixed(arg_z,imm0,aligned_bignum_size(1)))
-dnl 	 __(str(imm1,misc_data_offset(arg_z)))
-dnl         __endif
-dnl 	__(bx lr)
-dnl 1:
-dnl 	__(jump_builtin(_builtin_negate,1))
+dnl  __(jump_builtin(_builtin_seqtype,1))
+
+/* This is                  
+_spentry(builtin_assq)
+        __(b 2f)
+1:      __(trap_unless_list(arg_z,imm0))
+        __(_car(arg_x,arg_z))
+        __(_cdr(arg_z,arg_z))
+        __(cmp arg_x,#nil_value)
+        __(beq 2f)
+        __(trap_unless_list(arg_x,imm0))
+        __(_car(temp0,arg_x))
+        __(cmp temp0,arg_y)
+        __(bne 2f)
+        __(mov arg_z,arg_x)
+        __(bx lr)
+2:      __(cmp arg_z,#nil_value)
+        __(bne 1b)
+        __(bx lr)
+ 
+_spentry(builtin_memq)
+        __(cmp arg_z,nil_value)
+        __(b 2f)
+1:      __(trap_unless_list(arg_z,imm0))
+        __(_car(arg_x,arg_z))
+        __(_cdr(temp0,arg_z))
+        __(cmp arg_x,arg_y)
+        __(bxeq lr)
+        __(cmp temp0,nil_value)
+        __(mov arg_z,temp0)
+2:      __(bne 1b)
+        __(bx lr)
+ 
+                 
+_spentry(builtin_logbitp)
+/* Call out unless both fixnums,0 <=  arg_y < logbitp_max_bit  */
+        __(test_two_fixnums(arg_y,arg_z,imm0))
+        __(bne 1f)
+        __(uuo_suspend_now(al))
+        __(cmp arg_y,#(nbits_in_word-fixnumshift)<<fixnumshift)
+        __(bhs 1f)
+        __(unbox_fixnum(imm0,arg_y))
+        __(mov imm1,#fixnum1)
+        __(tst arg_z,imm1,lsl imm0)
+        __(mov arg_z,#nil_value)
+        __(addne arg_z,arg_z,#t_offset)
+        __(bx lr)
+1:
+        __(jump_builtin(_builtin_logbitp,2))
+
+_spentry(builtin_logior)
+        __(orr imm0,arg_y,arg_z)
+        __(test_fixnum(imm0))
+        __(moveq arg_z,imm0)
+        __(bxeq lr)
+        __(jump_builtin(_builtin_logior,2))
+
+_spentry(builtin_logand)
+        __(test_two_fixnums(arg_y,arg_z,imm0))
+        __(andeq arg_z,arg_y,arg_z)
+        __(bxeq lr)
+        __(jump_builtin(_builtin_logand,2))
+          
+_spentry(builtin_ash)
+        __(test_two_fixnums(arg_y,arg_z,imm0))
+        __(bne 9f)
+        __(cmp arg_z,#0)
+        __(bgt 1f)
+        __(moveq arg_z,arg_y)
+        __(bxeq lr)
+        /* Shift right */
+        __(unbox_fixnum(imm2,arg_z))
+        __(rsb imm2,imm2,0)
+        __(cmp imm2,#32)
+        __(movge imm2,#31)
+        __(mov arg_z,#-fixnumone)
+        __(and arg_z,arg_z,arg_y,lsr imm2)
+        __(bx lr)
+        /* shift left */
+1:      __(unbox_fixnum(imm0,arg_y))
+        __(mov imm1,imm0,asr #31)
+        __(unbox_fixnum(imm2,arg_z))
+        __(cmp imm2,#32)
+        __(moveq imm1,imm0)
+        __(moveq imm0,#0)
+        __(beq _SPmakes64)
+        __(bgt 9f)
+        __(mov imm1,imm1,asl imm2)
+        __(rsb imm2,imm2,#32)
+        __(orr imm1,imm1,imm0,lsr imm2)
+        __(unbox_fixnum(imm2,arg_z))
+        __(mov imm0,imm0,asl imm2)
+        __(b _SPmake64)
+9:  
+        __(jump_builtin(_builtin_ash,2))
+
+_spentry(builtin_negate)
+        __(test_fixnum(arg_z))
+        __(bne 1f)
+        __(rsbs arg_z,arg_z,#0)
+        __(bxvc lr)
+        __(b _SPfix_overflow)
+1:
+        __(jump_builtin(_builtin_negate,1))
 dnl 
 dnl _spentry(builtin_logxor)
@@ -4954,7 +2944,7 @@
 dnl         __(extract_lisptag(imm1,arg_z))
 dnl         __(ands imm0,imm0,imm1)
-dnl 	__(eoreq arg_z,arg_y,arg_z)
-dnl 	__(bxeq lr)
-dnl 	__(jump_builtin(_builtin_logxor,2))
+dnl  __(eoreq arg_z,arg_y,arg_z)
+dnl  __(bxeq lr)
+dnl  __(jump_builtin(_builtin_logxor,2))
 dnl 
 dnl 
@@ -4962,17 +2952,17 @@
 dnl         
 dnl _spentry(builtin_aset1)
-dnl 	__(extract_typecode(imm0,arg_x))
-dnl 	__(cmpri(cr0,imm0,min_vector_subtag))
-dnl 	__(box_fixnum(temp0,imm0))
-dnl 	__(bgt cr0,1f)
-dnl 	__(jump_builtin(_builtin_aset1,3))
+dnl  __(extract_typecode(imm0,arg_x))
+dnl  __(cmpri(cr0,imm0,min_vector_subtag))
+dnl  __(box_fixnum(temp0,imm0))
+dnl  __(bgt cr0,1f)
+dnl  __(jump_builtin(_builtin_aset1,3))
 dnl 1:
-dnl 	__(b _SPsubtag_misc_set)
+dnl  __(b _SPsubtag_misc_set)
 dnl 
 dnl /* Enter the debugger  */
 dnl _spentry(breakpoint)
-dnl 	__(mov r3,#0)
-dnl 	__(tw 28,sp,sp)	/* 28 = lt|gt|eq (assembler bug for the latter)  */
-dnl 	__(bx lr)		/* if handler didn't  */
+dnl  __(mov r3,#0)
+dnl  __(tw 28,sp,sp) /* 28 = lt|gt|eq (assembler bug for the latter)  */
+dnl  __(bx lr)  /* if handler didn't  */
 dnl 
 dnl /* */
@@ -4982,74 +2972,74 @@
 dnl /* then shrink the eabi_c_frame. */
 dnl /*  */
-dnl 	
+dnl  
 dnl _spentry(eabi_ff_call)
-dnl 	__(mflr loc_pc)
-dnl 	__(str(sp,eabi_c_frame.savelr(sp)))
-dnl 	__(vpush_saveregs())		/* Now we can use save0-save7 to point to stacks  */
-dnl 	__(mov save0,rcontext)	/* or address globals.  */
-dnl 	__(extract_typecode(imm0,arg_z))
-dnl 	__(cmpri(imm0,subtag_macptr))
-dnl 	__(ldr save1,[sp,#0])	/* bottom of reserved lisp frame  */
-dnl 	__(la save2,-lisp_frame.size(save1))	/* top of lisp frame */
+dnl  __(mflr loc_pc)
+dnl  __(str(sp,eabi_c_frame.savelr(sp)))
+dnl  __(vpush_saveregs())  /* Now we can use save0-save7 to point to stacks  */
+dnl  __(mov save0,rcontext) /* or address globals.  */
+dnl  __(extract_typecode(imm0,arg_z))
+dnl  __(cmpri(imm0,subtag_macptr))
+dnl  __(ldr save1,[sp,#0]) /* bottom of reserved lisp frame  */
+dnl  __(la save2,-lisp_frame.size(save1)) /* top of lisp frame */
 dnl         __(zero_doublewords save2,0,lisp_frame.size)
-dnl 	__(str(save1,lisp_frame.backlink(save2)))
-dnl 	__(str(save2,c_frame.backlink(sp)))
-dnl 	__(str(fn,lisp_frame.savefn(save2)))
-dnl 	__(str(loc_pc,lisp_frame.savelr(save2)))
-dnl 	__(str(vsp,lisp_frame.savevsp(save2)))
-dnl 	__(bne 1f)
-dnl 	__(ldr arg_z,[arg_z,#macptr.address])
+dnl  __(str(save1,lisp_frame.backlink(save2)))
+dnl  __(str(save2,c_frame.backlink(sp)))
+dnl  __(str(fn,lisp_frame.savefn(save2)))
+dnl  __(str(loc_pc,lisp_frame.savelr(save2)))
+dnl  __(str(vsp,lisp_frame.savevsp(save2)))
+dnl  __(bne 1f)
+dnl  __(ldr arg_z,[arg_z,#macptr.address])
 dnl 1:
-dnl 	__(ldr save3,[rcontext,#tcr.cs_area])
-dnl 	__(str(save2,area.active(save3)))
-dnl 	__(str(allocptr,tcr.save_allocptr(rcontext)))
-dnl 	__(str(allocbase,tcr.save_allocbase(rcontext)))
-dnl 	__(str(tsp,tcr.save_tsp(rcontext)))
-dnl 	__(str(vsp,tcr.save_vsp(rcontext)))
-dnl 	__(mtctr arg_z)
-dnl 	__(str(rzero,tcr.ffi_exception(rcontext)))
-dnl 	__(mffs f0)
-dnl 	__(stfd f0,tcr.lisp_fpscr(rcontext))	/* remember lisp's fpscr  */
-dnl 	__(mtfsf 0xff,fp_zero)	/* zero foreign fpscr  */
-dnl 	__(mov imm1,#TCR_STATE_FOREIGN)
-dnl 	__(str(imm1,tcr.valence(rcontext)))
-dnl 	__(ldr r2,[rcontext,#tcr.native_thread_info])
-dnl 	__(ldr r13,[0,#lisp_globals.saveR13])
-dnl 	__(ldr r3,[sp,#eabi_c_frame.param0])
-dnl 	__(ldr r4,[sp,#eabi_c_frame.param1])
-dnl 	__(ldr r5,[sp,#eabi_c_frame.param2])
-dnl 	__(ldr r6,[sp,#eabi_c_frame.param3])
-dnl 	__(ldr r7,[sp,#eabi_c_frame.param4])
-dnl 	__(ldr r8,[sp,#eabi_c_frame.param5])
-dnl 	__(ldr r9,[sp,#eabi_c_frame.param6])
-dnl 	__(ldr r10,[sp,#eabi_c_frame.param7])
-dnl 	__(la save1,eabi_c_frame.minsiz-eabi_c_frame.param0(sp))
-dnl 	__(str(rzero,eabi_c_frame.savelr(save1)))
-dnl 	__(str(save2,eabi_c_frame.backlink(save1)))
-dnl 	__(mov sp,save1)
-dnl 	/* If we're calling a varargs C function, it'll want to */
-dnl 	/* know whether or not we've passed any args in FP regs. */
-dnl 	/* Better to say that we did (and force callee to save FP */
-dnl 	/* arg regs on entry) than to say that we didn't and get */
-dnl 	/* garbage results  */
-dnl 	__(crset 6)
-dnl 	__(bctrl)
-dnl 	/* C should have preserved save0 (= rcontext) for us.  */
-dnl 	__(ldr sp,[sp,#0])
-dnl 	__(mov imm2,save0)
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(mov rzero,#0)
-dnl 	__(mov loc_pc,rzero)
-dnl 	__(mov arg_x,#nil_value)
-dnl 	__(mov arg_y,#nil_value)
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(mov temp0,#nil_value)
-dnl 	__(mov temp1,#nil_value)
-dnl 	__(mov temp2,#nil_value)
-dnl 	__(mov temp3,#nil_value)
-dnl 	__(mov fn,#nil_value)
-dnl 	__(mov rcontext,imm2)
-dnl 	__(mov imm2,#TCR_STATE_LISP)
-dnl 	__(ldr tsp,[rcontext,#tcr.save_tsp])
+dnl  __(ldr save3,[rcontext,#tcr.cs_area])
+dnl  __(str(save2,area.active(save3)))
+dnl  __(str(allocptr,tcr.save_allocptr(rcontext)))
+dnl  __(str(allocbase,tcr.save_allocbase(rcontext)))
+dnl  __(str(tsp,tcr.save_tsp(rcontext)))
+dnl  __(str(vsp,tcr.save_vsp(rcontext)))
+dnl  __(mtctr arg_z)
+dnl  __(str(rzero,tcr.ffi_exception(rcontext)))
+dnl  __(mffs f0)
+dnl  __(stfd f0,tcr.lisp_fpscr(rcontext)) /* remember lisp's fpscr  */
+dnl  __(mtfsf 0xff,fp_zero) /* zero foreign fpscr  */
+dnl  __(mov imm1,#TCR_STATE_FOREIGN)
+dnl  __(str(imm1,tcr.valence(rcontext)))
+dnl  __(ldr r2,[rcontext,#tcr.native_thread_info])
+dnl  __(ldr r13,[0,#lisp_globals.saveR13])
+dnl  __(ldr r3,[sp,#eabi_c_frame.param0])
+dnl  __(ldr r4,[sp,#eabi_c_frame.param1])
+dnl  __(ldr r5,[sp,#eabi_c_frame.param2])
+dnl  __(ldr r6,[sp,#eabi_c_frame.param3])
+dnl  __(ldr r7,[sp,#eabi_c_frame.param4])
+dnl  __(ldr r8,[sp,#eabi_c_frame.param5])
+dnl  __(ldr r9,[sp,#eabi_c_frame.param6])
+dnl  __(ldr r10,[sp,#eabi_c_frame.param7])
+dnl  __(la save1,eabi_c_frame.minsiz-eabi_c_frame.param0(sp))
+dnl  __(str(rzero,eabi_c_frame.savelr(save1)))
+dnl  __(str(save2,eabi_c_frame.backlink(save1)))
+dnl  __(mov sp,save1)
+dnl  /* If we're calling a varargs C function, it'll want to */
+dnl  /* know whether or not we've passed any args in FP regs. */
+dnl  /* Better to say that we did (and force callee to save FP */
+dnl  /* arg regs on entry) than to say that we didn't and get */
+dnl  /* garbage results  */
+dnl  __(crset 6)
+dnl  __(bctrl)
+dnl  /* C should have preserved save0 (= rcontext) for us.  */
+dnl  __(ldr sp,[sp,#0])
+dnl  __(mov imm2,save0)
+dnl  __(ldr vsp,[sp,#lisp_frame.savevsp])
+dnl  __(mov rzero,#0)
+dnl  __(mov loc_pc,rzero)
+dnl  __(mov arg_x,#nil_value)
+dnl  __(mov arg_y,#nil_value)
+dnl  __(mov arg_z,#nil_value)
+dnl  __(mov temp0,#nil_value)
+dnl  __(mov temp1,#nil_value)
+dnl  __(mov temp2,#nil_value)
+dnl  __(mov temp3,#nil_value)
+dnl  __(mov fn,#nil_value)
+dnl  __(mov rcontext,imm2)
+dnl  __(mov imm2,#TCR_STATE_LISP)
+dnl  __(ldr tsp,[rcontext,#tcr.save_tsp])
 dnl         __(mov save0,#0)
 dnl         __(mov save1,#0)
@@ -5062,638 +3052,206 @@
 dnl         __(mov allocptr,#-dnode_size)
 dnl         __(mov allocbase,#-dnode_size)
-dnl 	__(str(imm2,tcr.valence(rcontext)))	
-dnl 	__(vpop_saveregs())
-dnl 	__(ldr allocptr,[rcontext,#tcr.save_allocptr])
-dnl 	__(ldr allocbase,[rcontext,#tcr.save_allocbase])
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(mtlr loc_pc)
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(mffs f0)
-dnl 	__(stfd f0,8(sp))
-dnl 	__(lwz imm3,12(sp))	/* imm3 = FPSCR after call  */
+dnl  __(str(imm2,tcr.valence(rcontext))) 
+dnl  __(vpop_saveregs())
+dnl  __(ldr allocptr,[rcontext,#tcr.save_allocptr])
+dnl  __(ldr allocbase,[rcontext,#tcr.save_allocbase])
+dnl  __(ldr loc_pc,[sp,#lisp_frame.savelr])
+dnl  __(mtlr loc_pc)
+dnl  __(ldr fn,[sp,#lisp_frame.savefn])
+dnl  __(mffs f0)
+dnl  __(stfd f0,8(sp))
+dnl  __(lwz imm3,12(sp)) /* imm3 = FPSCR after call  */
 dnl         __(clrrwi imm2,imm3,8)
-dnl 	__(discard_lisp_frame())
-dnl 	__(str(imm2,tcr.ffi_exception(rcontext)))
-dnl 	__(lfd f0,tcr.lisp_fpscr(rcontext))
-dnl 	__(mtfsf 0xff,f0)
-dnl 	__(check_pending_interrupt(`cr1'))
+dnl  __(discard_lisp_frame())
+dnl  __(str(imm2,tcr.ffi_exception(rcontext)))
+dnl  __(lfd f0,tcr.lisp_fpscr(rcontext))
+dnl  __(mtfsf 0xff,f0)
+dnl  __(check_pending_interrupt(`cr1'))
 dnl         __(mtxer rzero)
 dnl         __(mtctr rzero)
-dnl 	__(bx lr)
-dnl         
-dnl /*  */
-dnl /* This gets called with R11 holding the unboxed callback index. */
-dnl /* */
-dnl         
-dnl _spentry(eabi_callback)
-dnl 	/* First, we extend the C frame so that it has room for */
-dnl         /* incoming arg regs.  */
-dnl 	__(ldr r0,[sp,#eabi_c_frame.backlink])
-dnl 	__(stru(r0,eabi_c_frame.param0-varargs_eabi_c_frame.incoming_stack_args(sp)))
-dnl 	__(mflr r0)
-dnl 	__(str(r0,varargs_eabi_c_frame.savelr(sp)))
-dnl 	__(str(r3,varargs_eabi_c_frame.gp_save+(0*4)(sp)))
-dnl 	__(str(r4,varargs_eabi_c_frame.gp_save+(1*4)(sp)))
-dnl 	__(str(r5,varargs_eabi_c_frame.gp_save+(2*4)(sp)))
-dnl 	__(str(r6,varargs_eabi_c_frame.gp_save+(3*4)(sp)))
-dnl 	__(str(r7,varargs_eabi_c_frame.gp_save+(4*4)(sp)))
-dnl 	__(str(r8,varargs_eabi_c_frame.gp_save+(5*4)(sp)))
-dnl 	__(str(r9,varargs_eabi_c_frame.gp_save+(6*4)(sp)))
-dnl 	__(str(r10,varargs_eabi_c_frame.gp_save+(7*4)(sp)))
-dnl 	/* Could check the appropriate CR bit and skip saving FP regs here  */
-dnl 	__(stfd f1,varargs_eabi_c_frame.fp_save+(0*8)(sp))
-dnl 	__(stfd f2,varargs_eabi_c_frame.fp_save+(1*8)(sp))
-dnl 	__(stfd f3,varargs_eabi_c_frame.fp_save+(2*8)(sp))
-dnl 	__(stfd f4,varargs_eabi_c_frame.fp_save+(3*8)(sp))
-dnl 	__(stfd f5,varargs_eabi_c_frame.fp_save+(4*8)(sp))
-dnl 	__(stfd f6,varargs_eabi_c_frame.fp_save+(5*8)(sp))
-dnl 	__(stfd f7,varargs_eabi_c_frame.fp_save+(6*8)(sp))
-dnl 	__(stfd f8,varargs_eabi_c_frame.fp_save+(7*8)(sp))
-dnl 	__(la r0,varargs_eabi_c_frame.incoming_stack_args(sp))
-dnl 	__(str(r0,varargs_eabi_c_frame.overflow_arg_area(sp)))
-dnl 	__(la r0,varargs_eabi_c_frame.regsave(sp))
-dnl 	__(str(r0,varargs_eabi_c_frame.reg_save_area(sp)))
-dnl 	__(mov r0,#0)
-dnl 	__(str(r0,varargs_eabi_c_frame.flags(sp)))
-dnl 
-dnl 	/* Save the non-volatile registers on the sp stack  */
-dnl 	/* This is a non-standard stack frame, but noone will ever see it,  */
-dnl         /* so it doesn't matter. It will look like more of the stack frame pushed below.  */
-dnl 	__(stru(sp,-(c_reg_save.size)(sp)))
-dnl         __(str(r13,c_reg_save.save_gprs+(0*node_size)(sp)))
-dnl         __(str(r14,c_reg_save.save_gprs+(1*node_size)(sp)))
-dnl         __(str(r15,c_reg_save.save_gprs+(2*node_size)(sp)))
-dnl         __(str(r16,c_reg_save.save_gprs+(3*node_size)(sp)))
-dnl         __(str(r17,c_reg_save.save_gprs+(4*node_size)(sp)))
-dnl         __(str(r18,c_reg_save.save_gprs+(5*node_size)(sp)))
-dnl         __(str(r19,c_reg_save.save_gprs+(6*node_size)(sp)))
-dnl         __(str(r20,c_reg_save.save_gprs+(7*node_size)(sp)))
-dnl         __(str(r21,c_reg_save.save_gprs+(8*node_size)(sp)))
-dnl         __(str(r22,c_reg_save.save_gprs+(9*node_size)(sp)))
-dnl         __(str(r23,c_reg_save.save_gprs+(10*node_size)(sp)))
-dnl         __(str(r24,c_reg_save.save_gprs+(11*node_size)(sp)))
-dnl         __(str(r25,c_reg_save.save_gprs+(12*node_size)(sp)))
-dnl         __(str(r26,c_reg_save.save_gprs+(13*node_size)(sp)))
-dnl         __(str(r27,c_reg_save.save_gprs+(14*node_size)(sp)))
-dnl         __(str(r28,c_reg_save.save_gprs+(15*node_size)(sp)))
-dnl         __(str(r29,c_reg_save.save_gprs+(16*node_size)(sp)))
-dnl         __(str(r30,c_reg_save.save_gprs+(17*node_size)(sp)))
-dnl         __(str(r31,c_reg_save.save_gprs+(18*node_size)(sp)))
-dnl 	__(mffs f0)
-dnl 	__(stfd f0,c_reg_save.save_fp_zero(sp))
-dnl 	__(ldr r31,[sp,#c_reg_save.save_fp_zero+4])	/* recover FPSCR image  */
-dnl 	__(str(r31,c_reg_save.save_fpscr(sp)))
-dnl 	__(mov r30,#0x43300000)
-dnl 	__(mov r31,#0x80000000)
-dnl 	__(str(r30,c_reg_save.save_fp_zero(sp)))
-dnl 	__(str(r31,c_reg_save.save_fp_zero+4(sp)))
-dnl 	__(stfd fp_s32conv,c_reg_save.save_fps32conv(sp))
-dnl 	__(lfd fp_s32conv,c_reg_save.save_fp_zero(sp))
-dnl 	__(stfd fp_zero,c_reg_save.save_fp_zero(sp))
-dnl 	__(lfs fp_zero,lisp_globals.short_float_zero(0))	/* ensure that fp_zero contains 0.0  */
-dnl 
-dnl 	
-dnl /* Restore rest of Lisp context.  */
-dnl /* Could spread out the memory references here to gain a little speed  */
-dnl 	__(mov loc_pc,#0)
-dnl 	__(mov fn,#0)                     /* subprim, not a lisp function  */
-dnl 	__(mov temp3,#0)
-dnl 	__(mov temp2,#0)
-dnl 	__(mov temp1,#0)
-dnl 	__(mov temp0,#0)
-dnl 	__(mov arg_x,#0)
-dnl 	__(box_fixnum(arg_y,r11))	/* callback-index  */
-dnl 	__(la arg_z,c_reg_save.size+varargs_eabi_c_frame.gp_save(sp))	/* parameters (tagged as a fixnum)  */
-dnl 
-dnl 	/* Recover lisp thread context. Have to call C code to do so.  */
-dnl 	__(ref_global(r12,get_tcr))
-dnl 	__(mtctr r12)
-dnl         __(mov r3,#1)
-dnl 	__(stru(sp,-(stack_align(eabi_c_frame.minsiz))(sp)))
-dnl 	__(bctrl)
-dnl 	__(la sp,(stack_align(eabi_c_frame.minsiz))(sp))
-dnl 	__(la rcontext,TCR_BIAS(r3))
-dnl 	__(mov allocptr,#0)
-dnl 	__(mov allocbase,#0)
-dnl 	__(ldr vsp,[rcontext,#tcr.save_vsp])
-dnl 	__(ldr tsp,[rcontext,#tcr.save_tsp])		
-dnl 	__(mov rzero,#0)
-dnl 	__(mtxer rzero) /* lisp wants the overflow bit clear  */
-dnl 	__(mov imm0,#TCR_STATE_LISP)
-dnl 	__(mov save0,#0)
-dnl 	__(mov save1,#0)
-dnl 	__(mov save2,#0)
-dnl 	__(mov save3,#0)
-dnl 	__(mov save4,#0)
-dnl 	__(mov save5,#0)
-dnl 	__(mov save6,#0)
-dnl 	__(mov save7,#0)
-dnl         __(mtctr rzero)
-dnl 	__(str(imm0,tcr.valence(rcontext)))
-dnl 	__(ldr allocptr,[rcontext,#tcr.save_allocptr])
-dnl 	__(ldr allocbase,[rcontext,#tcr.save_allocbase])
-dnl 	__(lfd f0,tcr.lisp_fpscr(rcontext))
-dnl 	__(mtfsf 0xff,f0)
-dnl 
-dnl         __(restore_saveregs(vsp))        
-dnl 	/* load nargs and callback to the lisp  */
-dnl 	__(set_nargs(2))
-dnl 	__(ldr imm2,[rcontext,#tcr.cs_area])
-dnl 	__(ldr imm4,[imm2,#area.active])
-dnl 	__(stru(imm4,-lisp_frame.size(sp)))
-dnl 	__(str(imm3,lisp_frame.savelr(sp)))
-dnl 	__(str(vsp,lisp_frame.savevsp(sp)))	/* for stack overflow code  */
-dnl 	__(mov fname,#nrs.callbacks)	/* %pascal-functions%  */
-dnl 	__(call_fname)
-dnl 	__(ldr imm2,[sp,#lisp_frame.backlink])
-dnl 	__(ldr imm3,[rcontext,#tcr.cs_area])
-dnl 	__(str(imm2,area.active(imm3)))
-dnl 	__(discard_lisp_frame())
-dnl 	/* save_vsp will be restored from ff_call's stack frame, but  */
-dnl 	/* I included it here for consistency.  */
-dnl 	/* save_tsp is set below after we exit Lisp context.  */
-dnl 	__(str(allocptr,tcr.save_allocptr(rcontext)))
-dnl 	__(str(allocbase,tcr.save_allocbase(rcontext)))
-dnl 	__(str(vsp,tcr.save_vsp(rcontext)))
-dnl 	__(str(tsp,tcr.save_tsp(rcontext)))
-dnl 	/* Exit lisp context  */
-dnl 	/* This is not necessary yet, but will be once we can be interrupted  */
-dnl 	__(mov imm1,#TCR_STATE_FOREIGN)
-dnl 	__(str(imm1,tcr.valence(rcontext)))
-dnl 	/* Restore the non-volatile registers & fpscr  */
-dnl 	__(lfd fp_zero,c_reg_save.save_fp_zero(sp))
-dnl 	__(ldr r31,[sp,#c_reg_save.save_fpscr])
-dnl 	__(str(r31,c_reg_save.save_fp_zero+4(sp)))
-dnl 	__(lfd f0,c_reg_save.save_fp_zero(sp))
-dnl 	__(mtfsf 0xff,f0)
-dnl 	__(ldr r13,c_reg_save.save_gprs+(0*node_size)(sp)))
-dnl 	__(ldr(r14,c_reg_save.save_gprs+(1*node_size)(sp)))
-dnl 	__(ldr(r15,c_reg_save.save_gprs+(2*node_size)(sp)))
-dnl 	__(ldr(r16,c_reg_save.save_gprs+(3*node_size)(sp)))
-dnl 	__(ldr(r17,c_reg_save.save_gprs+(4*node_size)(sp)))
-dnl 	__(ldr(r18,c_reg_save.save_gprs+(5*node_size)(sp)))
-dnl 	__(ldr(r19,c_reg_save.save_gprs+(6*node_size)(sp)))
-dnl 	__(ldr(r20,c_reg_save.save_gprs+(7*node_size)(sp)))
-dnl 	__(ldr(r21,c_reg_save.save_gprs+(8*node_size)(sp)))
-dnl 	__(ldr(r22,c_reg_save.save_gprs+(9*node_size)(sp)))
-dnl 	__(ldr(r23,c_reg_save.save_gprs+(10*node_size)(sp)))
-dnl 	__(ldr(r24,c_reg_save.save_gprs+(11*node_size)(sp)))
-dnl 	__(ldr(r25,c_reg_save.save_gprs+(12*node_size)(sp)))
-dnl 	__(ldr(r26,c_reg_save.save_gprs+(13*node_size)(sp)))
-dnl 	__(ldr(r27,c_reg_save.save_gprs+(14*node_size)(sp)))
-dnl 	__(ldr(r28,c_reg_save.save_gprs+(15*node_size)(sp)))
-dnl 	__(ldr(r29,c_reg_save.save_gprs+(16*node_size)(sp)))
-dnl 	__(ldr(r30,c_reg_save.save_gprs+(17*node_size)(sp)))
-dnl 	__(ldr(r31,c_reg_save.save_gprs+(18*node_size)(sp)))
-dnl 	__(lfd fp_s32conv,c_reg_save.save_fps32conv(sp))
-dnl 	__(ldr(sp,0(sp)))
-dnl 
-dnl 	__(ldr(r3,varargs_eabi_c_frame.gp_save+(0*4)(sp)))
-dnl 	__(ldr(r4,varargs_eabi_c_frame.gp_save+(1*4)(sp)))
-dnl 	__(lfd f1,varargs_eabi_c_frame.gp_save+(2*4)(sp))
-dnl 	__(ldr(r5,varargs_eabi_c_frame.savelr(sp)))
-dnl 	__(str(r5,varargs_eabi_c_frame.old_savelr(sp)))
-dnl 	__(mtlr r5)
-dnl 	__(ldr(r5,varargs_eabi_c_frame.backlink(sp)))
-dnl 	__(str(r5,varargs_eabi_c_frame.old_backlink(sp)))
-dnl 	__(la sp,varargs_eabi_c_frame.old_backlink(sp))
-dnl 	__(bx lr)
-dnl 	
-dnl 
-dnl /*	Do a linux system call:	 the system call index is (boxed) */
-dnl /*	in arg_z, and other arguments are in an eabi_c_frame on */
-dnl /*	the C stack.  As is the case with an eabi_ff_call, there's */
-dnl /*	a lisp frame reserved underneath the eabi_c_frame. */
-dnl 
-dnl /*	This is a little simpler than eabi_ff_call, because we */
-dnl /*	can assume that there are no synchronous callbacks to */
-dnl /*	lisp (that might cause a GC.)  It's also simpler for the */
-dnl /*	caller, since we return error status atomically. */
-dnl 
-dnl /*	A system call can clobber any or all of r9-r12, so we need */
-dnl /*	to save and restore allocptr, allocbase, and tsp. */
-dnl 	
-dnl _spentry(eabi_syscall)
-dnl /*	We're entered with an eabi_c_frame on the C stack.  There's a */
-dnl /*	lisp_frame reserved underneath it; we'll link it in in a minute. */
-dnl /*	Load the outgoing GPR arguments from eabi_c_frame.param`0-7', */
-dnl /*	then shrink the eabi_c_frame. */
-dnl 
-dnl 	__(mflr loc_pc)
-dnl         __(vpush_saveregs())
-dnl 	__(str(sp,eabi_c_frame.savelr(sp)))
-dnl 	__(mov arg_x,#nil_value)
-dnl 	__(mov temp0,rcontext)
-dnl 	__(ldr temp1,[sp,#c_frame.backlink])	/* bottom of reserved lisp frame  */
-dnl 	__(la temp2,-lisp_frame.size(temp1))	/* top of lisp frame  */
-dnl         __(zero_doublewords temp2,0,lisp_frame.size)
-dnl 	__(str(temp1,lisp_frame.backlink(temp2)))
-dnl 	__(str(temp2,c_frame.backlink(sp)))
-dnl 	__(str(fn,lisp_frame.savefn(temp2)))
-dnl 	__(str(loc_pc,lisp_frame.savelr(temp2)))
-dnl 	__(str(vsp,lisp_frame.savevsp(temp2)))
-dnl 	__(ldr temp3,[rcontext,#tcr.cs_area])
-dnl 	__(str(temp2,area.active(temp3)))
-dnl 	__(str(allocptr,tcr.save_allocptr(rcontext)))
-dnl 	__(str(allocbase,tcr.save_allocbase(rcontext)))
-dnl 	__(str(tsp,tcr.save_tsp(rcontext)))
-dnl 	__(str(vsp,tcr.save_vsp(rcontext)))
-dnl 	__(str(rzero,tcr.ffi_exception(rcontext)))
-dnl 	__(mov imm1,#TCR_STATE_FOREIGN)
-dnl 	__(str(imm1,tcr.valence(rcontext)))
-dnl 	__(ldr r13,[0,#lisp_globals.saveR13])
-dnl 	__(ldr r3,[sp,#eabi_c_frame.param0])
-dnl 	__(ldr r4,[sp,#eabi_c_frame.param1])
-dnl 	__(ldr r5,[sp,#eabi_c_frame.param2])
-dnl 	__(ldr r6,[sp,#eabi_c_frame.param3])
-dnl 	__(ldr r7,[sp,#eabi_c_frame.param4])
-dnl 	__(ldr r8,[sp,#eabi_c_frame.param5])
-dnl 	__(ldr r9,[sp,#eabi_c_frame.param6])
-dnl 	__(ldr r10,[sp,#eabi_c_frame.param7])
-dnl 	__(la temp1,eabi_c_frame.minsiz-eabi_c_frame.param0(sp))
-dnl 	__(str(rzero,eabi_c_frame.savelr(temp1)))
-dnl 	__(str(temp2,eabi_c_frame.backlink(temp1)))
-dnl 	__(mov sp,temp1)
-dnl 	__(unbox_fixnum(r0,arg_z))
-dnl 	__(sc)
-dnl 	__(nop)
-dnl 	/* C should have preserved temp0 (= rcontext) for us.  */
-dnl 	__(ldr sp,[sp,#0])
-dnl 	__(mov imm2,temp0)
-dnl 	__(ldr vsp,[sp,#lisp_frame.savevsp])
-dnl 	__(mov rzero,#0)
-dnl 	__(mov loc_pc,rzero)
-dnl 	__(mov fn,rzero)
-dnl 	__(mov arg_x,#nil_value)
-dnl 	__(mov arg_y,#nil_value)
-dnl 	__(mov arg_z,#nil_value)
-dnl 	__(mov temp0,#nil_value)
-dnl 	__(mov temp1,#nil_value)
-dnl 	__(mov temp2,#nil_value)
-dnl 	__(mov temp3,#nil_value)
-dnl 	__(mov fn,#nil_value)
-dnl         
-dnl 	__(mov imm3,#TCR_STATE_LISP)
-dnl 	__(mov rcontext,imm2)
-dnl         __(mov save0,#0)
-dnl         __(mov save1,#0)
-dnl         __(mov save2,#0)
-dnl         __(mov save3,#0)
-dnl         __(mov save4,#0)
-dnl         __(mov save5,#0)
-dnl         __(mov save6,#0)
-dnl         __(mov save7,#0)        
-dnl 	__(str(imm3,tcr.valence(rcontext)))
-dnl 	__(vpop_saveregs)
-dnl 	__(ldr allocptr,[rcontext,#tcr.save_allocptr])
-dnl 	__(ldr allocbase,[rcontext,#tcr.save_allocbase])
-dnl 	__(ldr tsp,[rcontext,#tcr.save_tsp])
-dnl 	__(ldr loc_pc,[sp,#lisp_frame.savelr])
-dnl 	__(mtlr loc_pc)
-dnl 	__(ldr fn,[sp,#lisp_frame.savefn])
-dnl 	__(discard_lisp_frame())
-dnl 	__(bns 1f)
-dnl 	__(neg r3,r3)
-dnl 1:      
-dnl 	__(check_pending_interrupt(`cr1'))                
-dnl 	__(mtxer rzero)
-dnl 	__(bx lr)
-dnl         
-dnl /* arg_z should be of type (UNSIGNED-BYTE 64);  */
-dnl /* On PPC32, return high 32 bits in imm0, low 32 bits in imm1 */
-dnl /* On PPC64, return unboxed value in imm0  */
-dnl 
-dnl _spentry(getu64)
-dnl         __ifdef(`PPC64')
-dnl         __(extract_typecode(imm0,arg_z))
-dnl         __(cmpdi cr0,imm0,tag_fixnum)
-dnl         __(cmpdi cr2,arg_z,0)
-dnl         __(cmpdi cr1,imm0,subtag_bignum)
-dnl         __(bne cr0,1f)
-dnl         __(unbox_fixnum(imm0,arg_z))
-dnl         __(bgelr cr2)
-dnl 0:             
-dnl 	__(uuo_interr(error_object_not_u64,arg_z))
-dnl         
-dnl 1:      __(bne cr1,0b)
-dnl         __(getvheader(imm1,arg_z))
-dnl         __(ld imm0,misc_data_offset(arg_z))
-dnl         __(cmpdi cr2,imm1,two_digit_bignum_header)
-dnl         __(rotldi imm0,imm0,32)
-dnl         __(cmpdi cr1,imm1,three_digit_bignum_header)
-dnl         __(cmpdi cr0,imm0,0)
-dnl         __(beq cr2,2f)
-dnl         __(lwz imm1,misc_data_offset+8(arg_z))
-dnl         __(bne cr1,0b)
-dnl         __(cmpwi imm1,0)
-dnl         __(bne 0b)
-dnl         __(bx lr)
-dnl 2:      __(blt 0b)
-dnl         __(bx lr)        
-dnl         __else
-dnl 	__(extract_typecode(imm0,arg_z))
-dnl 	__(cmpri(cr0,imm0,tag_fixnum))
-dnl 	__(cmpri(cr1,arg_z,0))
-dnl 	__(cmpri(cr2,imm0,subtag_bignum))
-dnl 	__(unbox_fixnum(imm1,arg_z))
-dnl 	__(bne cr0,8f)
-dnl 	__(bgelr cr1)
-dnl 9:
-dnl 	__(uuo_interr(error_object_not_u64,arg_z))
-dnl 8:
-dnl 	__(bne- cr2,9b)
-dnl 	__(getvheader(imm2,arg_z))
-dnl 	__(cmpri(cr2,imm2,two_digit_bignum_header))
-dnl 	__(vrefr(imm1,arg_z,0))
-dnl 	__(cmpri(cr1,imm1,0))
-dnl 	__(mov imm0,#0)
-dnl 	__(bge cr2,2f)
-dnl 	__(blt- cr1,9b)
-dnl 	__(bx lr)
-dnl 2:
-dnl 	__(cmpri(cr0,imm2,three_digit_bignum_header))
-dnl 	__(vrefr(imm0,arg_z,1))
-dnl 	__(cmpri(cr1,imm0,0))
-dnl 	__(bne cr2,3f)
-dnl 	__(blt- cr1,9b)
-dnl 	__(bx lr)
-dnl 3:
-dnl 	__(vrefr(imm2,arg_z,2))
-dnl 	__(cmpri(cr1,imm2,0))
-dnl 	__(bne- cr0,9b)
-dnl 	__(bne- cr1,9b)
-dnl 	__(bx lr)
-dnl         __endif
-dnl         
-dnl /* arg_z should be of type (SIGNED-BYTE 64);  */
-dnl /* PPC32:   return high 32 bits  in imm0, low 32 bits in imm1  */
-dnl /* PPC64:   return unboxed value in imm0  */
-dnl 
-dnl _spentry(gets64)
-dnl         __ifdef(`PPC64')
-dnl 	 __(extract_typecode(imm1,arg_z))
-dnl          __(unbox_fixnum(imm0,arg_z))
-dnl 	 __(cmpri(cr0,imm1,tag_fixnum))
-dnl 	 __(cmpri(cr2,imm1,subtag_bignum))
-dnl          __(beqlr cr0)
-dnl          __(bne cr2,9f)
-dnl          __(ld imm1,misc_header_offset(arg_z))
-dnl          __(ld imm0,misc_data_offset(arg_z))
-dnl          __(cmpdi imm1,two_digit_bignum_header)
-dnl          __(rotldi imm0,imm0,32)
-dnl          __(beqlr)
-dnl         __else
-dnl 	 __(extract_typecode(imm0,arg_z))
-dnl 	 __(cmpri(cr0,imm0,tag_fixnum))
-dnl 	 __(cmpri(cr2,imm0,subtag_bignum))
-dnl 	 __(unbox_fixnum(imm1,arg_z))
-dnl 	 __(srawi imm0,imm1,31)
-dnl 	 __(beqlr cr0)
-dnl 	 __(bne cr2,9f)
-dnl 	 __(getvheader(imm2,arg_z))
-dnl 	 __(cmpri(cr2,imm2,two_digit_bignum_header))
-dnl 	 __(vrefr(imm1,arg_z,0))
-dnl 	 __(srawi imm0,imm1,31)
-dnl 	 __(bltlr cr2)
-dnl 	 __(vrefr(imm0,arg_z,1))
-dnl 	 __(beqlr cr2)
-dnl         __endif
-dnl 9:
-dnl 	__(uuo_interr(error_object_not_s64,arg_z))
-dnl 
-dnl 
-dnl 
-dnl 	
-dnl 
-dnl 
-dnl 
-dnl 
-dnl 
-dnl /* imm0:imm1 constitute an unsigned integer, almost certainly a bignum. */
-dnl /* Make a lisp integer out of those 128 bits ..  */
-dnl _spentry(makeu128)
-dnl         __ifdef(`PPC64')
-dnl          __(cmpdi imm0,0)
-dnl          __(cmpdi cr1,imm1,0)
-dnl          __(srdi imm3,imm0,32)
-dnl          __(srawi imm4,imm0,31)
-dnl          __(cmpdi cr3,imm3,0)
-dnl          __(cmpdi cr4,imm4,0)
-dnl          __(mov imm2,#five_digit_bignum_header)
-dnl          __(blt cr1,0f)
-dnl          __(beq 3f)
-dnl 0:              
-dnl          __(bge 1f)
-dnl          /* All 128 bits are significant, and the most significant */
-dnl          /* bit is set.  Allocate a 5-digit bignum (with a zero */
-dnl          /* sign digit  */
-dnl          __(Misc_Alloc_Fixed(arg_z,imm2,aligned_bignum_size(5)))
-dnl          __(rotldi imm0,imm0,32)
-dnl          __(rotldi imm1,imm1,32)
-dnl          __(std imm1,misc_data_offset(arg_z))
-dnl          __(std imm0,misc_data_offset+8(arg_z))
-dnl          __(bx lr)
-dnl 1:       /* If the high word of imm0 is a zero-extension of the low */
-dnl          /* word, we only need 3 digits ; otherwise, we need 4.  */
-dnl          __(mov imm2,#three_digit_bignum_header)
-dnl          __(rotldi imm1,imm1,32)
-dnl          __(bne cr3,2f) /* high word of imm0 is non-zero  */
-dnl          __(bne cr4,2f) /* sign bit is on in low word of imm0  */
-dnl          __(Misc_Alloc_Fixed(arg_z,imm2,aligned_bignum_size(3)))
-dnl          __(std imm1,misc_data_offset(arg_z))
-dnl          __(stw imm0,misc_data_offset+8(arg_z))
-dnl          __(bx lr)
-dnl 2:       __(mov imm2,#four_digit_bignum_header)
-dnl          __(rotldi imm0,imm0,32)
-dnl          __(Misc_Alloc_Fixed(arg_z,imm2,aligned_bignum_size(4)))
-dnl          __(std imm1,misc_data_offset(arg_z))
-dnl          __(std imm0,misc_data_offset+8(arg_z))
-dnl          __(bx lr)
-dnl 3:       __(mov imm0,imm1)
-dnl          __(b _SPmakeu64)              
-dnl         __else
-dnl          __(twgei r0,r0)
-dnl         __endif
-dnl 
-dnl /* imm0:imm1 constitute a signed integer, almost certainly a bignum. */
-dnl /* Make a lisp integer out of those 128 bits ..  */
-dnl _spentry(makes128)
-dnl         __ifdef(`PPC64')
-dnl          /* Is imm0 just a sign-extension of imm1 ?  */
-dnl          __(sradi imm2,imm1,63)
-dnl          /* Is the high word of imm0 just a sign-extension of the low word ?  */
-dnl          __(extsw imm3,imm0)
-dnl          __(cmpd imm2,imm0)
-dnl          __(cmpd cr1,imm3,imm0)
-dnl          __(beq 2f)
-dnl          __(rotldi imm0,imm0,32)
-dnl          __(rotldi imm1,imm1,32)
-dnl          __(beq cr1,1f)
-dnl          __(mov imm2,#four_digit_bignum_header)
-dnl          __(Misc_Alloc_Fixed(arg_z,imm2,aligned_bignum_size(4)))
-dnl          __(std imm1,misc_data_offset(arg_z))
-dnl          __(std imm0,misc_data_offset+8(arg_z))
-dnl          __(bx lr)
-dnl 1:       __(mov imm2,#three_digit_bignum_header)
-dnl          __(Misc_Alloc_Fixed(arg_z,imm2,aligned_bignum_size(3)))
-dnl          __(std imm1,misc_data_offset(arg_z))
-dnl          __(stw imm3,misc_data_offset+8(arg_z))
-dnl          __(bx lr)
-dnl 2:       __(mov imm0,imm1)
-dnl          __(b _SPmakes64)        
-dnl         __else
-dnl          __(twgei r0,r0)
-dnl         __endif        
-dnl                         
-dnl /* on entry: arg_z = symbol.  On exit, arg_z = value (possibly */
-dnl /* unbound_marker), arg_y = symbol, imm3 = symbol.binding-index  */
-dnl _spentry(specref)
-dnl         __(ldr imm1,[arg_z,#symbol.binding_index])
-dnl         __(ldr imm0,[rcontext,#tcr.tlb_limit])
-dnl         __(cmp imm1,imm0)
-dnl         __(ldr temp0,[rcontext,#tcr.tlb_pointer])
-dnl         __(mov arg_y,arg_z)
-dnl         __(movhs imm1,#0)
-dnl         __(ldr arg_z,[temp0,imm1])
-dnl         __(cmp arg_z,#no_thread_local_binding_marker)
-dnl      	__(ldreq arg_z,[arg_y,#symbol.vcell])
-dnl         __(bx lr)
-dnl 
-dnl 
-dnl _spentry(specrefcheck)
-dnl         __(ldr imm1,[arg_z,#symbol.binding_index])
-dnl         __(ldr imm0,[rcontext,#tcr.tlb_limit])
-dnl         __(cmp imm1,imm0)
-dnl         __(movhs imm1,#0)
-dnl         __(ldr imm0,[rcontext,#tcr.tlb_pointer])
-dnl         __(mov arg_y,arg_z)
-dnl         __(ldrx arg_z,[imm0,imm1])
-dnl         __(cmp arg_z,#no_thread_local_binding_marker)
-dnl      	__(ldreq arg_z,[arg_y,#symbol.vcell])
-dnl         __(cmp arg_z,#unbound_marker)
-dnl         __(uuo_error_unbound(eq,arg_y)
-dnl         __(bx lr)
-dnl 	
-dnl /* arg_y = special symbol, arg_z = new value.          */
-dnl _spentry(specset)
-dnl         __(ldr imm3,[arg_y,#symbol.binding_index])
-dnl         __(ldr imm0,[rcontext,#tcr.tlb_limit])
-dnl         __(ldr imm2,[rcontext,#tcr.tlb_pointer])
-dnl         __(cmpr(imm3,imm0))
-dnl         __(bge 1f)
-dnl         __(ldrx(temp1,imm2,imm3))
-dnl         __(cmpri(temp1,no_thread_local_binding_marker))
-dnl         __(beq 1f)
-dnl         __(str arg_z,imm2,imm3)
-dnl         __(bx lr)
-dnl 1:     	__(mov arg_x,arg_y)
-dnl         __(mov arg_y,#symbol.vcell-misc_data_offset)
-dnl         __(b _SPgvset)
-dnl 
+dnl  __(bx lr)
+
+
+
+
+/* arg_z should be of type (UNSIGNED-BYTE 64);  */
+/* return high 32 bits in imm1, low 32 bits in imm0 */
+
+
+_spentry(getu64)
+        __(test_fixnum(arg_z))
+        __(bne 1f)
+        __(unbox_fixnum(imm0,arg_z))
+        __(movs imm1,imm0,asr #31)
+        __(bxeq lr)
+0:              
+        __(uuo_error_reg_not_xtype(al,arg_z,xtype_u64))
+1:
+        __(extract_typecode(imm0,arg_z))
+        __(cmp imm0,#subtag_bignum)
+        __(bne 0b)
+        __(movc16(imm1,two_digit_bignum_header))
+        __(getvheader(imm0,arg_z))
+        __(cmp imm0,imm1)
+        __(bne 2f)
+        __(vrefr(imm0,arg_z,0))
+        __(vrefr(imm1,arg_z,1))
+        __(cmp imm1,#0)
+        __(bxge lr)
+        __(uuo_error_reg_not_xtype(al,arg_z,xtype_u64))
+2:      __(movc16(imm1,three_digit_bignum_header))
+        __(cmp imm0,imm1)
+        __(uuo_error_reg_not_xtype(ne,arg_z,xtype_u64))
+        __(vrefr(imm2,arg_z,2))
+        __(cmp imm2,#0)
+        __(vrefr(imm1,arg_z,1))
+        __(vrefr(imm0,arg_z,0))
+        __(bxeq lr)
+        __(uuo_error_reg_not_xtype(al,arg_z,xtype_u64))
+
+         
+/* arg_z should be of type (SIGNED-BYTE 64);  */
+/*    return high 32 bits  in imm1, low 32 bits in imm0  */
+
+_spentry(gets64)
+        __(test_fixnum(arg_z))
+        __(moveq imm0,arg_z,asr #fixnumshift)
+        __(moveq imm1,imm0,asr #31)
+        __(bxeq lr)
+        __(mov imm2,#0)
+        __(extract_lisptag(imm0,arg_z))
+        __(cmp imm0,#tag_misc)
+        __(ldreq imm2,[arg_z,#misc_header_offset])
+        __(movc16(imm1,two_digit_bignum_header))
+        __(cmp imm1,imm2)
+        __(uuo_error_reg_not_xtype(ne,arg_z,xtype_s64))
+        __(vrefr(imm1,arg_z,1))
+        __(vrefr(imm0,arg_z,0))
+        __(bx lr)
+
+
+/* on entry: arg_z = symbol.  On exit, arg_z = value (possibly */
+/* unbound_marker), arg_y = symbol, imm1 = symbol.binding-index  */
+_spentry(specref)
+        __(ldr imm1,[arg_z,#symbol.binding_index])
+        __(ldr imm0,[rcontext,#tcr.tlb_limit])
+        __(cmp imm1,imm0)
+        __(ldr temp0,[rcontext,#tcr.tlb_pointer])
+        __(mov arg_y,arg_z)
+        __(movhs imm1,#0)
+        __(ldr arg_z,[temp0,imm1])
+        __(cmp arg_z,#no_thread_local_binding_marker)
+        __(ldreq arg_z,[arg_y,#symbol.vcell])
+        __(bx lr)
+
+_spentry(specrefcheck)
+        __(ldr imm1,[arg_z,#symbol.binding_index])
+        __(ldr imm0,[rcontext,#tcr.tlb_limit])
+        __(cmp imm1,imm0)
+        __(movhs imm1,#0)
+        __(ldr imm0,[rcontext,#tcr.tlb_pointer])
+        __(mov arg_y,arg_z)
+        __(ldr arg_z,[imm0,imm1])
+        __(cmp arg_z,#no_thread_local_binding_marker)
+        __(ldreq arg_z,[arg_y,#symbol.vcell])
+        __(cmp arg_z,#unbound_marker)
+        __(uuo_error_unbound(eq,arg_y))
+        __(bx lr)
+
+/* arg_y = special symbol, arg_z = new value.          */
+_spentry(specset)
+        __(ldr imm1,[arg_y,#symbol.binding_index])
+        __(ldr imm0,[rcontext,#tcr.tlb_limit])
+        __(ldr imm2,[rcontext,#tcr.tlb_pointer])
+        __(cmp imm1,imm0)
+        __(movge imm1,#0)
+        __(ldr temp1,[imm2,imm1])
+        __(cmp temp1,#no_thread_local_binding_marker)
+        __(strne arg_z,[imm2,imm1])
+        __(bxne lr)
+        __(mov arg_x,arg_y)
+        __(mov arg_y,#symbol.vcell-misc_data_offset)
+        __(b _SPgvset)
+
 dnl /* Restore current thread's interrupt level to arg_z, */
 dnl /* noting whether the tcr's interrupt_pending flag was set.  */
 dnl _spentry(restoreintlevel)
-dnl 	__(cmpri(cr1,arg_z,0))
-dnl 	__(ldr imm0,[rcontext,#tcr.interrupt_pending])
-dnl 	__(cmpri(cr0,imm0,0))
-dnl 	__(bne cr1,1f)
-dnl 	__(beq cr0,1f)
-dnl 	__(str(rzero,tcr.interrupt_pending(rcontext)))
-dnl 	__(mov nargs,#fixnum_one)
-dnl 	__(trgti(nargs,0))
-dnl 	__(bx lr)
+dnl  __(cmpri(cr1,arg_z,0))
+dnl  __(ldr imm0,[rcontext,#tcr.interrupt_pending])
+dnl  __(cmpri(cr0,imm0,0))
+dnl  __(bne cr1,1f)
+dnl  __(beq cr0,1f)
+dnl  __(str(rzero,tcr.interrupt_pending(rcontext)))
+dnl  __(mov nargs,#fixnum_one)
+dnl  __(trgti(nargs,0))
+dnl  __(bx lr)
 dnl 1:
 dnl         __(ldr nargs,[rcontext,#tcr.tlb_pointer])
-dnl 	__(str(arg_z,INTERRUPT_LEVEL_BINDING_INDEX(nargs)))
-dnl 	__(bx lr)
-dnl 
-dnl 
+dnl  __(str(arg_z,INTERRUPT_LEVEL_BINDING_INDEX(nargs)))
+dnl  __(bx lr)
+
+	
 dnl /* Construct a lisp integer out of the 32-bit signed value in imm0 */
-dnl 
-dnl         
-dnl 
-dnl 
-dnl 
-dnl /*  */
 dnl /* arg_z should be of type (SIGNED-BYTE 32); return unboxed result in imm0 */
-dnl /*  */
-dnl _spentry(gets32)
-dnl         __ifdef(`PPC64')
-dnl          __(sldi imm1,arg_z,32-fixnumshift)
-dnl          __(extract_lisptag_(imm0,arg_z))
-dnl          __(sradi imm1,imm1,32-fixnumshift)
-dnl          __(box_fixnum(imm0,arg_z))
-dnl          __(cmpd cr1,imm1,arg_z)
-dnl          __(bne cr0,9f)
-dnl          __(beqlr cr1)
-dnl          __(b 9f)
-dnl         __else
-dnl 	 __(extract_typecode(imm1,arg_z))
-dnl 	 __(cmpri(cr0,imm1,tag_fixnum))
-dnl 	 __(cmpri(cr2,imm1,subtag_bignum))
-dnl 	 __(unbox_fixnum(imm0,arg_z))
-dnl 	 __(beqlr+ cr0)
-dnl 	 __(bne cr2,9f)
-dnl 	 __(getvheader(imm1,arg_z))
-dnl 	 __(cmpri(cr1,imm1,one_digit_bignum_header))
-dnl 	 __(vrefr(imm0,arg_z,0))
-dnl 	 __(beqlr+ cr1)
-dnl         __endif
-dnl 9:
-dnl 	__(uuo_interr(error_object_not_signed_byte_32,arg_z))
-dnl 
-dnl /*  */
-dnl /* arg_z should be of type (UNSIGNED-BYTE 32); return unboxed result in imm0 */
-dnl /*  */
-dnl 
-dnl _spentry(getu32)
-dnl 	__(extract_typecode(imm1,arg_z))
-dnl 	__(cmpri(cr0,imm1,tag_fixnum))
-dnl 	__(cmpri(cr1,arg_z,0))
-dnl 	__(cmpri(cr2,imm1,subtag_bignum))
-dnl 	__(unbox_fixnum(imm0,arg_z))
-dnl 	__(bne cr0,8f)
-dnl 	__(bgelr cr1)
-dnl 8:
-dnl 	__(bne- cr2,9f)
-dnl 	__(getvheader(imm2,arg_z))
-dnl 	__(cmpri(cr2,imm2,two_digit_bignum_header))
-dnl 	__(vrefr(imm0,arg_z,0))
-dnl 	__(cmpri(cr0,imm0,0))
-dnl 	__(bgt cr2,9f)
-dnl 	__(beq cr2,2f)
-dnl 	__(blt cr0,9f)
-dnl 	__(bx lr)
-dnl 2:
-dnl 	__(vrefr(imm1,arg_z,1))
-dnl 	__(cmpri(cr0,imm1,0))
-dnl 	__(beqlr+ cr0)
-dnl 
-dnl 9:
-dnl 	__(uuo_interr(error_object_not_unsigned_byte_32,arg_z))
-dnl 
-dnl 		
-dnl 
-dnl 
-dnl /* */
-dnl /* As per mvpass above, but in this case fname is known to be a */
-dnl /* symbol. */
-dnl 
-dnl _spentry(mvpasssym)
-dnl 	__(cmpri(cr0,nargs,node_size*nargregs))
-dnl 	__(mflr loc_pc)
-dnl 	__(mov imm0,vsp)
-dnl 	__(ble+ cr0,1f)
-dnl 	 __(subi imm0,imm0,node_size*nargregs)
-dnl 	 __(add imm0,imm0,nargs)
-dnl 1:            
-dnl 	__(build_lisp_frame(fn,loc_pc,imm0))
-dnl 	__(ref_global(loc_pc,ret1val_addr))
-dnl 	__(mov fn,#0)
-dnl 	__(mtlr loc_pc)
-dnl 	__(jump_fname())
-dnl 
-dnl 
-dnl 
+
+_spentry(gets32)
+        __(test_fixnum(arg_z))
+        __(moveq imm0,arg_z,asr #fixnumshift)
+        __(bxeq lr)
+        __(extract_lisptag(imm0,arg_z))
+        __(cmp imm0,#tag_misc)
+        __(uuo_error_reg_not_xtype(ne,arg_z,xtype_s32))
+        __(getvheader(imm0,arg_z))
+        __(movc16(imm1,one_digit_bignum_header))
+        __(cmp imm0,imm1)
+        __(uuo_error_reg_not_xtype(ne,arg_z,xtype_s32))
+        __(vrefr(imm0,arg_z,0))
+        __(bx lr)        
+
+
+/*  */
+/* arg_z should be of type (UNSIGNED-BYTE 32); return unboxed result in imm0 */
+/*  */
+
+ _spentry(getu32)
+        __(test_fixnum(arg_z))
+        __(moveq imm0,arg_z,asr #fixnumshift)
+        __(movseq imm1,imm0,asr #31)
+        __(bxeq lr)
+        __(movc16(imm1,one_digit_bignum_header))
+        __(extract_lisptag(imm0,arg_z))
+        __(cmp imm0,#tag_misc)
+        __(uuo_error_reg_not_xtype(ne,arg_z,xtype_u32))
+        __(getvheader(imm0,arg_z))
+        __(cmp imm0,imm1)
+        __(ldreq imm0,[arg_z,#misc_data_offset])
+        __(beq 7f)
+        __(movc16(imm1,two_digit_bignum_header))
+        __(cmp imm0,imm1)
+        __(ldreq imm0,[arg_z,#misc_data_offset])
+        __(ldreq imm1,[arg_z,#misc_data_offset+4])
+        __(cmpeq imm1,#0)
+        __(bxeq lr)
+        __(uuo_error_reg_not_xtype(ne,arg_z,xtype_u32))
+7:              
+        __(movs imm1,imm0,asr #31)
+        __(bxeq lr)
+        __(uuo_error_reg_not_xtype(ne,arg_z,xtype_u32))
+
+
+/* */
+/* As per mvpass above, but in this case fname is known to be a */
+/* symbol. */
+
+_spentry(mvpasssym)
+        __(cmp nargs,#node_size*nargregs)
+        __(mov nfn,vsp)
+        __(subgt nfn,nfn,#node_size*nargregs)
+        __(addgt nfn,nfn,nargs)
+        __(build_lisp_frame(imm0,nfn))
+        __(ref_global(lr,ret1val_addr,imm0))
+        __(mov fn,#0)
+        __(jump_fname())
+
 dnl _spentry(unbind)
 dnl         __(ldr imm1,[rcontext,#tcr.db_link])
@@ -5733,5 +3291,5 @@
 dnl         __(str(imm1,tcr.db_link(rcontext)))
 dnl         __(bx lr)
-dnl 	
+dnl  
 dnl 
 dnl 
@@ -5747,173 +3305,171 @@
 dnl                         
 dnl _spentry(progvrestore)
-dnl 	__(ldr imm0,[tsp,#tsp_frame.backlink])	/* ignore .SPnthrowXXX values frame  */
-dnl 	__(ldr imm0,[imm0,#tsp_frame.data_offset])
-dnl 	__(cmpri(cr0,imm0,0))
-dnl 	__(unbox_fixnum(imm0,imm0))
-dnl 	__(bne+ cr0,_SPunbind_n)
-dnl 	__(bx lr)
-dnl 
-dnl /* Bind CCL::*INTERRUPT-LEVEL* to 0.  If its value had been negative, check  */
-dnl /* for pending interrupts after doing so.  "nargs" can be freely used for an */
-dnl /* interrupt trap in this context.  */
-dnl _spentry(bind_interrupt_level_0)
-dnl         __(ldr imm4,[rcontext,#tcr.tlb_pointer])
-dnl         __(ldr temp0,[imm4,#INTERRUPT_LEVEL_BINDING_INDEX])
-dnl         __(ldr imm1,[rcontext,#tcr.db_link])
-dnl         __(cmpri(temp0,0))
-dnl         __(mov imm3,#INTERRUPT_LEVEL_BINDING_INDEX)
-dnl         __(vpush1(temp0))
-dnl         __(vpush1(imm3))
-dnl         __(vpush1(imm1))
-dnl         __(str(rzero,INTERRUPT_LEVEL_BINDING_INDEX(imm4)))
-dnl         __(str(vsp,tcr.db_link(rcontext)))
-dnl         __(beqlr)
-dnl         __(mov nargs,temp0)
-dnl         __(bgt 1f)
-dnl         __(ldr nargs,[rcontext,#tcr.interrupt_pending])
-dnl 1:      __(trgti(nargs,0))        
-dnl         __(bx lr)
-dnl 
-dnl /* Bind CCL::*INTERRUPT-LEVEL* to the fixnum -1.  (This has the effect */
-dnl /* of disabling interrupts.)  */
-dnl _spentry(bind_interrupt_level_m1)
-dnl         __(mov imm2,#-fixnumone)
-dnl         __(mov imm3,#INTERRUPT_LEVEL_BINDING_INDEX)
-dnl         __(ldr imm4,[rcontext,#tcr.tlb_pointer])
-dnl         __(ldr temp0,[imm4,#INTERRUPT_LEVEL_BINDING_INDEX])
-dnl         __(ldr imm1,[rcontext,#tcr.db_link])
-dnl         __(vpush1(temp0))
-dnl         __(vpush1(imm3))
-dnl         __(vpush1(imm1))
-dnl         __(str(imm2,INTERRUPT_LEVEL_BINDING_INDEX(imm4)))
-dnl         __(str(vsp,tcr.db_link(rcontext)))
-dnl         __(bx lr)
-dnl 
-dnl         
-dnl /* Bind CCL::*INTERRUPT-LEVEL* to the value in arg_z.  If that value's 0, */
-dnl /* do what _SPbind_interrupt_level_0 does  */
-dnl _spentry(bind_interrupt_level)
-dnl         __(cmpri(arg_z,0))
-dnl         __(mov imm3,#INTERRUPT_LEVEL_BINDING_INDEX)
-dnl         __(ldr imm4,[rcontext,#tcr.tlb_pointer])
-dnl         __(ldr temp0,[imm4,#INTERRUPT_LEVEL_BINDING_INDEX])
-dnl         __(ldr imm1,[rcontext,#tcr.db_link])
-dnl         __(beq _SPbind_interrupt_level_0)
-dnl         __(vpush1(temp0))
-dnl         __(vpush1(imm3))
-dnl         __(vpush1(imm1))
-dnl         __(str(arg_z,INTERRUPT_LEVEL_BINDING_INDEX(imm4)))
-dnl         __(str(vsp,tcr.db_link(rcontext)))
-dnl         __(bx lr)
-dnl 
-dnl /* Unbind CCL::*INTERRUPT-LEVEL*.  If the value changes from negative to */
-dnl /* non-negative, check for pending interrupts.  This is often called in */
-dnl /* a context where nargs is significant, so save and restore nargs around */
-dnl /* any interrupt polling  */
-dnl         
-dnl _spentry(unbind_interrupt_level)
-dnl         __(ldr imm0,[rcontext,#tcr.flags])
-dnl         __(ldr imm2,[rcontext,#tcr.tlb_pointer])
-dnl         __(andi. imm0,imm0,1<<TCR_FLAG_BIT_PENDING_SUSPEND)
-dnl         __(ldr imm1,[rcontext,#tcr.db_link])
-dnl         __(ldr temp1,[imm2,#INTERRUPT_LEVEL_BINDING_INDEX])
-dnl         __(bne 5f)
-dnl 0:      __(cmpri(cr1,temp1,0))
-dnl         __(ldr temp1,[imm1,#binding.val])
-dnl         __(ldr imm1,[imm1,#binding.link])
-dnl         __(cmpri(cr0,temp1,0))
-dnl         __(str(temp1,INTERRUPT_LEVEL_BINDING_INDEX(imm2)))
-dnl         __(str(imm1,tcr.db_link(rcontext)))
-dnl         __(bgelr cr1)
-dnl         __(bltlr cr0)
-dnl         __(mov imm2,nargs)
-dnl         __(check_pending_interrupt(`cr1'))
-dnl         __(mov nargs,imm2)
-dnl         __(bx lr)
-dnl 5:       /* Missed a suspend request; force suspend now if we're restoring
-dnl           interrupt level to -1 or greater */
-dnl         __(cmpri(temp1,-2<<fixnumshift))
-dnl         __(bne 0b)
-dnl         __(ldr imm0,[imm1,#binding.val])
-dnl         __(cmpr(imm0,temp1))
-dnl         __(beq 0b)
-dnl         __(mov imm0,#1<<fixnumshift)
-dnl         __(str(imm0,INTERRUPT_LEVEL_BINDING_INDEX(imm2)))
-dnl         __(suspend_now())
-dnl         __(b 0b)
-dnl 
-dnl 
-dnl /* arg_x = array, arg_y = i, arg_z = j. Typecheck everything.
-dnl    We don't know whether the array is alleged to be simple or
-dnl    not, and don't know anythng about the element type.  */
-dnl _spentry(aref2)
-dnl         __(extract_typecode(imm2,arg_x))
-dnl         __(trap_unless_lisptag_equal(arg_y,tag_fixnum,imm0))
-dnl         __(cmpri(cr2,imm2,subtag_arrayH))
-dnl         __(trap_unless_lisptag_equal(arg_z,tag_fixnum,imm0))
-dnl         __(bne cr2,1f)
-dnl         __(ldr imm1,[arg_x,#arrayH.rank])
-dnl         __(cmpri(imm1,2<<fixnumshift))
-dnl         __(bne 1f)
-dnl         /* It's a 2-dimensional array.  Check bounds */
-dnl         __(ldr imm0,[arg_x,#arrayH.dim0])
-dnl         __(trlge(arg_y,imm0))
-dnl         __(ldr imm0,[arg_x,#arrayH.dim0+node_size])
-dnl         __(trlge(arg_z,imm0))
-dnl         __(unbox_fixnum(imm0,imm0))
-dnl         __(mullr(arg_y,arg_y,imm0))
-dnl         __(add arg_z,arg_z,arg_y)
-dnl         /* arg_z is now row-major-index; get data vector and
-dnl            add in possible offset */
-dnl         __(mov arg_y,arg_x)
-dnl 0:      __(ldr imm0,[arg_y,#arrayH.displacement])
-dnl         __(ldr arg_y,[arg_y,#arrayH.data_vector])
-dnl         __(extract_subtag(imm1,arg_y))
-dnl         __(cmpri(imm1,subtag_vectorH))
-dnl         __(add arg_z,arg_z,imm0)
-dnl         __(bgt local_label(misc_ref_common))
-dnl         __(b 0b)
-dnl 1:              
-dnl         __(uuo_interr(error_object_not_array_2d,arg_x))
-dnl 
-dnl /* temp0 = array, arg_x = i, arg_y = j, arg_z = k */
-dnl _spentry(aref3)
-dnl         __(extract_typecode(imm2,temp0))
-dnl         __(trap_unless_lisptag_equal(arg_x,tag_fixnum,imm0))
-dnl         __(cmpri(cr2,imm2,subtag_arrayH))
-dnl         __(trap_unless_lisptag_equal(arg_y,tag_fixnum,imm0))
-dnl         __(bne cr2,1f)
-dnl         __(ldr imm1,[temp0,#arrayH.rank])
-dnl         __(trap_unless_lisptag_equal(arg_z,tag_fixnum,imm0))
-dnl         __(cmpri(imm1,3<<fixnumshift))
-dnl         __(bne 1f)
-dnl         /* It's a 3-dimensional array.  Check bounds */
-dnl         __(ldr imm2,arrayH.dim0+(node_size*2)(temp0)))
-dnl         __(ldr imm1,[temp0,#arrayH.dim0+node_size])
-dnl         __(ldr imm0,[temp0,#arrayH.dim0])
-dnl         __(trlge(arg_z,imm2))
-dnl         __(unbox_fixnum(imm2,imm2))
-dnl         __(trlge(arg_y,imm1))
-dnl         __(unbox_fixnum(imm1,imm1))
-dnl         __(trlge(arg_x,imm0))
-dnl         __(mullr(arg_y,arg_y,imm2))
-dnl         __(mullr(imm1,imm2,imm1))
-dnl         __(mullr(arg_x,imm1,arg_x))
-dnl         __(add arg_z,arg_z,arg_y)
-dnl         __(add arg_z,arg_z,arg_x)
-dnl         __(mov arg_y,temp0)
-dnl 0:      __(ldr arg_x,[arg_y,#arrayH.displacement])
-dnl         __(ldr arg_y,[arg_y,#arrayH.data_vector])
-dnl         __(extract_subtag(imm1,arg_y))
-dnl         __(cmpri(imm1,subtag_vectorH))
-dnl         __(add arg_z,arg_x,arg_z)
-dnl         __(bgt local_label(misc_ref_common))
-dnl         __(b 0b)
-dnl 1:              
-dnl         __(uuo_interr(error_object_not_array_3d,temp0))
-dnl 
-dnl         
-dnl         
-dnl 
+dnl  __(ldr imm0,[tsp,#tsp_frame.backlink]) /* ignore .SPnthrowXXX values frame  */
+dnl  __(ldr imm0,[imm0,#tsp_frame.data_offset])
+dnl  __(cmpri(cr0,imm0,0))
+dnl  __(unbox_fixnum(imm0,imm0))
+dnl  __(bne+ cr0,_SPunbind_n)
+dnl  __(bx lr)
+dnl 
+ /* Bind CCL::*INTERRUPT-LEVEL* to 0.  If its value had been negative, check  */
+/* for pending interrupts after doing so.  */
+_spentry(bind_interrupt_level_0)
+        __(ldr temp1,[rcontext,#tcr.tlb_pointer])
+        __(ldr temp0,[temp1,#INTERRUPT_LEVEL_BINDING_INDEX])
+        __(ldr imm0,[rcontext,#tcr.db_link])
+        __(cmp temp0,#0)
+        __(mov imm1,#INTERRUPT_LEVEL_BINDING_INDEX)
+        __(vpush1(temp0))
+        __(vpush1(imm1))
+        __(vpush1(imm0))
+        __(mov imm0,#0)
+        __(str imm0,[temp1,#INTERRUPT_LEVEL_BINDING_INDEX])
+        __(str vsp,[rcontext,#tcr.db_link])
+        __(bxeq lr)
+        __(ldrlt temp0,[rcontext,#tcr.interrupt_pending])
+        __(cmp temp0,#0)
+        __(uuo_interrupt_now(gt))
+        __(bx lr)
+	
+/* Bind CCL::*INTERRUPT-LEVEL* to the fixnum -1.  (This has the effect */
+/* of disabling interrupts.)  */
+_spentry(bind_interrupt_level_m1)
+        __(mov imm2,#-fixnumone)
+        __(mov imm1,#INTERRUPT_LEVEL_BINDING_INDEX)
+        __(ldr temp1,[rcontext,#tcr.tlb_pointer])
+        __(ldr temp0,[temp1,#INTERRUPT_LEVEL_BINDING_INDEX])
+        __(ldr imm0,[rcontext,#tcr.db_link])
+        __(vpush1(temp0))
+        __(vpush1(imm1))
+        __(vpush1(imm0))
+        __(str imm2,[temp1,#INTERRUPT_LEVEL_BINDING_INDEX])
+        __(str vsp,[rcontext,tcr.db_link])
+        __(bx lr)
+	
+
+/* Bind CCL::*INTERRUPT-LEVEL* to the value in arg_z.  If that value's 0, */
+/* do what _SPbind_interrupt_level_0 does  */
+_spentry(bind_interrupt_level)
+        __(cmp arg_z,#0)
+        __(mov imm1,#INTERRUPT_LEVEL_BINDING_INDEX)
+        __(ldr temp1,[rcontext,#tcr.tlb_pointer])
+        __(ldr temp0,[temp1,#INTERRUPT_LEVEL_BINDING_INDEX])
+        __(ldr imm0,[rcontext,#tcr.db_link])
+        __(beq _SPbind_interrupt_level_0)
+        __(vpush1(temp0))
+        __(vpush1(imm1))
+        __(vpush1(imm0))
+        __(str arg_z,[temp1,INTERRUPT_LEVEL_BINDING_INDEX])
+        __(str vsp,[rcontext,#tcr.db_link])
+        __(bx lr)
+
+/* Unbind CCL::*INTERRUPT-LEVEL*.  If the value changes from negative to */
+/* non-negative, check for pending interrupts.  This is often called in */
+/* a context where nargs is significant, so save and restore nargs around */
+/* any interrupt polling  */
+         
+ _spentry(unbind_interrupt_level)
+        __(ldr imm0,[rcontext,#tcr.flags])
+        __(ldr temp2,[rcontext,#tcr.tlb_pointer])
+        __(tst imm0,#1<<TCR_FLAG_BIT_PENDING_SUSPEND)
+        __(ldr imm0,[rcontext,#tcr.db_link])
+        __(ldr temp0,[temp2,#INTERRUPT_LEVEL_BINDING_INDEX])
+        __(bne 5f)
+0:      
+        __(ldr temp1,[imm0,#binding.val])
+        __(ldr imm0,[imm0,#binding.link])
+        __(str temp1,[temp2,#INTERRUPT_LEVEL_BINDING_INDEX])
+        __(str imm0,[rcontext,#tcr.db_link])
+        __(cmp temp0,#0)
+        __(bxge lr)
+        __(cmp temp1,#0)
+        __(bxlt lr)
+        __(check_enabled_pending_interrupt(imm0))
+        __(bx lr)
+5:       /* Missed a suspend request; force suspend now if we're restoring
+          interrupt level to -1 or greater */
+        __(cmp temp0,#-2<<fixnumshift)
+        __(bne 0b)
+        __(ldr imm0,[imm1,#binding.val])
+        __(cmp imm0,temp0)
+        __(beq 0b)
+        __(mov imm0,#1<<fixnumshift)
+        __(str imm0,[temp2,INTERRUPT_LEVEL_BINDING_INDEX])
+        __(suspend_now())
+        __(b 0b)
+ 
+ 
+/* arg_x = array, arg_y = i, arg_z = j. Typecheck everything.
+    We don't know whether the array is alleged to be simple or
+   not, and don't know anythng about the element type.  */
+_spentry(aref2)
+        __(trap_unless_fixnum(arg_y))
+        __(trap_unless_fixnum(arg_z))
+        __(extract_typecode(imm2,arg_x))
+        __(cmp imm2,#subtag_arrayH)
+        __(ldreq imm1,[arg_x,#arrayH.rank])
+        __(cmpeq imm1,#2<<fixnumshift)
+        __(uuo_error_reg_not_xtype(ne,arg_x,xtype_array2d))
+        /* It's a 2-dimensional array.  Check bounds */
+        __(ldr imm0,[arg_x,#arrayH.dim0])
+        __(cmp arg_y,imm0)
+        __(uuo_error_array_bounds(hs,arg_y,arg_x))
+        __(ldr imm0,[arg_x,#arrayH.dim0+node_size])
+        __(cmp arg_z,imm0)
+        __(uuo_error_array_bounds(hs,arg_z,arg_x))
+        __(unbox_fixnum(imm0,imm0))
+        __(mul temp0,arg_y,imm0) /* no MLA on ARMv5 */
+        __(add arg_z,arg_z,temp0)
+        /* arg_z is now row-major-index; get data vector and
+           add in possible offset */
+        __(mov arg_y,arg_x)
+0:      __(ldr imm0,[arg_y,#arrayH.displacement])
+        __(ldr arg_y,[arg_y,#arrayH.data_vector])
+        __(extract_subtag(imm1,arg_y))
+        __(cmp imm1,#subtag_vectorH)
+        __(add arg_z,arg_z,imm0)
+        __(bgt C(misc_ref_common))
+        __(b 0b)
+ 
+/* temp0 = array, arg_x = i, arg_y = j, arg_z = k */
+_spentry(aref3)
+        __(trap_unless_fixnum(arg_x))
+        __(trap_unless_fixnum(arg_y))
+        __(trap_unless_fixnum(arg_z))
+        __(extract_typecode(imm2,temp0))
+	__(mov imm1,#0)
+        __(cmp imm2,#subtag_arrayH)
+        __(ldreq imm1,[temp0,#arrayH.rank])
+        __(cmp imm1,#3<<fixnumshift)
+        __(uuo_error_reg_not_xtype(ne,temp0,xtype_array3d))
+        /* It's a 3-dimensional array.  Check bounds */
+        __(ldr imm2,[temp0,arrayH.dim0+(node_size*2)])
+        __(ldr imm1,[temp0,#arrayH.dim0+node_size])
+        __(ldr imm0,[temp0,#arrayH.dim0])
+        __(cmp arg_z,imm2)
+        __(uuo_error_array_bounds(hs,arg_z,temp0))
+        __(cmp arg_y,imm1)
+        __(uuo_error_array_bounds(hs,arg_y,temp0))
+        __(cmp arg_x,imm0)
+        __(uuo_error_array_bounds(hs,arg_x,temp0))
+        __(unbox_fixnum(imm2,imm2))
+        __(unbox_fixnum(imm1,imm1))
+        __(mul arg_y,imm2,arg_y)
+        __(mul imm1,imm2,imm1)
+        __(mul arg_x,imm1,arg_x)
+        __(add arg_z,arg_z,arg_y)
+        __(add arg_z,arg_z,arg_x)
+        __(mov arg_y,temp0)
+0:      __(ldr arg_x,[arg_y,#arrayH.displacement])
+        __(ldr arg_y,[arg_y,#arrayH.data_vector])
+        __(extract_subtag(imm1,arg_y))
+        __(cmp imm1,#subtag_vectorH)
+        __(add arg_z,arg_x,arg_z)
+        __(bgt C(misc_ref_common))
+        __(b 0b)
+
+
+
+
 dnl /* As for aref2 above, but temp = array, arg_x = i, arg_y = j, arg_z = newval */
 dnl _spentry(aset2)
@@ -5942,5 +3498,5 @@
 dnl         __(cmpri(imm1,subtag_vectorH))
 dnl         __(add arg_y,arg_y,imm0)
-dnl         __(bgt local_label(misc_set_common))
+dnl         __(bgt C(misc_set_common))
 dnl         __(b 0b)
 dnl 1:              
@@ -5978,5 +3534,5 @@
 dnl         __(cmpri(imm1,subtag_vectorH))
 dnl         __(add arg_y,arg_y,temp0)
-dnl         __(bgt local_label(misc_set_common))
+dnl         __(bgt C(misc_set_common))
 dnl         __(b 0b)
 dnl 1:              
@@ -5986,394 +3542,826 @@
 dnl         
 dnl 
-dnl _spentry(nmkunwind)
-dnl         __(mov imm2,#-fixnumone)
-dnl         __(mov imm3,#INTERRUPT_LEVEL_BINDING_INDEX)
-dnl         __(ldr imm4,[rcontext,#tcr.tlb_pointer])
-dnl         __(ldr arg_y,[imm4,#INTERRUPT_LEVEL_BINDING_INDEX])
-dnl         __(ldr imm1,[rcontext,#tcr.db_link])
-dnl         __(vpush1(arg_y))
-dnl         __(vpush1(imm3))
-dnl         __(vpush1(imm1))
-dnl         __(str(imm2,INTERRUPT_LEVEL_BINDING_INDEX(imm4)))
-dnl         __(str(vsp,tcr.db_link(rcontext)))
-dnl 	__(mov arg_z,#unbound_marker)
-dnl 	__(mov imm2,#fixnum_one)
-dnl 	__(mkcatch())
-dnl         __(mov arg_z,arg_y)
-dnl         __(b _SPbind_interrupt_level)
-dnl 
-dnl 
-dnl                                 
-dnl /*  EOF, basically  */
-dnl         .globl _SPsp_end
-dnl         b _SPsp_end
-dnl 	
- local_label(misc_ref_common):   
-         __(adr imm0,(local_label(misc_ref_jmp)))
-         __(ldr pc,[imm0,imm1,lsl #2])        
- 
- local_label(misc_ref_jmp):          
-         /* 00-0f  */
-         .long local_label(misc_ref_invalid) /* 00 even_fixnum  */
- 	
-         .long local_label(misc_ref_invalid) /* 01 cons  */
-         .long local_label(misc_ref_invalid) /* 02 nodeheader  */
-         .long local_label(misc_ref_invalid) /* 03 imm  */
-         .long local_label(misc_ref_invalid) /* 04 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 05 nil  */
-         .long local_label(misc_ref_invalid) /* 06 misc  */
-         .long local_label(misc_ref_u32) /* 07 bignum  */
-         .long local_label(misc_ref_invalid) /* 08 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 09 cons  */
-         .long local_label(misc_ref_node) /* 0a ratio  */
-         .long local_label(misc_ref_invalid) /* 0b imm  */
-         .long local_label(misc_ref_invalid) /* 0c odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 0d nil  */
-         .long local_label(misc_ref_invalid) /* 0e misc  */
-         .long local_label(misc_ref_u32) /* 0f single_float  */
-         /* 10-1f  */
-         .long local_label(misc_ref_invalid) /* 10 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 11 cons  */
-         .long local_label(misc_ref_invalid) /* 12 nodeheader  */
-         .long local_label(misc_ref_invalid) /* 13 imm  */
-         .long local_label(misc_ref_invalid) /* 14 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 15 nil  */
-         .long local_label(misc_ref_invalid) /* 16 misc  */
-         .long local_label(misc_ref_u32) /* 17 double_float  */
-         .long local_label(misc_ref_invalid) /* 18 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 19 cons  */
-         .long local_label(misc_ref_node) /* 1a complex  */
-         .long local_label(misc_ref_invalid) /* 1b imm  */
-         .long local_label(misc_ref_invalid) /* 1c odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 1d nil  */
-         .long local_label(misc_ref_invalid) /* 1e misc  */
-         .long local_label(misc_ref_u32) /* 1f macptr  */
-         /* 20-2f  */
-         .long local_label(misc_ref_invalid) /* 20 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 21 cons  */
-         .long local_label(misc_ref_node) /* 22 catch_frame  */
-         .long local_label(misc_ref_invalid) /* 23 imm  */
-         .long local_label(misc_ref_invalid) /* 24 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 25 nil  */
-         .long local_label(misc_ref_invalid) /* 26 misc  */
-         .long local_label(misc_ref_u32) /* 27 dead_macptr  */
-         .long local_label(misc_ref_invalid) /* 28 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 29 cons  */
-         .long local_label(misc_ref_node) /* 2a function  */
-         .long local_label(misc_ref_invalid) /* 2b imm  */
-         .long local_label(misc_ref_invalid) /* 2c odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 2d nil  */
-         .long local_label(misc_ref_invalid) /* 2e misc  */
-         .long local_label(misc_ref_u32) /* 2f code_vector  */
-         /* 30-3f  */
-         .long local_label(misc_ref_invalid) /* 30 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 31 cons  */
-         .long local_label(misc_ref_node) /* 32 lisp_thread  */
-         .long local_label(misc_ref_invalid) /* 33 imm  */
-         .long local_label(misc_ref_invalid) /* 34 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 35 nil  */
-         .long local_label(misc_ref_invalid) /* 36 misc  */
-         .long local_label(misc_ref_u32) /* 37 creole  */
-         .long local_label(misc_ref_invalid) /* 38 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 39 cons  */
-         .long local_label(misc_ref_node) /* 3a symbol  */
-         .long local_label(misc_ref_invalid) /* 3b imm  */
-         .long local_label(misc_ref_invalid) /* 3c odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 3d nil  */
-         .long local_label(misc_ref_invalid) /* 3e misc  */
-         .long local_label(misc_ref_u32) /* 3f xcode_vector  */
-         /* 40-4f  */
-         .long local_label(misc_ref_invalid) /* 40 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 41 cons  */
-         .long local_label(misc_ref_node) /* 42 lock  */
-         .long local_label(misc_ref_invalid) /* 43 imm  */
-         .long local_label(misc_ref_invalid) /* 44 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 45 nil  */
-         .long local_label(misc_ref_invalid) /* 46 misc  */
-         .long local_label(misc_ref_invalid) /* 47 immheader  */
-         .long local_label(misc_ref_invalid) /* 48 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 49 cons  */
-         .long local_label(misc_ref_node) /* 4a hash_vector  */
-         .long local_label(misc_ref_invalid) /* 4b imm  */
-         .long local_label(misc_ref_invalid) /* 4c odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 4d nil  */
-         .long local_label(misc_ref_invalid) /* 4e misc  */
-         .long local_label(misc_ref_invalid) /* 4f immheader  */
-         /* 50-5f  */
-         .long local_label(misc_ref_invalid) /* 50 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 51 cons  */
-         .long local_label(misc_ref_node) /* 52 pool  */
-         .long local_label(misc_ref_invalid) /* 53 imm  */
-         .long local_label(misc_ref_invalid) /* 54 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 55 nil  */
-         .long local_label(misc_ref_invalid) /* 56 misc  */
-         .long local_label(misc_ref_invalid) /* 57 immheader  */
-         .long local_label(misc_ref_invalid) /* 58 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 59 cons  */
-         .long local_label(misc_ref_node) /* 5a weak  */
-         .long local_label(misc_ref_invalid) /* 5b imm  */
-         .long local_label(misc_ref_invalid) /* 5c odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 5d nil  */
-         .long local_label(misc_ref_invalid) /* 5e misc  */
-         .long local_label(misc_ref_invalid) /* 5f immheader  */
-         /* 60-6f  */
-         .long local_label(misc_ref_invalid) /* 60 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 61 cons  */
-         .long local_label(misc_ref_node) /* 62 package  */
-         .long local_label(misc_ref_invalid) /* 63 imm  */
-         .long local_label(misc_ref_invalid) /* 64 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 65 nil  */
-         .long local_label(misc_ref_invalid) /* 66 misc  */
-         .long local_label(misc_ref_invalid) /* 67 immheader  */
-         .long local_label(misc_ref_invalid) /* 68 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 69 cons  */
-         .long local_label(misc_ref_node) /* 6a slot_vector  */
-         .long local_label(misc_ref_invalid) /* 6b imm  */
-         .long local_label(misc_ref_invalid) /* 6c odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 6d nil  */
-         .long local_label(misc_ref_invalid) /* 6e misc  */
-         .long local_label(misc_ref_invalid) /* 6f immheader  */
-         /* 70-7f  */
-         .long local_label(misc_ref_invalid) /* 70 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 71 cons  */
-         .long local_label(misc_ref_node) /* 72 instance  */
-         .long local_label(misc_ref_invalid) /* 73 imm  */
-         .long local_label(misc_ref_invalid) /* 74 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 75 nil  */
-         .long local_label(misc_ref_invalid) /* 76 misc  */
-         .long local_label(misc_ref_invalid) /* 77 immheader  */
-         .long local_label(misc_ref_invalid) /* 78 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 79 cons  */
-         .long local_label(misc_ref_node) /* 7a struct  */
-         .long local_label(misc_ref_invalid) /* 7b imm  */
-         .long local_label(misc_ref_invalid) /* 7c odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 7d nil  */
-         .long local_label(misc_ref_invalid) /* 7e misc  */
-         .long local_label(misc_ref_invalid) /* 7f immheader  */
-         /* 80-8f  */
-         .long local_label(misc_ref_invalid) /* 80 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 81 cons  */
-         .long local_label(misc_ref_node) /* 82 istruct  */
-         .long local_label(misc_ref_invalid) /* 83 imm  */
-         .long local_label(misc_ref_invalid) /* 84 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 85 nil  */
-         .long local_label(misc_ref_invalid) /* 86 misc  */
-         .long local_label(misc_ref_invalid) /* 87 immheader  */
-         .long local_label(misc_ref_invalid) /* 88 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 89 cons  */
-         .long local_label(misc_ref_node) /* 8a value_cell  */
-         .long local_label(misc_ref_invalid) /* 8b imm  */
-         .long local_label(misc_ref_invalid) /* 8c odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 8d nil  */
-         .long local_label(misc_ref_invalid) /* 8e misc  */
-         .long local_label(misc_ref_invalid) /* 8f immheader  */
-         /* 90-9f  */
-         .long local_label(misc_ref_invalid) /* 90 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 91 cons  */
-         .long local_label(misc_ref_node) /* 92 xfunction  */
-         .long local_label(misc_ref_invalid) /* 93 imm  */
-         .long local_label(misc_ref_invalid) /* 94 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 95 nil  */
-         .long local_label(misc_ref_invalid) /* 96 misc  */
-         .long local_label(misc_ref_invalid) /* 97 immheader  */
-         .long local_label(misc_ref_invalid) /* 98 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* 99 cons  */
-         .long local_label(misc_ref_node) /* 9a arrayN  */
-         .long local_label(misc_ref_invalid) /* 9b imm  */
-         .long local_label(misc_ref_invalid) /* 9c odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* 9d nil  */
-         .long local_label(misc_ref_invalid) /* 9e misc  */
-         .long local_label(misc_ref_invalid) /* 9f immheader  */
-         /* a0-af  */
-         .long local_label(misc_ref_invalid) /* a0 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* a1 cons  */
-         .long local_label(misc_ref_node) /* a2 vectorH  */
-         .long local_label(misc_ref_invalid) /* a3 imm  */
-         .long local_label(misc_ref_invalid) /* a4 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* a5 nil  */
-         .long local_label(misc_ref_invalid) /* a6 misc  */
-         .long local_label(misc_ref_single_float_vector) /* a7 sf_vector  */
-         .long local_label(misc_ref_invalid) /* a8 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* a9 cons  */
-         .long local_label(misc_ref_node) /* aa simple_vector  */
-         .long local_label(misc_ref_invalid) /* ab imm  */
-         .long local_label(misc_ref_invalid) /* ac odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* ad nil  */
-         .long local_label(misc_ref_invalid) /* ae misc  */
-         .long local_label(misc_ref_u32) /* af u32  */
-         /* b0-bf  */
-         .long local_label(misc_ref_invalid) /* b0 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* b1 cons  */
-         .long local_label(misc_ref_invalid) /* b2 nodeheader  */
-         .long local_label(misc_ref_invalid) /* b3 imm  */
-         .long local_label(misc_ref_invalid) /* b4 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* b5 nil  */
-         .long local_label(misc_ref_invalid) /* b6 misc  */
-         .long local_label(misc_ref_s32) /* b7 s32  */
-         .long local_label(misc_ref_invalid) /* b8 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* b9 cons  */
-         .long local_label(misc_ref_invalid) /* ba nodeheader  */
-         .long local_label(misc_ref_invalid) /* bb imm  */
-         .long local_label(misc_ref_invalid) /* bc odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* bd nil  */
-         .long local_label(misc_ref_invalid) /* be misc  */
-         .long local_label(misc_ref_fixnum_vector) /* bf fixnum_vector  */
-         /* c0-cf  */
-         .long local_label(misc_ref_invalid) /* c0 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* c1 cons  */
-         .long local_label(misc_ref_invalid) /* c2 nodeheader  */
-         .long local_label(misc_ref_invalid) /* c3 imm  */
-         .long local_label(misc_ref_invalid) /* c4 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* c5 nil  */
-         .long local_label(misc_ref_invalid) /* c6 misc  */
-         .long local_label(misc_ref_new_string) /* c7 new_string  */
-         .long local_label(misc_ref_invalid) /* c8 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* c9 cons  */
-         .long local_label(misc_ref_invalid) /* ca nodeheader  */
-         .long local_label(misc_ref_invalid) /* cb imm  */
-         .long local_label(misc_ref_invalid) /* cc odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* cd nil  */
-         .long local_label(misc_ref_invalid) /* ce misc  */
-         .long local_label(misc_ref_u8) /* cf u8  */
-         /* d0-df  */
-         .long local_label(misc_ref_invalid) /* d0 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* d1 cons  */
-         .long local_label(misc_ref_invalid) /* d2 nodeheader  */
-         .long local_label(misc_ref_invalid) /* d3 imm  */
-         .long local_label(misc_ref_invalid) /* d4 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* d5 nil  */
-         .long local_label(misc_ref_invalid) /* d6 misc  */
-         .long local_label(misc_ref_s8)      /* d7 s8  */
-         .long local_label(misc_ref_invalid) /* d8 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* d9 cons  */
-         .long local_label(misc_ref_invalid) /* da nodeheader  */
-         .long local_label(misc_ref_invalid) /* db imm  */
-         .long local_label(misc_ref_invalid) /* dc odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* dd nil  */
-         .long local_label(misc_ref_invalid) /* de misc  */
-         .long local_label(misc_ref_old_string) /* df (old)subtag_simple_base_string  */
-         /* e0-ef  */
-         .long local_label(misc_ref_invalid) /* e0 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* e1 cons  */
-         .long local_label(misc_ref_invalid) /* e2 nodeheader  */
-         .long local_label(misc_ref_invalid) /* e3 imm  */
-         .long local_label(misc_ref_invalid) /* e4 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* e5 nil  */
-         .long local_label(misc_ref_invalid) /* e6 misc  */
-         .long local_label(misc_ref_u16) /* e7 u16  */
-         .long local_label(misc_ref_invalid) /* e8 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* e9 cons  */
-         .long local_label(misc_ref_invalid) /* ea nodeheader  */
-         .long local_label(misc_ref_invalid) /* eb imm  */
-         .long local_label(misc_ref_invalid) /* ec odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* ed nil  */
-         .long local_label(misc_ref_invalid) /* ee misc  */
-         .long local_label(misc_ref_s16) /* ef s16  */
-         /* f0-ff  */
-         .long local_label(misc_ref_invalid) /* f0 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* f1 cons  */
-         .long local_label(misc_ref_invalid) /* f2 nodeheader  */
-         .long local_label(misc_ref_invalid) /* f3 imm  */
-         .long local_label(misc_ref_invalid) /* f4 odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* f5 nil  */
-         .long local_label(misc_ref_invalid) /* f6 misc  */
-         .long local_label(misc_ref_double_float_vector) /* f7 df vector  */
-         .long local_label(misc_ref_invalid) /* f8 even_fixnum  */
-         .long local_label(misc_ref_invalid) /* f9 cons  */
-         .long local_label(misc_ref_invalid) /* fa nodeheader  */
-         .long local_label(misc_ref_invalid) /* fb imm  */
-         .long local_label(misc_ref_invalid) /* fc odd_fixnum  */
-         .long local_label(misc_ref_invalid) /* fd nil  */
-         .long local_label(misc_ref_invalid) /* fe misc  */
-         .long local_label(misc_ref_bit_vector) /* ff bit_vector  */
-                
- local_label(misc_ref_node):        
- 	/* A node vector.  */
- 	__(add imm0,arg_z,#misc_data_offset)
- 	__(ldr  arg_z,[arg_y,imm0])
- 	__(bx lr)
- local_label(misc_ref_single_float_vector):        
- 	__(add imm0,arg_z,misc_data_offset)
- 	__(movc16(imm1,single_float_header))
- 	__(ldr imm0,[arg_y,imm0])
- 	__(Misc_Alloc_Fixed(arg_z,imm1,single_float.size))
- 	__(str imm0,[arg_z,#single_float.value])
- 	__(bx lr)
- local_label(misc_ref_new_string):        
- 	__(add imm0,arg_z,#misc_data_offset)
- 	__(ldr imm0,[arg_y,imm0])
-         __(mov arg_z,imm0,lsl #charcode_shift)
-         __(orr arg_z,arg_z,#subtag_character)
-         __(bx lr)
- local_label(misc_ref_s32):        
- 	__(add imm0,arg_z,#misc_data_offset)
- 	__(ldr imm0,[arg_y,imm0])
-         __(b _SPmakes32)
- local_label(misc_ref_fixnum_vector):    
- 	__(add imm0,arg_z,#misc_data_offset)
- 	__(ldr imm0,[arg_y,imm0])
-         __(box_fixnum(arg_z,imm0))
-         __(bx lr)        
- local_label(misc_ref_u32):        
- 	__(add imm0,arg_z,#misc_data_offset)
- 	__(ldr imm0,[arg_y,imm0])
-         __(b _SPmakeu32)
- local_label(misc_ref_double_float_vector):      
-         __(mov imm0,arg_z,lsl #1)
- 	__(add imm0,imm0,#misc_dfloat_offset)
-         __(ldrd imm0,imm1,[arg_y,imm0])
- 	__(movc16(imm2,double_float_header))
- 	__(Misc_Alloc_Fixed(arg_z,imm2,double_float.size))
- 	__(strd imm0,imm1,[arg_z,#double_float.value])
- 	__(bx lr)
- local_label(misc_ref_bit_vector):
-         __(mov imm1,#nbits_in_word-1)
-         __(and imm1,imm1,arg_z,lsr #2)
-         __(mov imm2,#1)
-         __(mov imm2,imm2,lsl imm1)
-         __(mov imm0,arg_z,lsr #5+fixnumshift)
-         __(mov imm0,imm0,lsl #2)
-         __(add imm0,imm0,#misc_data_offset)
-         __(mov arg_z,#0)
-         __(ldr imm0,[arg_y,imm0])
-         __(tst imm0,imm2)
-         __(addne arg_z,arg_z,#fixnumone)
- 	__(bx lr)
- local_label(misc_ref_s8):       
-         __(mov imm0,arg_z,lsr #2)
-         __(add imm0,imm0,#misc_data_offset)
-         __(ldsb imm0,[arg_y,imm0])
-         __(box_fixnum(arg_z,imm0))
-         __(bx lr)
- local_label(misc_ref_u8):       
-         __(mov imm0,arg_z,lsr #2)
-         __(add imm0,imm0,#misc_data_offset)
-         __(ldrb imm0,[arg_y,imm0])
-         __(box_fixnum(arg_z,imm0))
-         __(bx lr)
- local_label(misc_ref_old_string):          
-         __(mov imm0,arg_z,lsr #2)
-         __(add imm0,imm0,#misc_data_offset)
-         __(ldrb imm0,[arg_y,imm0])
- 	__(mov arg_z,imm0,lsl #charcode_shift)
- 	__(orr arg_z,arg_z,#subtag_character)
-         __(bx lr)
- local_label(misc_ref_u16):        
-         __(mov imm0,arg_z,lsr #1)     
-         __(add imm0,imm0,#misc_data_offset)
-         __(ldrh imm0,[arg_y,imm0])
-         __(box_fixnum(arg_z,imm0))
-         __(bx lr)
- local_label(misc_ref_s16):             
-         __(mov imm0,arg_z,lsr #1)     
-         __(add imm0,imm0,#misc_data_offset)
-         __(ldrsh imm0,[arg_y,imm0])
-         __(box_fixnum(arg_z,imm0))
-         __(bx lr)
- local_label(misc_ref_invalid):
-         __(mov arg_x,#XBADVEC)
-         __(set_nargs(3))
-         __(b _SPksignalerr)        
-         
- 	_endfile
- 
+_spentry(nmkunwind)
+        __(mov imm2,#-fixnumone)
+        __(mov imm1,#INTERRUPT_LEVEL_BINDING_INDEX)
+        __(ldr temp0,[rcontext,#tcr.tlb_pointer])
+        __(ldr arg_y,[temp0,#INTERRUPT_LEVEL_BINDING_INDEX])
+        __(ldr imm0,[rcontext,#tcr.db_link])
+        __(vpush1(arg_y))
+        __(vpush1(imm1))
+        __(vpush1(imm0))
+        __(str imm2,[temp0,#INTERRUPT_LEVEL_BINDING_INDEX])
+        __(str vsp,[rcontext,#tcr.db_link])
+        __(mov arg_z,#unbound_marker)
+        __(mov imm2,#fixnum_one)
+        __(mkcatch())
+        __(mov arg_z,arg_y)
+        __(b _SPbind_interrupt_level)
+
+/*  EOF, basically  */
+	
+_exportfn(C(misc_ref_common))
+	__(adr imm0,(local_label(misc_ref_jmp)))
+	__(ldr pc,[imm0,imm1,lsl #2])        
+
+local_label(misc_ref_jmp):          
+	/* 00-0f  */
+	.long local_label(misc_ref_invalid) /* 00 even_fixnum  */
+	
+	.long local_label(misc_ref_invalid) /* 01 cons  */
+	.long local_label(misc_ref_invalid) /* 02 nodeheader  */
+	.long local_label(misc_ref_invalid) /* 03 imm  */
+	.long local_label(misc_ref_invalid) /* 04 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 05 nil  */
+	.long local_label(misc_ref_invalid) /* 06 misc  */
+	.long local_label(misc_ref_u32) /* 07 bignum  */
+	.long local_label(misc_ref_invalid) /* 08 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 09 cons  */
+	.long local_label(misc_ref_node) /* 0a ratio  */
+	.long local_label(misc_ref_invalid) /* 0b imm  */
+	.long local_label(misc_ref_invalid) /* 0c odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 0d nil  */
+	.long local_label(misc_ref_invalid) /* 0e misc  */
+	.long local_label(misc_ref_u32) /* 0f single_float  */
+	/* 10-1f  */
+	.long local_label(misc_ref_invalid) /* 10 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 11 cons  */
+	.long local_label(misc_ref_invalid) /* 12 nodeheader  */
+	.long local_label(misc_ref_invalid) /* 13 imm  */
+	.long local_label(misc_ref_invalid) /* 14 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 15 nil  */
+	.long local_label(misc_ref_invalid) /* 16 misc  */
+	.long local_label(misc_ref_u32) /* 17 double_float  */
+	.long local_label(misc_ref_invalid) /* 18 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 19 cons  */
+	.long local_label(misc_ref_node) /* 1a complex  */
+	.long local_label(misc_ref_invalid) /* 1b imm  */
+	.long local_label(misc_ref_invalid) /* 1c odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 1d nil  */
+	.long local_label(misc_ref_invalid) /* 1e misc  */
+	.long local_label(misc_ref_u32) /* 1f macptr  */
+	/* 20-2f  */
+	.long local_label(misc_ref_invalid) /* 20 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 21 cons  */
+	.long local_label(misc_ref_node) /* 22 catch_frame  */
+	.long local_label(misc_ref_invalid) /* 23 imm  */
+	.long local_label(misc_ref_invalid) /* 24 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 25 nil  */
+	.long local_label(misc_ref_invalid) /* 26 misc  */
+	.long local_label(misc_ref_u32) /* 27 dead_macptr  */
+	.long local_label(misc_ref_invalid) /* 28 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 29 cons  */
+	.long local_label(misc_ref_node) /* 2a function  */
+	.long local_label(misc_ref_invalid) /* 2b imm  */
+	.long local_label(misc_ref_invalid) /* 2c odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 2d nil  */
+	.long local_label(misc_ref_invalid) /* 2e misc  */
+	.long local_label(misc_ref_u32) /* 2f code_vector  */
+	/* 30-3f  */
+	.long local_label(misc_ref_invalid) /* 30 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 31 cons  */
+	.long local_label(misc_ref_node) /* 32 lisp_thread  */
+	.long local_label(misc_ref_invalid) /* 33 imm  */
+	.long local_label(misc_ref_invalid) /* 34 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 35 nil  */
+	.long local_label(misc_ref_invalid) /* 36 misc  */
+	.long local_label(misc_ref_u32) /* 37 creole  */
+	.long local_label(misc_ref_invalid) /* 38 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 39 cons  */
+	.long local_label(misc_ref_node) /* 3a symbol  */
+	.long local_label(misc_ref_invalid) /* 3b imm  */
+	.long local_label(misc_ref_invalid) /* 3c odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 3d nil  */
+	.long local_label(misc_ref_invalid) /* 3e misc  */
+	.long local_label(misc_ref_u32) /* 3f xcode_vector  */
+	/* 40-4f  */
+	.long local_label(misc_ref_invalid) /* 40 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 41 cons  */
+	.long local_label(misc_ref_node) /* 42 lock  */
+	.long local_label(misc_ref_invalid) /* 43 imm  */
+	.long local_label(misc_ref_invalid) /* 44 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 45 nil  */
+	.long local_label(misc_ref_invalid) /* 46 misc  */
+	.long local_label(misc_ref_invalid) /* 47 immheader  */
+	.long local_label(misc_ref_invalid) /* 48 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 49 cons  */
+	.long local_label(misc_ref_node) /* 4a hash_vector  */
+	.long local_label(misc_ref_invalid) /* 4b imm  */
+	.long local_label(misc_ref_invalid) /* 4c odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 4d nil  */
+	.long local_label(misc_ref_invalid) /* 4e misc  */
+	.long local_label(misc_ref_invalid) /* 4f immheader  */
+	/* 50-5f  */
+	.long local_label(misc_ref_invalid) /* 50 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 51 cons  */
+	.long local_label(misc_ref_node) /* 52 pool  */
+	.long local_label(misc_ref_invalid) /* 53 imm  */
+	.long local_label(misc_ref_invalid) /* 54 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 55 nil  */
+	.long local_label(misc_ref_invalid) /* 56 misc  */
+	.long local_label(misc_ref_invalid) /* 57 immheader  */
+	.long local_label(misc_ref_invalid) /* 58 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 59 cons  */
+	.long local_label(misc_ref_node) /* 5a weak  */
+	.long local_label(misc_ref_invalid) /* 5b imm  */
+	.long local_label(misc_ref_invalid) /* 5c odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 5d nil  */
+	.long local_label(misc_ref_invalid) /* 5e misc  */
+	.long local_label(misc_ref_invalid) /* 5f immheader  */
+	/* 60-6f  */
+	.long local_label(misc_ref_invalid) /* 60 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 61 cons  */
+	.long local_label(misc_ref_node) /* 62 package  */
+	.long local_label(misc_ref_invalid) /* 63 imm  */
+	.long local_label(misc_ref_invalid) /* 64 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 65 nil  */
+	.long local_label(misc_ref_invalid) /* 66 misc  */
+	.long local_label(misc_ref_invalid) /* 67 immheader  */
+	.long local_label(misc_ref_invalid) /* 68 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 69 cons  */
+	.long local_label(misc_ref_node) /* 6a slot_vector  */
+	.long local_label(misc_ref_invalid) /* 6b imm  */
+	.long local_label(misc_ref_invalid) /* 6c odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 6d nil  */
+	.long local_label(misc_ref_invalid) /* 6e misc  */
+	.long local_label(misc_ref_invalid) /* 6f immheader  */
+	/* 70-7f  */
+	.long local_label(misc_ref_invalid) /* 70 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 71 cons  */
+	.long local_label(misc_ref_node) /* 72 instance  */
+	.long local_label(misc_ref_invalid) /* 73 imm  */
+	.long local_label(misc_ref_invalid) /* 74 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 75 nil  */
+	.long local_label(misc_ref_invalid) /* 76 misc  */
+	.long local_label(misc_ref_invalid) /* 77 immheader  */
+	.long local_label(misc_ref_invalid) /* 78 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 79 cons  */
+	.long local_label(misc_ref_node) /* 7a struct  */
+	.long local_label(misc_ref_invalid) /* 7b imm  */
+	.long local_label(misc_ref_invalid) /* 7c odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 7d nil  */
+	.long local_label(misc_ref_invalid) /* 7e misc  */
+	.long local_label(misc_ref_invalid) /* 7f immheader  */
+	/* 80-8f  */
+	.long local_label(misc_ref_invalid) /* 80 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 81 cons  */
+	.long local_label(misc_ref_node) /* 82 istruct  */
+	.long local_label(misc_ref_invalid) /* 83 imm  */
+	.long local_label(misc_ref_invalid) /* 84 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 85 nil  */
+	.long local_label(misc_ref_invalid) /* 86 misc  */
+	.long local_label(misc_ref_invalid) /* 87 immheader  */
+	.long local_label(misc_ref_invalid) /* 88 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 89 cons  */
+	.long local_label(misc_ref_node) /* 8a value_cell  */
+	.long local_label(misc_ref_invalid) /* 8b imm  */
+	.long local_label(misc_ref_invalid) /* 8c odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 8d nil  */
+	.long local_label(misc_ref_invalid) /* 8e misc  */
+	.long local_label(misc_ref_invalid) /* 8f immheader  */
+	/* 90-9f  */
+	.long local_label(misc_ref_invalid) /* 90 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 91 cons  */
+	.long local_label(misc_ref_node) /* 92 xfunction  */
+	.long local_label(misc_ref_invalid) /* 93 imm  */
+	.long local_label(misc_ref_invalid) /* 94 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 95 nil  */
+	.long local_label(misc_ref_invalid) /* 96 misc  */
+	.long local_label(misc_ref_invalid) /* 97 immheader  */
+	.long local_label(misc_ref_invalid) /* 98 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* 99 cons  */
+	.long local_label(misc_ref_node) /* 9a arrayN  */
+	.long local_label(misc_ref_invalid) /* 9b imm  */
+	.long local_label(misc_ref_invalid) /* 9c odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* 9d nil  */
+	.long local_label(misc_ref_invalid) /* 9e misc  */
+	.long local_label(misc_ref_invalid) /* 9f immheader  */
+	/* a0-af  */
+	.long local_label(misc_ref_invalid) /* a0 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* a1 cons  */
+	.long local_label(misc_ref_node) /* a2 vectorH  */
+	.long local_label(misc_ref_invalid) /* a3 imm  */
+	.long local_label(misc_ref_invalid) /* a4 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* a5 nil  */
+	.long local_label(misc_ref_invalid) /* a6 misc  */
+	.long local_label(misc_ref_single_float_vector) /* a7 sf_vector  */
+	.long local_label(misc_ref_invalid) /* a8 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* a9 cons  */
+	.long local_label(misc_ref_node) /* aa simple_vector  */
+	.long local_label(misc_ref_invalid) /* ab imm  */
+	.long local_label(misc_ref_invalid) /* ac odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* ad nil  */
+	.long local_label(misc_ref_invalid) /* ae misc  */
+	.long local_label(misc_ref_u32) /* af u32  */
+	/* b0-bf  */
+	.long local_label(misc_ref_invalid) /* b0 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* b1 cons  */
+	.long local_label(misc_ref_invalid) /* b2 nodeheader  */
+	.long local_label(misc_ref_invalid) /* b3 imm  */
+	.long local_label(misc_ref_invalid) /* b4 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* b5 nil  */
+	.long local_label(misc_ref_invalid) /* b6 misc  */
+	.long local_label(misc_ref_s32) /* b7 s32  */
+	.long local_label(misc_ref_invalid) /* b8 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* b9 cons  */
+	.long local_label(misc_ref_invalid) /* ba nodeheader  */
+	.long local_label(misc_ref_invalid) /* bb imm  */
+	.long local_label(misc_ref_invalid) /* bc odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* bd nil  */
+	.long local_label(misc_ref_invalid) /* be misc  */
+	.long local_label(misc_ref_fixnum_vector) /* bf fixnum_vector  */
+	/* c0-cf  */
+	.long local_label(misc_ref_invalid) /* c0 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* c1 cons  */
+	.long local_label(misc_ref_invalid) /* c2 nodeheader  */
+	.long local_label(misc_ref_invalid) /* c3 imm  */
+	.long local_label(misc_ref_invalid) /* c4 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* c5 nil  */
+	.long local_label(misc_ref_invalid) /* c6 misc  */
+	.long local_label(misc_ref_new_string) /* c7 new_string  */
+	.long local_label(misc_ref_invalid) /* c8 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* c9 cons  */
+	.long local_label(misc_ref_invalid) /* ca nodeheader  */
+	.long local_label(misc_ref_invalid) /* cb imm  */
+	.long local_label(misc_ref_invalid) /* cc odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* cd nil  */
+	.long local_label(misc_ref_invalid) /* ce misc  */
+	.long local_label(misc_ref_u8) /* cf u8  */
+	/* d0-df  */
+	.long local_label(misc_ref_invalid) /* d0 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* d1 cons  */
+	.long local_label(misc_ref_invalid) /* d2 nodeheader  */
+	.long local_label(misc_ref_invalid) /* d3 imm  */
+	.long local_label(misc_ref_invalid) /* d4 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* d5 nil  */
+	.long local_label(misc_ref_invalid) /* d6 misc  */
+	.long local_label(misc_ref_s8)      /* d7 s8  */
+	.long local_label(misc_ref_invalid) /* d8 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* d9 cons  */
+	.long local_label(misc_ref_invalid) /* da nodeheader  */
+	.long local_label(misc_ref_invalid) /* db imm  */
+	.long local_label(misc_ref_invalid) /* dc odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* dd nil  */
+	.long local_label(misc_ref_invalid) /* de misc  */
+	.long local_label(misc_ref_old_string) /* df (old)subtag_simple_base_string  */
+	/* e0-ef  */
+	.long local_label(misc_ref_invalid) /* e0 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* e1 cons  */
+	.long local_label(misc_ref_invalid) /* e2 nodeheader  */
+	.long local_label(misc_ref_invalid) /* e3 imm  */
+	.long local_label(misc_ref_invalid) /* e4 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* e5 nil  */
+	.long local_label(misc_ref_invalid) /* e6 misc  */
+	.long local_label(misc_ref_u16) /* e7 u16  */
+	.long local_label(misc_ref_invalid) /* e8 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* e9 cons  */
+	.long local_label(misc_ref_invalid) /* ea nodeheader  */
+	.long local_label(misc_ref_invalid) /* eb imm  */
+	.long local_label(misc_ref_invalid) /* ec odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* ed nil  */
+	.long local_label(misc_ref_invalid) /* ee misc  */
+	.long local_label(misc_ref_s16) /* ef s16  */
+	/* f0-ff  */
+	.long local_label(misc_ref_invalid) /* f0 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* f1 cons  */
+	.long local_label(misc_ref_invalid) /* f2 nodeheader  */
+	.long local_label(misc_ref_invalid) /* f3 imm  */
+	.long local_label(misc_ref_invalid) /* f4 odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* f5 nil  */
+	.long local_label(misc_ref_invalid) /* f6 misc  */
+	.long local_label(misc_ref_double_float_vector) /* f7 df vector  */
+	.long local_label(misc_ref_invalid) /* f8 even_fixnum  */
+	.long local_label(misc_ref_invalid) /* f9 cons  */
+	.long local_label(misc_ref_invalid) /* fa nodeheader  */
+	.long local_label(misc_ref_invalid) /* fb imm  */
+	.long local_label(misc_ref_invalid) /* fc odd_fixnum  */
+	.long local_label(misc_ref_invalid) /* fd nil  */
+	.long local_label(misc_ref_invalid) /* fe misc  */
+	.long local_label(misc_ref_bit_vector) /* ff bit_vector  */
+
+local_label(misc_ref_node):        
+	/* A node vector.  */
+	__(add imm0,arg_z,#misc_data_offset)
+	__(ldr  arg_z,[arg_y,imm0])
+	__(bx lr)
+local_label(misc_ref_single_float_vector):        
+	__(add imm0,arg_z,misc_data_offset)
+	__(movc16(imm1,single_float_header))
+	__(ldr imm0,[arg_y,imm0])
+	__(Misc_Alloc_Fixed(arg_z,imm1,single_float.size))
+	__(str imm0,[arg_z,#single_float.value])
+	__(bx lr)
+local_label(misc_ref_new_string):        
+	__(add imm0,arg_z,#misc_data_offset)
+	__(ldr imm0,[arg_y,imm0])
+	__(mov arg_z,imm0,lsl #charcode_shift)
+	__(orr arg_z,arg_z,#subtag_character)
+	__(bx lr)
+local_label(misc_ref_s32):        
+	__(add imm0,arg_z,#misc_data_offset)
+	__(ldr imm0,[arg_y,imm0])
+	__(b _SPmakes32)
+local_label(misc_ref_fixnum_vector):    
+	__(add imm0,arg_z,#misc_data_offset)
+	__(ldr imm0,[arg_y,imm0])
+	__(box_fixnum(arg_z,imm0))
+	__(bx lr)        
+local_label(misc_ref_u32):        
+	__(add imm0,arg_z,#misc_data_offset)
+	__(ldr imm0,[arg_y,imm0])
+	__(b _SPmakeu32)
+local_label(misc_ref_double_float_vector):      
+	__(mov imm0,arg_z,lsl #1)
+	__(add imm0,imm0,#misc_dfloat_offset)
+	__(ldrd imm0,imm1,[arg_y,imm0])
+	__(movc16(imm2,double_float_header))
+	__(Misc_Alloc_Fixed(arg_z,imm2,double_float.size))
+	__(strd imm0,imm1,[arg_z,#double_float.value])
+	__(bx lr)
+local_label(misc_ref_bit_vector):
+	__(mov imm1,#nbits_in_word-1)
+	__(and imm1,imm1,arg_z,lsr #2)
+	__(mov imm2,#1)
+	__(mov imm2,imm2,lsl imm1)
+	__(mov imm0,arg_z,lsr #5+fixnumshift)
+	__(mov imm0,imm0,lsl #2)
+	__(add imm0,imm0,#misc_data_offset)
+	__(mov arg_z,#0)
+	__(ldr imm0,[arg_y,imm0])
+	__(tst imm0,imm2)
+	__(addne arg_z,arg_z,#fixnumone)
+	__(bx lr)
+local_label(misc_ref_s8):       
+	__(mov imm0,arg_z,lsr #2)
+	__(add imm0,imm0,#misc_data_offset)
+	__(ldsb imm0,[arg_y,imm0])
+	__(box_fixnum(arg_z,imm0))
+	__(bx lr)
+local_label(misc_ref_u8):       
+	__(mov imm0,arg_z,lsr #2)
+	__(add imm0,imm0,#misc_data_offset)
+	__(ldrb imm0,[arg_y,imm0])
+	__(box_fixnum(arg_z,imm0))
+	__(bx lr)
+local_label(misc_ref_old_string):          
+	__(mov imm0,arg_z,lsr #2)
+	__(add imm0,imm0,#misc_data_offset)
+	__(ldrb imm0,[arg_y,imm0])
+	__(mov arg_z,imm0,lsl #charcode_shift)
+	__(orr arg_z,arg_z,#subtag_character)
+	__(bx lr)
+local_label(misc_ref_u16):        
+	__(mov imm0,arg_z,lsr #1)     
+	__(add imm0,imm0,#misc_data_offset)
+	__(ldrh imm0,[arg_y,imm0])
+	__(box_fixnum(arg_z,imm0))
+	__(bx lr)
+local_label(misc_ref_s16):             
+	__(mov imm0,arg_z,lsr #1)     
+	__(add imm0,imm0,#misc_data_offset)
+	__(ldrsh imm0,[arg_y,imm0])
+	__(box_fixnum(arg_z,imm0))
+	__(bx lr)
+local_label(misc_ref_invalid):
+	__(mov arg_x,#XBADVEC)
+	__(set_nargs(3))
+	__(b _SPksignalerr)        
+_endfn
+        
+_exportfn(C(misc_set_common))
+	__(adr imm0,local_label(misc_set_jmp))
+	__(ldr pc,[imm0,imm1,lsl #2])
+local_label(misc_set_jmp):             
+	/* 00-0f  */
+	.long local_label(misc_set_invalid) /* 00 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 01 cons  */
+	.long local_label(misc_set_invalid) /* 02 nodeheader  */
+	.long local_label(misc_set_invalid) /* 03 imm  */
+	.long local_label(misc_set_invalid) /* 04 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 05 nil  */
+	.long local_label(misc_set_invalid) /* 06 misc  */
+	.long local_label(misc_set_u32) /* 07 bignum  */
+	.long local_label(misc_set_invalid) /* 08 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 09 cons  */
+	.long _SPgvset /* 0a ratio  */
+	.long local_label(misc_set_invalid) /* 0b imm  */
+	.long local_label(misc_set_invalid) /* 0c odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 0d nil  */
+	.long local_label(misc_set_invalid) /* 0e misc  */
+	.long local_label(misc_set_u32) /* 0f single_float  */
+	/* 10-1f  */
+	.long local_label(misc_set_invalid) /* 10 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 11 cons  */
+	.long local_label(misc_set_invalid) /* 12 nodeheader  */
+	.long local_label(misc_set_invalid) /* 13 imm  */
+	.long local_label(misc_set_invalid) /* 14 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 15 nil  */
+	.long local_label(misc_set_invalid) /* 16 misc  */
+	.long local_label(misc_set_u32) /* 17 double_float  */
+	.long local_label(misc_set_invalid) /* 18 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 19 cons  */
+	.long _SPgvset /* 1a complex  */
+	.long local_label(misc_set_invalid) /* 1b imm  */
+	.long local_label(misc_set_invalid) /* 1c odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 1d nil  */
+	.long local_label(misc_set_invalid) /* 1e misc  */
+	.long local_label(misc_set_u32) /* 1f macptr  */
+	/* 20-2f  */
+	.long local_label(misc_set_invalid) /* 20 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 21 cons  */
+	.long _SPgvset /* 22 catch_frame  */
+	.long local_label(misc_set_invalid) /* 23 imm  */
+	.long local_label(misc_set_invalid) /* 24 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 25 nil  */
+	.long local_label(misc_set_invalid) /* 26 misc  */
+	.long local_label(misc_set_u32) /* 27 dead_macptr  */
+	.long local_label(misc_set_invalid) /* 28 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 29 cons  */
+	.long _SPgvset /* 2a function  */
+	.long local_label(misc_set_invalid) /* 2b imm  */
+	.long local_label(misc_set_invalid) /* 2c odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 2d nil  */
+	.long local_label(misc_set_invalid) /* 2e misc  */
+	.long local_label(misc_set_u32) /* 2f code_vector  */
+	/* 30-3f  */
+	.long local_label(misc_set_invalid) /* 30 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 31 cons  */
+	.long _SPgvset /* 32 lisp_thread  */
+	.long local_label(misc_set_invalid) /* 33 imm  */
+	.long local_label(misc_set_invalid) /* 34 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 35 nil  */
+	.long local_label(misc_set_invalid) /* 36 misc  */
+	.long local_label(misc_set_u32) /* 37 creole  */
+	.long local_label(misc_set_invalid) /* 38 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 39 cons  */
+	.long _SPgvset /* 3a symbol  */
+	.long local_label(misc_set_invalid) /* 3b imm  */
+	.long local_label(misc_set_invalid) /* 3c odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 3d nil  */
+	.long local_label(misc_set_invalid) /* 3e misc  */
+	.long local_label(misc_set_u32) /* 3f xcode_vector  */
+	/* 40-4f  */
+	.long local_label(misc_set_invalid) /* 40 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 41 cons  */
+	.long _SPgvset /* 42 lock  */
+	.long local_label(misc_set_invalid) /* 43 imm  */
+	.long local_label(misc_set_invalid) /* 44 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 45 nil  */
+	.long local_label(misc_set_invalid) /* 46 misc  */
+	.long local_label(misc_set_invalid) /* 47 immheader  */
+	.long local_label(misc_set_invalid) /* 48 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 49 cons  */
+	.long _SPgvset /* 4a hash_vector  */
+	.long local_label(misc_set_invalid) /* 4b imm  */
+	.long local_label(misc_set_invalid) /* 4c odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 4d nil  */
+	.long local_label(misc_set_invalid) /* 4e misc  */
+	.long local_label(misc_set_invalid) /* 4f immheader  */
+	/* 50-5f  */
+	.long local_label(misc_set_invalid) /* 50 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 51 cons  */
+	.long _SPgvset /* 52 pool  */
+	.long local_label(misc_set_invalid) /* 53 imm  */
+	.long local_label(misc_set_invalid) /* 54 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 55 nil  */
+	.long local_label(misc_set_invalid) /* 56 misc  */
+	.long local_label(misc_set_invalid) /* 57 immheader  */
+	.long local_label(misc_set_invalid) /* 58 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 59 cons  */
+	.long _SPgvset /* 5a weak  */
+	.long local_label(misc_set_invalid) /* 5b imm  */
+	.long local_label(misc_set_invalid) /* 5c odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 5d nil  */
+	.long local_label(misc_set_invalid) /* 5e misc  */
+	.long local_label(misc_set_invalid) /* 5f immheader  */
+	/* 60-6f  */
+	.long local_label(misc_set_invalid) /* 60 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 61 cons  */
+	.long _SPgvset /* 62 package  */
+	.long local_label(misc_set_invalid) /* 63 imm  */
+	.long local_label(misc_set_invalid) /* 64 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 65 nil  */
+	.long local_label(misc_set_invalid) /* 66 misc  */
+	.long local_label(misc_set_invalid) /* 67 immheader  */
+	.long local_label(misc_set_invalid) /* 68 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 69 cons  */
+	.long _SPgvset /* 6a slot_vector  */
+	.long local_label(misc_set_invalid) /* 6b imm  */
+	.long local_label(misc_set_invalid) /* 6c odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 6d nil  */
+	.long local_label(misc_set_invalid) /* 6e misc  */
+	.long local_label(misc_set_invalid) /* 6f immheader  */
+	/* 70-7f  */
+	.long local_label(misc_set_invalid) /* 70 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 71 cons  */
+	.long _SPgvset /* 72 instance  */
+	.long local_label(misc_set_invalid) /* 73 imm  */
+	.long local_label(misc_set_invalid) /* 74 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 75 nil  */
+	.long local_label(misc_set_invalid) /* 76 misc  */
+	.long local_label(misc_set_invalid) /* 77 immheader  */
+	.long local_label(misc_set_invalid) /* 78 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 79 cons  */
+	.long _SPgvset /* 7a struct  */
+	.long local_label(misc_set_invalid) /* 7b imm  */
+	.long local_label(misc_set_invalid) /* 7c odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 7d nil  */
+	.long local_label(misc_set_invalid) /* 7e misc  */
+	.long local_label(misc_set_invalid) /* 7f immheader  */
+	/* 80-8f  */
+	.long local_label(misc_set_invalid) /* 80 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 81 cons  */
+	.long _SPgvset /* 82 istruct  */
+	.long local_label(misc_set_invalid) /* 83 imm  */
+	.long local_label(misc_set_invalid) /* 84 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 85 nil  */
+	.long local_label(misc_set_invalid) /* 86 misc  */
+	.long local_label(misc_set_invalid) /* 87 immheader  */
+	.long local_label(misc_set_invalid) /* 88 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 89 cons  */
+	.long _SPgvset /* 8a value_cell  */
+	.long local_label(misc_set_invalid) /* 8b imm  */
+	.long local_label(misc_set_invalid) /* 8c odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 8d nil  */
+	.long local_label(misc_set_invalid) /* 8e misc  */
+	.long local_label(misc_set_invalid) /* 8f immheader  */
+	/* 90-9f  */
+	.long local_label(misc_set_invalid) /* 90 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 91 cons  */
+	.long _SPgvset /* 92 xfunction  */
+	.long local_label(misc_set_invalid) /* 93 imm  */
+	.long local_label(misc_set_invalid) /* 94 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 95 nil  */
+	.long local_label(misc_set_invalid) /* 96 misc  */
+	.long local_label(misc_set_invalid) /* 97 immheader  */
+	.long local_label(misc_set_invalid) /* 98 even_fixnum  */
+	.long local_label(misc_set_invalid) /* 99 cons  */
+	.long _SPgvset /* 9a arrayH  */
+	.long local_label(misc_set_invalid) /* 9b imm  */
+	.long local_label(misc_set_invalid) /* 9c odd_fixnum  */
+	.long local_label(misc_set_invalid) /* 9d nil  */
+	.long local_label(misc_set_invalid) /* 9e misc  */
+	.long local_label(misc_set_invalid) /* 9f immheader  */
+	/* a0-af  */
+	.long local_label(misc_set_invalid) /* a0 even_fixnum  */
+	.long local_label(misc_set_invalid) /* a1 cons  */
+	.long _SPgvset /* a2 vectorH  */
+	.long local_label(misc_set_invalid) /* a3 imm  */
+	.long local_label(misc_set_invalid) /* a4 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* a5 nil  */
+	.long local_label(misc_set_invalid) /* a6 misc  */
+	.long local_label(misc_set_single_float_vector) /* a7 sf vector  */
+	.long local_label(misc_set_invalid) /* a8 even_fixnum  */
+	.long local_label(misc_set_invalid) /* a9 cons  */
+	.long _SPgvset /* aa vectorH  */
+	.long local_label(misc_set_invalid) /* ab imm  */
+	.long local_label(misc_set_invalid) /* ac odd_fixnum  */
+	.long local_label(misc_set_invalid) /* ad nil  */
+	.long local_label(misc_set_invalid) /* ae misc  */
+	.long local_label(misc_set_u32) /* af u32  */
+	/* b0-bf  */
+	.long local_label(misc_set_invalid) /* b0 even_fixnum  */
+	.long local_label(misc_set_invalid) /* b1 cons  */
+	.long local_label(misc_set_invalid) /* b2 node  */
+	.long local_label(misc_set_invalid) /* b3 imm  */
+	.long local_label(misc_set_invalid) /* b4 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* b5 nil  */
+	.long local_label(misc_set_invalid) /* b6 misc  */
+	.long local_label(misc_set_s32) /* b7 s32  */
+	.long local_label(misc_set_invalid) /* b8 even_fixnum  */
+	.long local_label(misc_set_invalid) /* b9 cons  */
+	.long local_label(misc_set_invalid) /* ba nodeheader  */
+	.long local_label(misc_set_invalid) /* bb imm  */
+	.long local_label(misc_set_invalid) /* bc odd_fixnum  */
+	.long local_label(misc_set_invalid) /* bd nil  */
+	.long local_label(misc_set_invalid) /* be misc  */
+	.long local_label(misc_set_fixnum_vector) /* bf fixnum_vector  */
+	/* c0-cf  */
+	.long local_label(misc_set_invalid) /* c0 even_fixnum  */
+	.long local_label(misc_set_invalid) /* c1 cons  */
+	.long local_label(misc_set_invalid) /* c2 nodeheader  */
+	.long local_label(misc_set_invalid) /* c3 imm  */
+	.long local_label(misc_set_invalid) /* c4 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* c5 nil  */
+	.long local_label(misc_set_invalid) /* c6 misc  */
+	.long local_label(misc_set_new_string) /* c7 new_string  */
+	.long local_label(misc_set_invalid) /* c8 even_fixnum  */
+	.long local_label(misc_set_invalid) /* c9 cons  */
+	.long local_label(misc_set_invalid) /* ca nodeheader  */
+	.long local_label(misc_set_invalid) /* cb imm  */
+	.long local_label(misc_set_invalid) /* cc odd_fixnum  */
+	.long local_label(misc_set_invalid) /* cd nil  */
+	.long local_label(misc_set_invalid) /* ce misc  */
+	.long local_label(misc_set_u8) /* cf u8  */
+	/* d0-df  */
+	.long local_label(misc_set_invalid) /* d0 even_fixnum  */
+	.long local_label(misc_set_invalid) /* d1 cons  */
+	.long local_label(misc_set_invalid) /* d2 nodeheader  */
+	.long local_label(misc_set_invalid) /* d3 imm  */
+	.long local_label(misc_set_invalid) /* d4 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* d5 nil  */
+	.long local_label(misc_set_invalid) /* d6 misc  */
+	.long local_label(misc_set_s8) /* d7 s8  */
+	.long local_label(misc_set_invalid) /* d8 even_fixnum  */
+	.long local_label(misc_set_invalid) /* d9 cons  */
+	.long local_label(misc_set_invalid) /* da nodeheader  */
+	.long local_label(misc_set_invalid) /* db imm  */
+	.long local_label(misc_set_invalid) /* dc odd_fixnum  */
+	.long local_label(misc_set_invalid) /* dd nil  */
+	.long local_label(misc_set_invalid) /* de misc  */
+	.long local_label(misc_set_old_string) /* df (old) simple_base_string  */
+	/* e0-ef  */
+	.long local_label(misc_set_invalid) /* e0 even_fixnum  */
+	.long local_label(misc_set_invalid) /* e1 cons  */
+	.long local_label(misc_set_invalid) /* e2 nodeheader  */
+	.long local_label(misc_set_invalid) /* e3 imm  */
+	.long local_label(misc_set_invalid) /* e4 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* e5 nil  */
+	.long local_label(misc_set_invalid) /* e6 misc  */
+	.long local_label(misc_set_u16) /* e7 u16  */
+	.long local_label(misc_set_invalid) /* e8 even_fixnum  */
+	.long local_label(misc_set_invalid) /* e9 cons  */
+	.long local_label(misc_set_invalid) /* ea nodeheader  */
+	.long local_label(misc_set_invalid) /* eb imm  */
+	.long local_label(misc_set_invalid) /* ec odd_fixnum  */
+	.long local_label(misc_set_invalid) /* ed nil  */
+	.long local_label(misc_set_invalid) /* ee misc  */
+	.long local_label(misc_set_s16) /* ef s16  */
+	/* f0-ff  */
+	.long local_label(misc_set_invalid) /* f0 even_fixnum  */
+	.long local_label(misc_set_invalid) /* f1 cons  */
+	.long local_label(misc_set_invalid) /* f2 nodeheader  */
+	.long local_label(misc_set_invalid) /* f3 imm  */
+	.long local_label(misc_set_invalid) /* f4 odd_fixnum  */
+	.long local_label(misc_set_invalid) /* f5 nil  */
+	.long local_label(misc_set_invalid) /* f6 misc  */
+	.long local_label(misc_set_double_float_vector) /* f7 df vector  */
+	.long local_label(misc_set_invalid) /* f8 even_fixnum  */
+	.long local_label(misc_set_invalid) /* f9 cons  */
+	.long local_label(misc_set_invalid) /* fa nodeheader  */
+	.long local_label(misc_set_invalid) /* fb imm  */
+	.long local_label(misc_set_invalid) /* fc odd_fixnum  */
+	.long local_label(misc_set_invalid) /* fd nil  */
+	.long local_label(misc_set_invalid) /* fe misc  */
+	.long local_label(misc_set_bit_vector) /* ff bit_vector  */
+
+local_label(misc_set_u32):        
+	/* Either a non-negative fixnum, a positive one-digit bignum, */
+	/* or a two-digit bignum whose sign-digit is 0 is ok.  */
+	__(add imm0,arg_y,#misc_data_offset)
+	__(test_fixnum(arg_z))
+	__(bne local_label(set_not_fixnum_u32))
+	__(tst arg_z,#0x80000000)
+	__(bne local_label(set_bad))
+	__(unbox_fixnum(imm1,arg_z))
+local_label(set_set32):         
+	__(str imm1,[arg_x,imm0])
+	__(bx lr)
+local_label(set_not_fixnum_u32):
+	__(extract_lisptag(imm1,arg_z))
+	__(cmp imm1,#tag_misc)
+	__(bne local_label(set_bad))
+	__(movc16(imm2,one_digit_bignum_header))
+	__(getvheader(imm1,arg_z))
+	__(cmp imm1,imm2)
+	__(bne local_label(set_not_1_digit_u32))
+	__(ldr imm1,[arg_z,#misc_data_offset])
+	__(cmp imm1,#0)
+	__(bge local_label(set_set32))
+	__(b local_label(set_bad))
+local_label(set_not_1_digit_u32):
+	__(movc16(imm2,two_digit_bignum_header))
+	__(cmp imm1,imm2)
+	__(bne local_label(set_bad))
+	__(vrefr(imm2,arg_z,1))
+	__(vrefr(imm1,arg_z,0))
+	__(cmp imm2,#0)
+	__(beq local_label(set_set32))
+local_label(set_bad):
+	/* arg_z does not match the array-element-type of arg_x.  */
+	__(mov arg_y,arg_z)
+	__(mov arg_z,arg_x)
+	__(mov arg_x,#XNOTELT)
+	__(set_nargs(3))
+	__(b _SPksignalerr)
+local_label(misc_set_fixnum_vector):   
+	__(add imm0,arg_z,#misc_data_offset)
+	__(test_fixnum(arg_z))
+	__(bne local_label(set_bad))
+	__(unbox_fixnum(imm1,arg_z))
+	__(str imm1,[arg_x,imm0])
+	__(bx lr)
+local_label(misc_set_new_string):   
+	__(add imm0,arg_z,#misc_data_offset)
+	__(extract_lowbyte(imm2,arg_z))
+	__(cmp imm2,#subtag_character)
+	__(bne local_label(set_bad))
+	__(unbox_character(imm1,arg_z))
+	__(str imm1,[arg_x,imm0])
+	__(bx lr)
+local_label(misc_set_s32):
+	__(add imm0,arg_z,#misc_data_offset)
+	__(test_fixnum(arg_z))
+	__(moveq imm1,arg_z,asr #fixnumshift)
+	__(beq local_label(set_set32))
+	__(extract_lisptag(imm2,arg_z))
+	__(cmp imm2,#tag_misc)
+	__(bne local_label(set_bad))
+	__(movc16(imm1,one_digit_bignum_header))
+	__(getvheader(imm2,arg_z))
+	__(cmp imm2,imm1)
+	__(vrefr(imm1,arg_z,0))
+	__(beq local_label(set_set32))
+	__(b local_label(set_bad))
+local_label(misc_set_single_float_vector):
+	__(add imm0,arg_z,#misc_data_offset)
+	__(extract_typecode(imm2,arg_z))
+	__(cmp imm2,#subtag_single_float)
+	__(bne local_label(set_bad))
+	__(ldr imm1,[arg_z,#single_float.value])
+	__(str imm1,[arg_x,imm0])
+	__(bx lr)
+local_label(misc_set_u8):               
+	__(mov imm0,arg_y,lsr #2)
+	__(add imm0,imm0,#misc_data_offset)
+	__(mov imm2,#~(0xff<<fixnumshift))
+	__(tst arg_z,imm2)
+	__(bne local_label(set_bad))
+	__(unbox_fixnum(imm1,arg_z))
+	__(strb imm1,[arg_x,imm0])
+	__(bx lr)
+local_label(misc_set_old_string):
+	__(mov imm0,arg_y,lsr #2)
+	__(add imm0,imm0,#misc_data_offset)
+	__(extract_lowbyte(imm2,arg_z))
+	__(cmp imm2,#subtag_character)
+	__(unbox_character(imm1,arg_z))
+	__(bne local_label(set_bad))
+	__(strb imm1,[arg_x,imm0])
+	__(bx lr)
+local_label(misc_set_s8):
+	__(mov imm0,arg_y,lsr #2)
+	__(add imm0,imm0,#misc_data_offset)
+	__(test_fixnum(arg_z))
+	__(bne local_label(set_bad))
+	__(unbox_fixnum(imm1,arg_z))
+	__(mov imm2,imm1,lsl #32-8)
+	__(cmp imm1,imm2,asr #32-8)
+	__(bne local_label(set_bad))
+	__(strb imm1,[arg_x,imm0])
+	__(bx lr)
+local_label(misc_set_u16):         
+	__(mov imm0,arg_y,lsr #1)
+	__(add imm0,imm0,#misc_data_offset)
+	__(test_fixnum(arg_z))
+	__(bne local_label(set_bad))
+	__(unbox_fixnum(imm1,arg_z))
+	__(mov imm2,imm1,lsl #16)
+	__(cmp imm1,imm2,lsr #16)
+	__(bne local_label(set_bad))
+	__(strh imm1,[arg_x,imm0])
+	__(bx lr)
+local_label(misc_set_s16):
+	__(mov imm0,arg_y,lsr #1)
+	__(add imm0,imm0,#misc_data_offset)
+	__(test_fixnum(arg_z))
+	__(bne local_label(set_bad))
+	__(unbox_fixnum(imm1,arg_z))
+	__(mov imm2,imm1,lsl #16)
+	__(cmp imm1,imm2,asr #16)
+	__(bne local_label(set_bad))
+	__(strh imm1,[arg_x,imm0])
+	__(bx lr)
+local_label(misc_set_bit_vector):
+	__(bics imm0,arg_z,#fixnumone)
+	__(bne local_label(set_bad))
+	__(mov imm2,#31)
+	__(and imm2,imm1,arg_y,lsr #2)
+	__(mov imm1,#1)
+	__(mov imm1,imm1,lsl imm2)
+	__(mov imm0,arg_y,lsr #fixnumshift+5)
+	__(mov imm0,imm0,lsl #2)
+	__(add imm0,imm0,#misc_data_offset)
+	__(cmp arg_z,#0)
+	__(ldr imm2,[arg_x,imm0])
+	__(orrne imm2,imm2,imm1)
+	__(biceq imm2,imm2,imm1)
+	__(str imm2,[arg_x,imm0])
+	__(bx lr)
+
+local_label(misc_set_double_float_vector):
+	__(extract_subtag(imm2,arg_z))
+	__(cmp imm2,#subtag_double_float)
+	__(bne local_label(misc_set_bad))
+	__(ldrd imm0,imm1,[arg_z,#misc_dfloat_offset])
+	__(mov imm2,arg_y,lsl #1)
+	__(add imm2,imm2,#misc_dfloat_offset)
+	__(strd imm0,imm1,[arg_z,imm2])
+	__(bx lr)
+local_label(misc_set_invalid):  
+	__(mov temp0,#XSETBADVEC)        
+	__(set_nargs(4))
+	__(vpush1(temp0))
+	__(b _SPksignalerr)                
+
+	_endfile
Index: /branches/arm/lisp-kernel/arm-uuo.s
===================================================================
--- /branches/arm/lisp-kernel/arm-uuo.s	(revision 13678)
+++ /branches/arm/lisp-kernel/arm-uuo.s	(revision 13679)
@@ -53,4 +53,6 @@
 define(`unaryUUO',`UUO($1,uuo_format_unary,($2|($3<<4)))')
 
+define(`binaryUUO',`UUO($1,uuo_format_binary,($2|($3<<4)|($4<<8)))')
+
 /* Simple type error (reg not lisptag), cond = $1, reg = $2, lisptag = $3 */
 define(`uuo_error_reg_not_lisptag',`UUO($1,uuo_format_error_lisptag,$2|($3<<4))')
@@ -71,7 +73,8 @@
 define(`uuo_gc_trap',`nullaryUUO($1,2)') /* probably unconditional */
 define(`uuo_debug_trap',`nullaryUUO($1,3)')
-define(`uuo_tlb_too_small',`nullaryUUO($1,4)')
-define(`uuo_interrupt_now',`nullaryUUO($1,5)')
-define(`uuo_suspend_now',`nullaryUUO($1,6)')
+
+
+define(`uuo_interrupt_now',`nullaryUUO($1,4)')
+define(`uuo_suspend_now',`nullaryUUO($1,5)')
 
 /* Unary UUOs */
@@ -79,4 +82,5 @@
 define(`uuo_cerror_unbound',`unaryUUO($1,$2,1)')
 define(`uuo_error_not_callable',`unaryUUO($1,$2,2)')
+define(`uuo_tlb_too_small',`unaryUUO($1,$2,4)')
 
 /* Binary UUOs */
Index: /branches/arm/lisp-kernel/ppc-macros.s
===================================================================
--- /branches/arm/lisp-kernel/ppc-macros.s	(revision 13678)
+++ /branches/arm/lisp-kernel/ppc-macros.s	(revision 13679)
@@ -602,5 +602,5 @@
 	__(sub allocptr,allocptr,$3)
         __(alloc_trap())
-	__(str($2,misc_header_offset(allocptr)))
+	__(str($2,[allocptr,#misc_header_offset]))
 	__(mr $1,allocptr)
 	__(clear_alloc_tag())
