-;;;
+;;;; miscellaneous VM definition noise for the PPC
+
+;;;; This software is part of the SBCL system. See the README file for
+;;;; more information.
+;;;;
+;;;; This software is derived from the CMU CL system, which was
+;;;; written at Carnegie Mellon University and released into the
+;;;; public domain. The software is in the public domain and is
+;;;; provided with absolutely no warranty. See the COPYING and CREDITS
+;;;; files for more information.
+
(in-package "SB!VM")
+;;; NUMBER-STACK-DISPLACEMENT
+;;;
+;;; The number of bytes reserved above the number stack pointer. These
+;;; slots are required by architecture, mostly (?) to make C backtrace
+;;; work. This must be a power of 2 - see BYTES-REQUIRED-FOR-NUMBER-STACK.
+;;;
+(def!constant number-stack-displacement
+ (* #!-darwin 2
+ #!+darwin 8
+ n-word-bytes))
\f
;;;; Define the registers
(defreg nl6 9)
(defreg fdefn 10) ; was nl7
(defreg nargs 11)
- (defreg nfp 12)
- (defreg cfunc 13)
+ ;; FIXME: some kind of comment here would be nice.
+ ;;
+ ;; FIXME II: this also reveals the need to autogenerate lispregs.h
+ #!+darwin (defreg cfunc 12)
+ #!-darwin (defreg nfp 12)
+ #!+darwin (defreg nfp 13)
+ #!-darwin (defreg cfunc 13)
(defreg bsp 14)
(defreg cfp 15)
(defreg csp 16)
((null classes)
(nreverse forms))))
-;; XXX this is most likely wrong. Check with Eric Marsden next time you
-;; see him
-(def!constant sb!vm::kludge-nondeterministic-catch-block-size 7)
+(def!constant kludge-nondeterministic-catch-block-size 7)
(define-storage-classes
;; The non-descriptor stacks.
(signed-stack non-descriptor-stack) ; (signed-byte 32)
(unsigned-stack non-descriptor-stack) ; (unsigned-byte 32)
- (base-char-stack non-descriptor-stack) ; non-descriptor characters.
+ (character-stack non-descriptor-stack) ; non-descriptor characters.
(sap-stack non-descriptor-stack) ; System area pointers.
(single-stack non-descriptor-stack) ; single-floats
(double-stack non-descriptor-stack
:alternate-scs (control-stack))
;; Non-Descriptor characters
- (base-char-reg registers
+ (character-reg registers
:locations #.non-descriptor-regs
:constant-scs (immediate)
:save-p t
- :alternate-scs (base-char-stack))
+ :alternate-scs (character-stack))
;; Non-Descriptor SAP's (arbitrary pointers into address space)
(sap-reg registers
;; A catch or unwind block.
(catch-block control-stack
- :element-size sb!vm::kludge-nondeterministic-catch-block-size))
-
-
+ :element-size kludge-nondeterministic-catch-block-size))
\f
;;;; Make some random tns for important registers.
(sc-number-or-lose 'zero))
(null
(sc-number-or-lose 'null))
- ((or fixnum system-area-pointer character)
+ ((or (integer #.sb!xc:most-negative-fixnum #.sb!xc:most-positive-fixnum)
+ system-area-pointer character)
(sc-number-or-lose 'immediate))
(symbol
(if (static-symbol-p value)
(non-descriptor-stack (format nil "NS~D" offset))
(constant (format nil "Const~D" offset))
(immediate-constant "Immed"))))
-\f
-;;; The loader uses this to convert alien names to the form they
-;;; occur in the symbol table. This is ELF, so do nothing.
-(defun extern-alien-name (name)
- (declare (type simple-base-string name))
- name)