summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2004-10-13 11:32:26 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2004-10-13 11:32:26 +0000
commit5e54aa956fb9188b78717d88fca72bd11eaa4a6b (patch)
tree0a5ab6804677fe6d5445ef69524f4ac7e4806684
parentb03ff1e1726ba35d0e8be8cc7a87163aa0b6cff5 (diff)
downloadrockbox-5e54aa956fb9188b78717d88fca72bd11eaa4a6b.tar.gz
rockbox-5e54aa956fb9188b78717d88fca72bd11eaa4a6b.zip
MACH, MACL and SR are no longer part of the SH1 thread context
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5268 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/thread.c12
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 */
53static inline void store_context(void* addr) 50static 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();