diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-07-01 21:14:20 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-07-01 21:14:20 +0000 |
commit | 9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1 (patch) | |
tree | 68d28dab1392dac1ac3307b0d86373173dc046dd | |
parent | 6bb93847a400f0bc032bcb4a8d51b7199eee29e5 (diff) | |
download | rockbox-9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1.tar.gz rockbox-9f690b8cf81a8eaafa43c30bf7e076b3be85f4c1.zip |
Now fills the stack with 0xdeadbeef
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1290 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/thread.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/firmware/thread.c b/firmware/thread.c index fc8370b42d..d1cd8da6ef 100644 --- a/firmware/thread.c +++ b/firmware/thread.c | |||
@@ -99,10 +99,22 @@ void switch_thread(void) | |||
99 | */ | 99 | */ |
100 | int create_thread(void* function, void* stack, int stack_size) | 100 | int create_thread(void* function, void* stack, int stack_size) |
101 | { | 101 | { |
102 | unsigned int i; | ||
103 | unsigned int stacklen; | ||
104 | unsigned int *stackptr; | ||
105 | |||
102 | if (num_threads >= MAXTHREADS) | 106 | if (num_threads >= MAXTHREADS) |
103 | return -1; | 107 | return -1; |
104 | else | 108 | else |
105 | { | 109 | { |
110 | /* Munge the stack to make it easy to spot stack overflows */ | ||
111 | stacklen = stack_size / 4; | ||
112 | stackptr = stack; | ||
113 | for(i = 0;i < stacklen;i++) | ||
114 | { | ||
115 | stackptr[i] = 0xdeadbeef; | ||
116 | } | ||
117 | |||
106 | struct regs* regs = &thread_contexts[num_threads++]; | 118 | struct regs* regs = &thread_contexts[num_threads++]; |
107 | store_context(regs); | 119 | store_context(regs); |
108 | /* Subtract 4 to leave room for the PR push in ldctx() | 120 | /* Subtract 4 to leave room for the PR push in ldctx() |