0.9.16.28:
[sbcl.git] / src / compiler / x86 / parms.lisp
index 23fc57b..816db31 100644 (file)
 ;;; addressable object
 (def!constant n-byte-bits 8)
 
+;;; The size in bytes of the GENCGC pages. Should be a multiple of the
+;;; architecture code size.
+(def!constant gencgc-page-size 4096)
+
 (def!constant float-sign-shift 31)
 
 ;;; comment from CMU CL:
 ;;;     set the top-down mmap allocation option in the kernel (not yet
 ;;;     the default), all bets are totally off!
 
+#!+win32
+(progn
+
+  (def!constant read-only-space-start #x02000000)
+  (def!constant read-only-space-end   #x047ff000)
+
+  (def!constant static-space-start    #x05000000)
+  (def!constant static-space-end      #x07fff000)
+
+  (def!constant dynamic-space-start   #x09000000)
+  (def!constant dynamic-space-end     #x29000000)
+
+  (def!constant linkage-table-space-start #x30000000)
+  (def!constant linkage-table-space-end   #x40000000))
+
 #!+linux
 (progn
   (def!constant read-only-space-start     #x01000000)
   (def!constant linkage-table-space-start #xA0000000)
   (def!constant linkage-table-space-end   #xA1000000))
 
+
+#!+darwin
+(progn
+  (def!constant read-only-space-start #x01000000)
+  (def!constant read-only-space-end   #x04ff8000)
+
+  (def!constant static-space-start    #x08000000)
+  (def!constant static-space-end      #x097fff00)
+
+  (def!constant dynamic-space-start #x10000000)
+  (def!constant dynamic-space-end   #x6ffff000)
+
+  (def!constant linkage-table-space-start #x0a000000)
+  (def!constant linkage-table-space-end   #x0b000000))
+
 ;;; Size of one linkage-table entry in bytes.
 (def!constant linkage-table-entry-size 8)
 
   cerror
   breakpoint
   fun-end-breakpoint
-  single-step-breakpoint)
+  single-step-breakpoint
+  #!+win32 context-restore) ;; HACK: The Win32 exception handling system does wrong things with this.
 ;;; FIXME: It'd be nice to replace all the DEFENUMs with something like
 ;;;   (WITH-DEF-ENUM (:START 8)
 ;;;     (DEF-ENUM HALT-TRAP)
 (defvar *allocation-pointer*)
 (defvar *binding-stack-pointer*)
 
-;;; FIXME: !COLD-INIT probably doesn't need
-;;; to be in the static symbols table any more.
 (defparameter *static-symbols*
-  '(t
-
-    ;; The C startup code must fill these in.
-    *posix-argv*
-
-    ;; functions that the C code needs to call.  When adding to this list,
-    ;; also add a `frob' form in genesis.lisp finish-symbols.
-    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!kernel::memory-fault-error
-    sb!di::handle-breakpoint
-    fdefinition-object
-
-    ;; free pointers
-    ;;
-    ;; Note that these are FIXNUM word counts, not (as one might
-    ;; expect) byte counts or SAPs. The reason seems to be that by
-    ;; representing them this way, we can avoid consing bignums.
-    ;; -- WHN 2000-10-02
-    *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*
-    *alien-stack*
-
-    ;; interrupt handling
-    *pseudo-atomic-atomic*
-    *pseudo-atomic-interrupted*
-    sb!unix::*interrupts-enabled*
-    sb!unix::*interrupt-pending*
-    *free-interrupt-context-index*
-    *gc-inhibit*
-    #!+sb-thread *stop-for-gc-pending*
-    *gc-pending*
-
-    *free-tls-index*
-
-    *allocation-pointer*
-    *binding-stack-pointer*
-    *binding-stack-start*
-    *control-stack-start*
-    *control-stack-end*
-
-    ;; the floating point constants
-    *fp-constant-0d0*
-    *fp-constant-1d0*
-    *fp-constant-0f0*
-    *fp-constant-1f0*
-    ;; The following are all long-floats.
-    *fp-constant-0l0*
-    *fp-constant-1l0*
-    *fp-constant-pi*
-    *fp-constant-l2t*
-    *fp-constant-l2e*
-    *fp-constant-lg2*
-    *fp-constant-ln2*
-
-    ;; The ..SLOT-UNBOUND.. symbol is static in order to optimise the
-    ;; common slot unbound check.
-    ;;
-    ;; FIXME: In SBCL, the CLOS code has become sufficiently tightly
-    ;; integrated into the system that it'd probably make sense to use
-    ;; the ordinary unbound marker for this.
-    sb!pcl::..slot-unbound..
-    ))
+  (append
+   *common-static-symbols*
+   *c-callable-static-symbols*
+   '(*alien-stack*
+
+     ;; interrupt handling
+     *pseudo-atomic-bits*
+     #!+sb-thread *stop-for-gc-pending*
+     #!+sb-thread *free-tls-index*
+     #!+sb-thread *tls-index-lock*
+
+     *allocation-pointer*
+     *binding-stack-pointer*
+
+     ;; the floating point constants
+     *fp-constant-0d0*
+     *fp-constant-1d0*
+     *fp-constant-0f0*
+     *fp-constant-1f0*
+     ;; The following are all long-floats.
+     *fp-constant-0l0*
+     *fp-constant-1l0*
+     *fp-constant-pi*
+     *fp-constant-l2t*
+     *fp-constant-l2e*
+     *fp-constant-lg2*
+     *fp-constant-ln2*
+
+     ;; For GC-AND-SAVE
+     *restart-lisp-function*
+
+     ;; Needed for callbacks to work across saving cores. see
+     ;; ALIEN-CALLBACK-ASSEMBLER-WRAPPER in c-call.lisp for gory
+     ;; details.
+     sb!alien::*enter-alien-callback*
+
+     ;; see comments in ../x86-64/parms.lisp
+     sb!pcl::..slot-unbound..
+     )))
 
 (defparameter *static-funs*
   '(length