diff options
Diffstat (limited to 'firmware/thread.c')
-rw-r--r-- | firmware/thread.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/firmware/thread.c b/firmware/thread.c index df90c7ac2f..e44db5706d 100644 --- a/firmware/thread.c +++ b/firmware/thread.c | |||
@@ -26,9 +26,6 @@ struct regs | |||
26 | { | 26 | { |
27 | unsigned int r[7]; /* Registers r8 thru r14 */ | 27 | unsigned int r[7]; /* Registers r8 thru r14 */ |
28 | void *sp; /* Stack pointer (r15) */ | 28 | void *sp; /* Stack pointer (r15) */ |
29 | unsigned int mach; | ||
30 | unsigned int macl; | ||
31 | unsigned int sr; /* Status register */ | ||
32 | void* pr; /* Procedure register */ | 29 | void* pr; /* Procedure register */ |
33 | }; | 30 | }; |
34 | 31 | ||
@@ -52,11 +49,8 @@ void switch_thread(void) __attribute__ ((section(".icode"))); | |||
52 | */ | 49 | */ |
53 | static inline void store_context(void* addr) | 50 | static inline void store_context(void* addr) |
54 | { | 51 | { |
55 | asm volatile ("add #48, %0\n\t" | 52 | asm volatile ("add #36, %0\n\t" |
56 | "sts.l pr, @-%0\n\t" | 53 | "sts.l pr, @-%0\n\t" |
57 | "stc.l sr, @-%0\n\t" | ||
58 | "sts.l macl,@-%0\n\t" | ||
59 | "sts.l mach,@-%0\n\t" | ||
60 | "mov.l r15, @-%0\n\t" | 54 | "mov.l r15, @-%0\n\t" |
61 | "mov.l r14, @-%0\n\t" | 55 | "mov.l r14, @-%0\n\t" |
62 | "mov.l r13, @-%0\n\t" | 56 | "mov.l r13, @-%0\n\t" |
@@ -81,9 +75,6 @@ static inline void load_context(const void* addr) | |||
81 | "mov.l @%0+,r13\n\t" | 75 | "mov.l @%0+,r13\n\t" |
82 | "mov.l @%0+,r14\n\t" | 76 | "mov.l @%0+,r14\n\t" |
83 | "mov.l @%0+,r15\n\t" | 77 | "mov.l @%0+,r15\n\t" |
84 | "lds.l @%0+,mach\n\t" | ||
85 | "lds.l @%0+,macl\n\t" | ||
86 | "ldc.l @%0+,sr\n\t" | ||
87 | "mov.l @%0,%0\n\t" | 78 | "mov.l @%0,%0\n\t" |
88 | "lds %0,pr\n\t" | 79 | "lds %0,pr\n\t" |
89 | "mov.l %0, @(0, r15)" : "+r" (addr)); | 80 | "mov.l %0, @(0, r15)" : "+r" (addr)); |
@@ -170,7 +161,6 @@ int create_thread(void* function, void* stack, int stack_size, | |||
170 | /* Subtract 4 to leave room for the PR push in load_context() | 161 | /* Subtract 4 to leave room for the PR push in load_context() |
171 | Align it on an even 32 bit boundary */ | 162 | Align it on an even 32 bit boundary */ |
172 | regs->sp = (void*)(((unsigned int)stack + stack_size - 4) & ~3); | 163 | regs->sp = (void*)(((unsigned int)stack + stack_size - 4) & ~3); |
173 | regs->sr = 0; | ||
174 | regs->pr = function; | 164 | regs->pr = function; |
175 | 165 | ||
176 | wake_up_thread(); | 166 | wake_up_thread(); |