* dcrt0.cc (getstack): Try harder to modify memory.
(alloc_stack): Alloc page prior to stack top, too.
This commit is contained in:
parent
032295a988
commit
e7f6a31bb0
|
@ -1,3 +1,8 @@
|
|||
2005-12-01 Christopher Faylor <cgf@timesys.com>
|
||||
|
||||
* dcrt0.cc (getstack): Try harder to modify memory.
|
||||
(alloc_stack): Alloc page prior to stack top, too.
|
||||
|
||||
2005-12-01 Christopher Faylor <cgf@timesys.com>
|
||||
|
||||
* devices.h (_major): Revert previous ill-advised change.
|
||||
|
|
|
@ -504,9 +504,10 @@ alloc_stack_hard_way (child_info_fork *ci, volatile char *b)
|
|||
|
||||
void *getstack (void *) __attribute__ ((noinline));
|
||||
volatile char *
|
||||
getstack (volatile char *p)
|
||||
getstack (volatile char * volatile p)
|
||||
{
|
||||
*p |= 0;
|
||||
*p ^= 1;
|
||||
*p ^= 1;
|
||||
return p - 4096;
|
||||
}
|
||||
|
||||
|
@ -515,13 +516,14 @@ getstack (volatile char *p)
|
|||
static void
|
||||
alloc_stack (child_info_fork *ci)
|
||||
{
|
||||
volatile char *esp;
|
||||
volatile char * volatile esp;
|
||||
__asm__ volatile ("movl %%esp,%0": "=r" (esp));
|
||||
if (_tlsbase != ci->stackbottom)
|
||||
alloc_stack_hard_way (ci, esp);
|
||||
else
|
||||
{
|
||||
while (_tlstop > ci->stacktop)
|
||||
char *stacktop = (char *) ci->stacktop - 4096;
|
||||
while (_tlstop >= stacktop)
|
||||
esp = getstack (esp);
|
||||
ci->stacksize = 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue