X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fmips%2Fparms.lisp;h=0575d5bd4c6f8f0096b41e7acaf4f366e4dc8e31;hb=bc1783335d78be988465e4fc7cf9c5fdb88a3fa4;hp=2db49109e20a7bb1254816c0a509f668ba30c8ee;hpb=c5759c03562c984984e368c2ab85a21dceb719ab;p=sbcl.git diff --git a/src/compiler/mips/parms.lisp b/src/compiler/mips/parms.lisp index 2db4910..0575d5b 100644 --- a/src/compiler/mips/parms.lisp +++ b/src/compiler/mips/parms.lisp @@ -1,16 +1,15 @@ (in-package "SB!VM") -(def!constant n-word-bits 32 - "Number of bits per word where a word holds one lisp descriptor.") +;;; number of bits per word where a word holds one lisp descriptor +(def!constant n-word-bits 32) -(def!constant n-byte-bits 8 - "Number of bits per byte where a byte is the smallest addressable object.") +;;; the natural width of a machine word (as seen in e.g. register width, +;;; address space) +(def!constant n-machine-word-bits 32) -(def!constant word-shift (1- (integer-length (/ n-word-bits n-byte-bits))) - "Number of bits to shift between word addresses and byte addresses.") - -(def!constant n-word-bytes (/ n-word-bits n-byte-bits) - "Number of bytes in a word.") +;;; number of bits per byte where a byte is the smallest addressable +;;; object +(def!constant n-byte-bits 8) (def!constant float-sign-shift 31) @@ -53,26 +52,46 @@ (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 0) ; No fast mode on PMAX. ;;;; 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) +#!+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) + ;; C stack grows downward from 0x80000000 + ) -(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) ;;;; Other non-type constants. @@ -114,6 +133,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 @@ -129,7 +150,7 @@ *binding-stack-start* *control-stack-start* *control-stack-end* - + ;; Interrupt Handling *free-interrupt-context-index* sb!unix::*interrupts-enabled* @@ -137,21 +158,21 @@ )) (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))