summaryrefslogtreecommitdiff
path: root/firmware/thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/thread.c')
-rw-r--r--firmware/thread.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/firmware/thread.c b/firmware/thread.c
index e6bc1dd2ff..e3116fbeb5 100644
--- a/firmware/thread.c
+++ b/firmware/thread.c
@@ -52,16 +52,18 @@ static inline void stctx(void* addr)
52 "mov.l r9, @(4, %1)\n\t" 52 "mov.l r9, @(4, %1)\n\t"
53 "mov.l r10, @(8, %1)\n\t" 53 "mov.l r10, @(8, %1)\n\t"
54 "mov.l r11, @(12, %1)\n\t" 54 "mov.l r11, @(12, %1)\n\t"
55 "mov.l r12, @(16, %1)\n\t" 55 "add #16,%1\n\t"
56 "mov.l r13, @(20, %1)\n\t" 56 "mov.l r12, @(0, %1)\n\t"
57 "mov.l r14, @(24, %1)\n\t" 57 "mov.l r13, @(4, %1)\n\t"
58 "mov.l r15, @(28, %1)\n\t" 58 "mov.l r14, @(8, %1)\n\t"
59 "mov.l r15, @(12, %1)\n\t"
60 "add #16,%1\n\t"
59 "stc sr, %0\n\t" 61 "stc sr, %0\n\t"
60 "mov.l %0, @(32, %1)\n\t" 62 "mov.l %0, @(0, %1)\n\t"
61 "stc gbr, %0\n\t" 63 "stc gbr, %0\n\t"
62 "mov.l %0, @(36, %1)\n\t" 64 "mov.l %0, @(4, %1)\n\t"
63 "sts pr, %0\n\t" 65 "sts pr, %0\n\t"
64 "mov.l %0, @(40, %1)" : "=r&" (tmp) : "r" (addr)); 66 "mov.l %0, @(8, %1)" : "=r&" (tmp) : "r" (addr));
65} 67}
66 68
67/*--------------------------------------------------------------------------- 69/*---------------------------------------------------------------------------
@@ -76,15 +78,17 @@ static inline void ldctx(void* addr)
76 "mov.l @(4, %1), r9\n\t" 78 "mov.l @(4, %1), r9\n\t"
77 "mov.l @(8, %1), r10\n\t" 79 "mov.l @(8, %1), r10\n\t"
78 "mov.l @(12, %1), r11\n\t" 80 "mov.l @(12, %1), r11\n\t"
79 "mov.l @(16, %1), r12\n\t" 81 "add #16,%1\n\t"
80 "mov.l @(20, %1), r13\n\t" 82 "mov.l @(0, %1), r12\n\t"
81 "mov.l @(24, %1), r14\n\t" 83 "mov.l @(4, %1), r13\n\t"
82 "mov.l @(28, %1), r15\n\t" 84 "mov.l @(8, %1), r14\n\t"
83 "mov.l @(32, %1), r0\n\t" 85 "mov.l @(12, %1), r15\n\t"
86 "add #16,%1\n\t"
87 "mov.l @(0, %1), r0\n\t"
84 "ldc %0, sr\n\t" 88 "ldc %0, sr\n\t"
85 "mov.l @(36, %1), %0\n\t" 89 "mov.l @(4, %1), %0\n\t"
86 "ldc %0, gbr\n\t" 90 "ldc %0, gbr\n\t"
87 "mov.l @(40, %1), %0\n\t" 91 "mov.l @(8, %1), %0\n\t"
88 "lds %0, pr\n\t" 92 "lds %0, pr\n\t"
89 "mov.l %0, @(0, r15)" : "=r&" (tmp) : "r" (addr)); 93 "mov.l %0, @(0, r15)" : "=r&" (tmp) : "r" (addr));
90} 94}