Index: /trunk/ccl/lisp-kernel/macros.s
===================================================================
--- /trunk/ccl/lisp-kernel/macros.s	(revision 527)
+++ /trunk/ccl/lisp-kernel/macros.s	(revision 528)
@@ -89,4 +89,7 @@
         tdllt $@
         ])
+	define([trlle],[
+	tdlle $@
+	])
         define([treqi],[
         tdeqi $@
@@ -205,4 +208,15 @@
 	ldr($1,misc_header_offset($2))])
 
+
+ifdef([PPC64],[
+define([extract_typecode],[
+	new_macro_labels()
+	extract_fulltag($1,$2)
+	cmpdi cr0,$1,fulltag_misc
+	extract_lisptag($1,$1)
+	bne cr0,macro_label(not_misc)
+	extract_subtag($1,$2)
+macro_label(not_misc):
+])],[	
 define([extract_typecode],[
 	new_macro_labels()
@@ -211,5 +225,6 @@
 	bne cr0,macro_label(not_misc)
 	extract_subtag($1,$2)
-macro_label(not_misc):])
+macro_label(not_misc):
+])])
 
 define([box_fixnum],[
@@ -403,4 +418,19 @@
 ])
 
+ifdef([PPC64],[
+define([trap_unless_list],[
+	new_macro_labels()
+	cmpdi ifelse($3,$3,cr0),$1,nil_value
+	extract_fulltag($2,$1)
+	beq ifelse($3,$3,cr0),macro_label(is_list)
+	twnei $2,fulltag_cons
+macro_label(is_list):	
+
+])],[	
+define([trap_unless_list],[
+	trap_unless_lisptag_equal($1,tag_list,$2)
+])
+])
+
 define([trap_unless_fulltag_equal],[
 	extract_fulltag($3,$1)
@@ -442,6 +472,6 @@
 define([do_funcall],[
 	new_macro_labels()
-	extract_lisptag(imm0,temp0)
-	cmpri(imm0,tag_misc)
+	extract_fulltag(imm0,temp0)
+	cmpri(imm0,fulltag_misc)
 	mr nfn,temp0
 	bne- macro_label(bad)
