summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/thread.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/firmware/thread.c b/firmware/thread.c
index 4a13d5394e..dc7d42566a 100644
--- a/firmware/thread.c
+++ b/firmware/thread.c
@@ -23,6 +23,8 @@ typedef union
23 struct regs_t 23 struct regs_t
24 { 24 {
25 unsigned int r[7]; /* Registers r8 thru r14 */ 25 unsigned int r[7]; /* Registers r8 thru r14 */
26 unsigned int mach,
27 macl;
26 void *sp; /* Stack pointer (r15) */ 28 void *sp; /* Stack pointer (r15) */
27 unsigned int sr; /* Status register */ 29 unsigned int sr; /* Status register */
28#if 0 30#if 0
@@ -111,6 +113,8 @@ static inline void stctx(void* addr)
111 /* here a far better code */ 113 /* here a far better code */
112 asm volatile ("sts.l pr, @-%0\n\t" 114 asm volatile ("sts.l pr, @-%0\n\t"
113 "stc.l sr, @-%0\n\t" 115 "stc.l sr, @-%0\n\t"
116 "sts.l macl,@-%0\n\t"
117 "sts.l mach,@-%0\n\t"
114 "mov.l r15, @-%0\n\t" 118 "mov.l r15, @-%0\n\t"
115 "mov.l r14, @-%0\n\t" 119 "mov.l r14, @-%0\n\t"
116 "mov.l r13, @-%0\n\t" 120 "mov.l r13, @-%0\n\t"
@@ -159,6 +163,8 @@ static inline void ldctx(void* addr)
159 "mov.l @%0+,r13\n\t" 163 "mov.l @%0+,r13\n\t"
160 "mov.l @%0+,r14\n\t" 164 "mov.l @%0+,r14\n\t"
161 "mov.l @%0+,r15\n\t" 165 "mov.l @%0+,r15\n\t"
166 "lds.l @%0+,mach\n\t"
167 "lds.l @%0+,macl\n\t"
162 "ldc.l @%0+,sr\n\t" 168 "ldc.l @%0+,sr\n\t"
163 "lds.l @%0+,pr" : : "r" (addr)); 169 "lds.l @%0+,pr" : : "r" (addr));
164 170