Skip to content
Snippets Groups Projects
Commit 5a413e60 authored by Raymond Toy's avatar Raymond Toy
Browse files

Support stacks at fixed addresses as before.

If CONTROL_STACK_START or BINDING_STACK_START are defined, we take
that as a hint that the system wants the stacks mapped at fixed
addresses.  Otherwise, the stacks are mapped wherever there's room.
parent 33cb8d6c
No related branches found
No related tags found
No related merge requests found
...@@ -115,16 +115,29 @@ void ...@@ -115,16 +115,29 @@ void
validate_stacks() validate_stacks()
{ {
/* Control Stack */ /* Control Stack */
#ifdef CONTROL_STACK_START
/* Map the control stack at a fixed location */
control_stack = (lispobj *) CONTROL_STACK_START;
#if (defined(i386) || defined(__x86_64))
control_stack_end = (lispobj *) (CONTROL_STACK_START + control_stack_size);
#endif
ensure_space(control_stack, control_stack_size);
#else
/* Map the conrol stack wherever we have space */ /* Map the conrol stack wherever we have space */
control_stack = (lispobj*) os_validate(NULL, control_stack_size); control_stack = (lispobj*) os_validate(NULL, control_stack_size);
#if (defined(i386) || defined(__x86_64)) #if (defined(i386) || defined(__x86_64))
control_stack_end = (void*)control_stack + control_stack_size; control_stack_end = (void*)control_stack + control_stack_size;
#endif
#endif #endif
/* Binding Stack */ /* Binding Stack */
#ifdef BINDING_STACK_START
binding_stack = (lispobj *) BINDING_STACK_START;
ensure_space(binding_stack, binding_stack_size);
#else
binding_stack = (lispobj*) os_validate(NULL, binding_stack_size); binding_stack = (lispobj*) os_validate(NULL, binding_stack_size);
#endif
#ifdef sparc #ifdef sparc
make_stack_holes(); make_stack_holes();
#endif #endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment