diff --git a/bootfiles/18d/boot2.lisp b/bootfiles/18d/boot2.lisp
new file mode 100644
index 0000000000000000000000000000000000000000..ab600246b2deaeef9e45d023a85847124d2cfa0d
--- /dev/null
+++ b/bootfiles/18d/boot2.lisp
@@ -0,0 +1,16 @@
+#+sparc
+(in-package "SPARC")
+#+sparc
+(defmacro allocation (result-tn size lowtag)
+  ;; We assume we're in a pseudo-atomic so the pseudo-atomic bit is
+  ;; set.  If the lowtag also has a 1 bit in the same position, we're all
+  ;; set.  Otherwise, we need to zap out the lowtag from alloc-tn, and
+  ;; then or in the lowtag.
+  `(if (logbitp (1- lowtag-bits) ,lowtag)
+     (progn
+       (inst or ,result-tn alloc-tn ,lowtag)
+       (inst add alloc-tn ,size))
+     (progn
+       (inst andn ,result-tn alloc-tn lowtag-mask)
+       (inst or ,result-tn ,lowtag)
+       (inst add alloc-tn ,size))))