URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Details |
Compare with Previous |
View Log
Line No. |
Rev |
Author |
Line |
1 |
30 |
unneback |
#
|
2 |
|
|
# $Id: README,v 1.2 2001-09-27 12:01:42 chris Exp $
|
3 |
|
|
#
|
4 |
|
|
|
5 |
|
|
This directory contains a stack bounds checker. It provides two
|
6 |
|
|
primary features:
|
7 |
|
|
|
8 |
|
|
+ check for stack overflow at each context switch
|
9 |
|
|
+ provides an educated guess at each task's stack usage
|
10 |
|
|
|
11 |
|
|
The stack overflow check at context switch works by looking for
|
12 |
|
|
a 16 byte pattern at the logical end of the stack to be corrupted.
|
13 |
|
|
The "guesser" assumes that the entire stack was prefilled with a known
|
14 |
|
|
pattern and assumes that the pattern is still in place if the memory
|
15 |
|
|
has not been used as a stack.
|
16 |
|
|
|
17 |
|
|
Both of these can be fooled by pushing large holes onto the stack
|
18 |
|
|
and not writing to them... or (much more unlikely) writing the
|
19 |
|
|
magic patterns into memory.
|
20 |
|
|
|
21 |
|
|
This code has not been extensively tested. It is provided as a tool
|
22 |
|
|
for RTEMS users to catch the most common mistake in multitasking
|
23 |
|
|
systems ... too little stack space. Suggestions and comments are appreciated.
|
24 |
|
|
|
25 |
|
|
NOTES:
|
26 |
|
|
|
27 |
|
|
1. Stack usage information is questionable on CPUs which push
|
28 |
|
|
large holes on stack.
|
29 |
|
|
|
30 |
|
|
2. The stack checker has a tendency to generate a fault when
|
31 |
|
|
trying to print the helpful diagnostic message. If it comes
|
32 |
|
|
out, congratulations. If not, then the variable Stack_check_Blown_task
|
33 |
|
|
contains a pointer to the TCB of the offending task. This
|
34 |
|
|
is usually enough to go on.
|
35 |
|
|
|
36 |
|
|
FUTURE:
|
37 |
|
|
|
38 |
|
|
1. Determine how/if gcc will generate stack probe calls and support that.
|
39 |
|
|
|
40 |
|
|
2. Get accurate stack usage numbers on i960.. it pushes very large
|
41 |
|
|
holes on the stack.
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.