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.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
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 fc8370b42d..d1cd8da6ef 100644
--- a/firmware/thread.c
+++ b/firmware/thread.c
@@ -99,10 +99,22 @@ void switch_thread(void)
99 */ 99 */
100int create_thread(void* function, void* stack, int stack_size) 100int 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()