X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fmips%2Fparms.lisp;h=c133443987a2054134a82eebee83b1c5fd045307;hb=a41e7cf8667de9ae078a8e318e8c5c045cdee87d;hp=5e0af59892c5d2ce16d66ce902ccb962b7198555;hpb=32d12f1e914e0a2e16f099e2267101c12192b2a7;p=sbcl.git diff --git a/src/compiler/mips/parms.lisp b/src/compiler/mips/parms.lisp index 5e0af59..c133443 100644 --- a/src/compiler/mips/parms.lisp +++ b/src/compiler/mips/parms.lisp @@ -1,4 +1,16 @@ +;;;; 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") + +;;;; Machine Architecture parameters: +(eval-when (:compile-toplevel :load-toplevel :execute) ;;; number of bits per word where a word holds one lisp descriptor (def!constant n-word-bits 32) @@ -11,7 +23,6 @@ ;;; object (def!constant n-byte-bits 8) - (def!constant float-sign-shift 31) (def!constant single-float-bias 126) @@ -52,9 +63,8 @@ (defconstant-eqx float-traps-byte (byte 5 7) #'equalp) (defconstant-eqx float-exceptions-byte (byte 5 12) #'equalp) (defconstant-eqx float-condition-bit (ash 1 23) #'equalp) -(def!constant float-fast-bit 0) ; No fast mode on PMAX. +(def!constant float-fast-bit (ash 1 24)) - ;;;; Description of the target address space. #!+irix @@ -79,19 +89,25 @@ ;; ;; C runtime executable segment starts at 0x00400000 (def!constant read-only-space-start #x01000000) - (def!constant read-only-space-end #x08000000) + (def!constant read-only-space-end #x07ff0000) (def!constant static-space-start #x08000000) - (def!constant static-space-end #x10000000) + (def!constant static-space-end #x0fff0000) ;; C runtime read/write segment starts at 0x10000000, heap and DSOs ;; start at 0x2a000000 (def!constant dynamic-0-space-start #x30000000) - (def!constant dynamic-0-space-end #x50000000) + (def!constant dynamic-0-space-end #x4fff0000) (def!constant dynamic-1-space-start #x50000000) - (def!constant dynamic-1-space-end #x70000000) + (def!constant dynamic-1-space-end #x6fff0000) + + (def!constant linkage-table-space-start #x70000000) + (def!constant linkage-table-space-end #x71000000) + (def!constant linkage-table-entry-size 16) + ;; C stack grows downward from 0x80000000 ) +); eval-when ;;;; Other non-type constants. @@ -111,7 +127,12 @@ unused pseudo-atomic object-not-list - object-not-instance) + object-not-instance + ;; Stepper actually not implemented on Mips, but these constants + ;; are still needed to avoid undefined variable warnings during sbcl + ;; build. + single-step-around + single-step-before) (defenum (:prefix trace-table-) normal @@ -128,39 +149,11 @@ ;;; The fdefn objects for the static functions are loaded into static ;;; space directly after the static symbols. That way, the raw-addr ;;; can be loaded directly out of them by indirecting relative to NIL. -;;; (defparameter *static-symbols* - '(t - - *posix-argv* - - sb!impl::sub-gc - sb!kernel::internal-error - sb!kernel::control-stack-exhausted-error - sb!kernel::undefined-alien-variable-error - sb!kernel::undefined-alien-function-error - sb!di::handle-breakpoint - sb!impl::fdefinition-object - - ;; Free Pointers - *read-only-space-free-pointer* - *static-space-free-pointer* - *initial-dynamic-space-free-pointer* - - ;; Things needed for non-local-exit. - *current-catch-block* - *current-unwind-protect-block* - - *binding-stack-start* - *control-stack-start* - *control-stack-end* - - ;; Interrupt Handling - *free-interrupt-context-index* - sb!unix::*interrupts-enabled* - sb!unix::*interrupt-pending* - *gc-inhibit* - *gc-pending*)) + (append + *common-static-symbols* + *c-callable-static-symbols* + '())) (defparameter *static-funs* '(sb!kernel:two-arg-+