projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.7.13.32
[sbcl.git]
/
src
/
runtime
/
validate.c
diff --git
a/src/runtime/validate.c
b/src/runtime/validate.c
index
9d712db
..
be8ad27
100644
(file)
--- a/
src/runtime/validate.c
+++ b/
src/runtime/validate.c
@@
-66,7
+66,7
@@
validate(void)
ensure_space( (lispobj *)READ_ONLY_SPACE_START, READ_ONLY_SPACE_SIZE);
ensure_space( (lispobj *)STATIC_SPACE_START , STATIC_SPACE_SIZE);
ensure_space( (lispobj *)READ_ONLY_SPACE_START, READ_ONLY_SPACE_SIZE);
ensure_space( (lispobj *)STATIC_SPACE_START , STATIC_SPACE_SIZE);
-#ifdef GENCGC
+#ifdef LISP_FEATURE_GENCGC
ensure_space( (lispobj *)DYNAMIC_SPACE_START , DYNAMIC_SPACE_SIZE);
#else
ensure_space( (lispobj *)DYNAMIC_0_SPACE_START , DYNAMIC_SPACE_SIZE);
ensure_space( (lispobj *)DYNAMIC_SPACE_START , DYNAMIC_SPACE_SIZE);
#else
ensure_space( (lispobj *)DYNAMIC_0_SPACE_START , DYNAMIC_SPACE_SIZE);
@@
-74,15
+74,23
@@
validate(void)
#endif
ensure_space( (lispobj *)CONTROL_STACK_START , CONTROL_STACK_SIZE);
ensure_space( (lispobj *)BINDING_STACK_START , BINDING_STACK_SIZE);
#endif
ensure_space( (lispobj *)CONTROL_STACK_START , CONTROL_STACK_SIZE);
ensure_space( (lispobj *)BINDING_STACK_START , BINDING_STACK_SIZE);
+#ifdef LISP_FEATURE_C_STACK_IS_CONTROL_STACK
+ ensure_space( (lispobj *) ALTERNATE_SIGNAL_STACK_START, SIGSTKSZ);
+#endif
#ifdef HOLES
make_holes();
#endif
#ifdef HOLES
make_holes();
#endif
-#ifndef GENCGC
- current_dynamic_space = DYNAMIC_0_SPACE_START;
-#endif
-
+
#ifdef PRINTNOISE
printf(" done.\n");
#endif
#ifdef PRINTNOISE
printf(" done.\n");
#endif
+ protect_control_stack_guard_page(1);
}
}
+
+void protect_control_stack_guard_page(int protect_p) {
+ os_protect(CONTROL_STACK_GUARD_PAGE,
+ os_vm_page_size,protect_p ?
+ (OS_VM_PROT_READ|OS_VM_PROT_EXECUTE) : OS_VM_PROT_ALL);
+}
+