0.7.7.9:
[sbcl.git] / src / compiler / generic / genesis.lisp
index 6ef6c4a..4bff913 100644 (file)
                  (logior (ash bits 3)
                          (logand (bvref-32 gspace-bytes gspace-byte-offset)
                                  #xffe0e002)))))))
-      (:ppc
+      (:mips
+       (ecase kind
+        (:jump
+         (assert (zerop (ash value -28)))
+         (setf (ldb (byte 26 0) 
+                    (bvref-32 gspace-bytes gspace-byte-offset))
+               (ash value -2)))
+        (:lui
+         (setf (bvref-32 gspace-bytes gspace-byte-offset)
+               (logior (mask-field (byte 16 16) (bvref-32 gspace-bytes gspace-byte-offset))
+                       (+ (ash value -16)
+                          (if (logbitp 15 value) 1 0)))))
+        (:addi
+         (setf (bvref-32 gspace-bytes gspace-byte-offset)
+               (logior (mask-field (byte 16 16) (bvref-32 gspace-bytes gspace-byte-offset))
+                       (ldb (byte 16 0) value))))))
+       (:ppc
        (ecase kind
          (:ba
           (setf (bvref-32 gspace-bytes gspace-byte-offset)