From 51bb640d69544b394c90cf830a50cd891fdc7590 Mon Sep 17 00:00:00 2001
From: toy <toy>
Date: Fri, 10 May 2002 14:50:32 +0000
Subject: [PATCH] Initial revision for bootstrapping the Sparc allocation
 changes.

---
 bootfiles/18d/boot2.lisp | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
 create mode 100644 bootfiles/18d/boot2.lisp

diff --git a/bootfiles/18d/boot2.lisp b/bootfiles/18d/boot2.lisp
new file mode 100644
index 000000000..ab600246b
--- /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))))
-- 
GitLab