diff --git a/compiler/ppc/insts.lisp b/compiler/ppc/insts.lisp
index debed0b34dfb1fe44e3f00eb565e01dab0455e1c..d4287cea556a346c6de5cb5477920ec360f3f21c 100644
--- a/compiler/ppc/insts.lisp
+++ b/compiler/ppc/insts.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/insts.lisp,v 1.13 2005/09/06 00:39:00 rtoy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/insts.lisp,v 1.14 2005/09/29 02:45:05 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -572,6 +572,11 @@ about function addresses and register values.")
       (rt :field ,(ppc-byte 6 10) :type 'reg)
       (sh :field ,(ppc-byte 16 20) :sign-extend nil)
       (si :field ,(ppc-byte 16 31) :sign-extend t)
+      ;; FIXME?  The spr field is really a split field of length 10.
+      ;; An spr value is encoded as 2 5-bit fields, swapped.  Should
+      ;; we make this explicit and define spr-hi and spr-lo to make it
+      ;; easier?  Or maybe make the register field smarter so we swap
+      ;; the 5 bits automatically?  Or something else entirely?
       (spr :field ,(ppc-byte 11 20) :type 'spr)
       (to :field ,(ppc-byte 6 10) :type 'to-field)
       (u :field ,(ppc-byte 16 19) :sign-extend nil)
@@ -1693,6 +1698,9 @@ about function addresses and register values.")
 (define-x-instruction lhzux 31 311 :other-dependencies ((writes ra)))
 (define-2-x-5-instructions xor 31 316)
 
+;; FIXME: Note that the spr field is split, so we need to convert the
+;; spr value into two 5-bit pieces and swap them to get the right
+;; instruction encoding, and the write printer.
 (define-instruction mfmq (segment rt)
   (:printer xfx ((op 31) (xo 339) (spr 0)) '(:name :tab rt))
   (:delay 1)
@@ -1700,19 +1708,19 @@ about function addresses and register values.")
   (:emitter (emit-xfx-form-inst segment 31 (reg-tn-encoding rt) (ash 0 5) 339 0)))
 
 (define-instruction mfxer (segment rt)
-  (:printer xfx ((op 31) (xo 339) (spr 1)) '(:name :tab rt))
+  (:printer xfx ((op 31) (xo 339) (spr (ash 1 5))) '(:name :tab rt))
   (:delay 1)
   (:dependencies (reads :xer) (writes rt))
   (:emitter (emit-xfx-form-inst segment 31 (reg-tn-encoding rt) (ash 1 5) 339 0)))
 
 (define-instruction mflr (segment rt)
-  (:printer xfx ((op 31) (xo 339) (spr 8)) '(:name :tab rt))
+  (:printer xfx ((op 31) (xo 339) (spr (ash 8 5))) '(:name :tab rt))
   (:delay 1)
   (:dependencies (reads :lr) (writes rt))
   (:emitter (emit-xfx-form-inst segment 31 (reg-tn-encoding rt) (ash 8 5) 339 0)))
 
 (define-instruction mfctr (segment rt)
-  (:printer xfx ((op 31) (xo 339) (spr 9)) '(:name :tab rt))
+  (:printer xfx ((op 31) (xo 339) (spr (ash 9 5))) '(:name :tab rt))
   (:delay 1)
   (:dependencies (reads rt) (reads :ctr))
   (:emitter (emit-xfx-form-inst segment 31 (reg-tn-encoding rt) (ash 9 5) 339 0)))