summaryrefslogtreecommitdiff
path: root/firmware/thread.c
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-07-01 21:14:20 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-07-01 21:14:20 +0000
commit9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1 (patch)
tree68d28dab1392dac1ac3307b0d86373173dc046dd /firmware/thread.c
parent6bb93847a400f0bc032bcb4a8d51b7199eee29e5 (diff)
downloadrockbox-9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1.zip
rockbox-9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1.tar.gz
rockbox-9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1.tar.bz2
rockbox-9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1.tar.xz
Now fills the stack with 0xdeadbeef
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1290 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/thread.c')
-rw-r--r--firmware/thread.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/firmware/thread.c b/firmware/thread.c
index fc8370b..d1cd8da 100644
--- a/firmware/thread.c
+++ b/firmware/thread.c
@@ -99,10 +99,22 @@ void switch_thread(void)
*/
int create_thread(void* function, void* stack, int stack_size)
{
+ unsigned int i;
+ unsigned int stacklen;
+ unsigned int *stackptr;
+
if (num_threads >= MAXTHREADS)
return -1;
else
{
+ /* Munge the stack to make it easy to spot stack overflows */
+ stacklen = stack_size / 4;
+ stackptr = stack;
+ for(i = 0;i < stacklen;i++)
+ {
+ stackptr[i] = 0xdeadbeef;
+ }
+
struct regs* regs = &thread_contexts[num_threads++];
store_context(regs);
/* Subtract 4 to leave room for the PR push in ldctx()