X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fmips%2Fparms.lisp;h=4756543393dc13f1f2256090d3aaae07b11701dc;hb=3da4a7fbba3015abf8572946dc4481dc2980b943;hp=4989172f1461306c8b964abb0fcd7b61d8587f41;hpb=b7a8f5313a83dea33ce60551a4fb987b415c2cc6;p=sbcl.git diff --git a/src/compiler/mips/parms.lisp b/src/compiler/mips/parms.lisp index 4989172..4756543 100644 --- a/src/compiler/mips/parms.lisp +++ b/src/compiler/mips/parms.lisp @@ -1,20 +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) ;;; 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 n-byte-bits 8 - "Number of bits per byte where a byte is the smallest addressable object.") - -(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) @@ -57,26 +52,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 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) + + (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 + ) -(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. @@ -92,7 +112,11 @@ cerror breakpoint fun-end-breakpoint - after-breakpoint) + after-breakpoint + unused + pseudo-atomic + object-not-list + object-not-instance) (defenum (:prefix trace-table-) normal @@ -118,6 +142,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 @@ -133,29 +159,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))