X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fmips%2Fparms.lisp;h=64c2eb8ed398e62f5ef47b38639802283358a812;hb=942e45e3bb73fd55786e4a0ab4590324063c0c89;hp=6095c53341aae7457d956849f6af9e79b10ab2c0;hpb=ee94b07644c1130e1dcadcfd2bd581bf641fa58e;p=sbcl.git diff --git a/src/compiler/mips/parms.lisp b/src/compiler/mips/parms.lisp index 6095c53..64c2eb8 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,26 +63,51 @@ (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. -;;; Where to put the different spaces. -;;; -(def!constant read-only-space-start #x01000000) -(def!constant read-only-space-end #x05000000) - -(def!constant static-space-start #x06000000) -(def!constant static-space-end #x08000000) - -(def!constant dynamic-space-start #x08000000) -(def!constant dynamic-space-end #x0c000000) - -(def!constant dynamic-0-space-start #x08000000) -(def!constant dynamic-0-space-end #x0c000000) -(def!constant dynamic-1-space-start #x0c000000) -(def!constant dynamic-1-space-end #x10000000) +#!+irix +(progn + ;; Where to put the different spaces. + ;; Old definitions, might be still relevant for an IRIX port. + ;; + (def!constant read-only-space-start #x01000000) + (def!constant read-only-space-end #x05000000) + + (def!constant static-space-start #x06000000) + (def!constant static-space-end #x08000000) + + (def!constant dynamic-0-space-start #x08000000) + (def!constant dynamic-0-space-end #x0c000000) + (def!constant dynamic-1-space-start #x0c000000) + (def!constant dynamic-1-space-end #x10000000)) + +#!+linux +(progn + ;; Where to put the address spaces on Linux. + ;; + ;; C runtime executable segment starts at 0x00400000 + (def!constant read-only-space-start #x01000000) + (def!constant read-only-space-end #x08000000) + + (def!constant static-space-start #x08000000) + (def!constant static-space-end #x10000000) + ;; 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-1-space-start #x50000000) + (def!constant dynamic-1-space-end #x70000000) + + (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. @@ -87,7 +123,11 @@ cerror breakpoint fun-end-breakpoint - after-breakpoint) + after-breakpoint + unused + pseudo-atomic + object-not-list + object-not-instance) (defenum (:prefix trace-table-) normal @@ -113,6 +153,8 @@ 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 @@ -128,29 +170,30 @@ *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*)) (defparameter *static-funs* - '(sb!kernel:two-arg-+ - sb!kernel:two-arg-- - sb!kernel:two-arg-* - sb!kernel:two-arg-/ - sb!kernel:two-arg-< - sb!kernel:two-arg-> + '(sb!kernel:two-arg-+ + sb!kernel:two-arg-- + sb!kernel:two-arg-* + sb!kernel:two-arg-/ + sb!kernel:two-arg-< + sb!kernel:two-arg-> sb!kernel:two-arg-= - sb!kernel:two-arg-<= - sb!kernel:two-arg->= - sb!kernel:two-arg-/= - eql + sb!kernel:two-arg-<= + sb!kernel:two-arg->= + sb!kernel:two-arg-/= + eql sb!kernel:%negate - sb!kernel:two-arg-and - sb!kernel:two-arg-ior + sb!kernel:two-arg-and + sb!kernel:two-arg-ior sb!kernel:two-arg-xor - length - sb!kernel:two-arg-gcd + length + sb!kernel:two-arg-gcd sb!kernel:two-arg-lcm))