diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/demac/libdemac/predictor-arm.S | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/apps/codecs/demac/libdemac/predictor-arm.S b/apps/codecs/demac/libdemac/predictor-arm.S index 6bb3ee1cf0..1ffba75318 100644 --- a/apps/codecs/demac/libdemac/predictor-arm.S +++ b/apps/codecs/demac/libdemac/predictor-arm.S | |||
@@ -67,21 +67,26 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA | |||
67 | .macro LDR2OFS reg1, reg2, base, offset | 67 | .macro LDR2OFS reg1, reg2, base, offset |
68 | #if ARM_ARCH >= 5 | 68 | #if ARM_ARCH >= 5 |
69 | ldrd \reg1, [\base, \offset] | 69 | ldrd \reg1, [\base, \offset] |
70 | #else | 70 | #else /* ARM_ARCH < 5 */ |
71 | #ifdef CPU_ARM7TDMI | ||
71 | add \reg1, \base, \offset | 72 | add \reg1, \base, \offset |
72 | ldmia \reg1, {\reg1, \reg2} | 73 | ldmia \reg1, {\reg1, \reg2} |
74 | #else | ||
75 | ldr \reg1, [\base, \offset] | ||
76 | ldr \reg2, [\base, \offset+4] | ||
73 | #endif | 77 | #endif |
78 | #endif /* ARM_ARCH */ | ||
74 | .endm | 79 | .endm |
75 | 80 | ||
76 | @ Macro for storing 2 registers, for various ARM versions. | 81 | @ Macro for storing 2 registers, for various ARM versions. |
77 | @ Registers must start with an even register, and must be consecutive. | 82 | @ Registers must start with an even register, and must be consecutive. |
78 | 83 | ||
79 | .macro STR2OFS reg1, reg2, base, offset, scratch | 84 | .macro STR2OFS reg1, reg2, base, offset |
80 | #if ARM_ARCH >= 5 | 85 | #if ARM_ARCH >= 5 |
81 | strd \reg1, [\base, \offset] | 86 | strd \reg1, [\base, \offset] |
82 | #else | 87 | #else |
83 | add \scratch, \base, \offset | 88 | str \reg1, [\base, \offset] |
84 | stmia \scratch, {\reg1, \reg2} | 89 | str \reg2, [\base, \offset+4] |
85 | #endif | 90 | #endif |
86 | .endm | 91 | .endm |
87 | 92 | ||
@@ -127,7 +132,7 @@ loop: | |||
127 | 132 | ||
128 | subs r10, r11, r10 @ r10 := r11 - r10 | 133 | subs r10, r11, r10 @ r10 := r11 - r10 |
129 | 134 | ||
130 | STR2OFS r10, r11, r14, #YDELAYA-4, r1 @ r1 -> scratch | 135 | STR2OFS r10, r11, r14, #YDELAYA-4 |
131 | @ p->buf[YDELAYA-1] = r10 | 136 | @ p->buf[YDELAYA-1] = r10 |
132 | @ p->buf[YDELAYA] = r11 | 137 | @ p->buf[YDELAYA] = r11 |
133 | 138 | ||
@@ -144,7 +149,7 @@ loop: | |||
144 | mvngt r11, #0 | 149 | mvngt r11, #0 |
145 | movlt r11, #1 @ r11 := SIGN(r11) (see .c for SIGN macro) | 150 | movlt r11, #1 @ r11 := SIGN(r11) (see .c for SIGN macro) |
146 | 151 | ||
147 | STR2OFS r10, r11, r14, #YADAPTCOEFFSA-4, r1 @r1 -> scratch | 152 | STR2OFS r10, r11, r14, #YADAPTCOEFFSA-4 |
148 | @ p->buf[YADAPTCOEFFSA-1] := r10 | 153 | @ p->buf[YADAPTCOEFFSA-1] := r10 |
149 | @ p->buf[YADAPTCOEFFSA] := r11 | 154 | @ p->buf[YADAPTCOEFFSA] := r11 |
150 | 155 | ||
@@ -175,7 +180,7 @@ loop: | |||
175 | 180 | ||
176 | subs r10, r11, r10 @ r10 := r11 - r10 | 181 | subs r10, r11, r10 @ r10 := r11 - r10 |
177 | 182 | ||
178 | STR2OFS r10, r11, r14, #YDELAYB-4, r1 @ r1 -> scratch | 183 | STR2OFS r10, r11, r14, #YDELAYB-4 |
179 | @ p->buf[YDELAYB-1] = r10 | 184 | @ p->buf[YDELAYB-1] = r10 |
180 | @ p->buf[YDELAYB] = r11 | 185 | @ p->buf[YDELAYB] = r11 |
181 | 186 | ||
@@ -193,7 +198,7 @@ loop: | |||
193 | mvngt r11, #0 | 198 | mvngt r11, #0 |
194 | movlt r11, #1 @ r11 := SIGN(r11) (see .c for SIGN macro) | 199 | movlt r11, #1 @ r11 := SIGN(r11) (see .c for SIGN macro) |
195 | 200 | ||
196 | STR2OFS r10, r11, r14, #YADAPTCOEFFSB-4, r2 @ r2 -> scratch | 201 | STR2OFS r10, r11, r14, #YADAPTCOEFFSB-4 |
197 | @ p->buf[YADAPTCOEFFSB-1] := r10 | 202 | @ p->buf[YADAPTCOEFFSB-1] := r10 |
198 | @ p->buf[YADAPTCOEFFSB] := r11 | 203 | @ p->buf[YADAPTCOEFFSB] := r11 |
199 | 204 | ||
@@ -313,7 +318,7 @@ loop: | |||
313 | 318 | ||
314 | subs r10, r11, r10 @ r10 := r11 - r10 | 319 | subs r10, r11, r10 @ r10 := r11 - r10 |
315 | 320 | ||
316 | STR2OFS r10, r11, r14, #XDELAYA-4, r1 @ r1 -> scratch | 321 | STR2OFS r10, r11, r14, #XDELAYA-4 |
317 | @ p->buf[XDELAYA-1] = r10 | 322 | @ p->buf[XDELAYA-1] = r10 |
318 | @ p->buf[XDELAYA] = r11 | 323 | @ p->buf[XDELAYA] = r11 |
319 | 324 | ||
@@ -330,7 +335,7 @@ loop: | |||
330 | mvngt r11, #0 | 335 | mvngt r11, #0 |
331 | movlt r11, #1 @ r11 := SIGN(r11) (see .c for SIGN macro) | 336 | movlt r11, #1 @ r11 := SIGN(r11) (see .c for SIGN macro) |
332 | 337 | ||
333 | STR2OFS r10, r11, r14, #XADAPTCOEFFSA-4, r1 @ r1 -> scratch | 338 | STR2OFS r10, r11, r14, #XADAPTCOEFFSA-4 |
334 | @ p->buf[XADAPTCOEFFSA-1] := r10 | 339 | @ p->buf[XADAPTCOEFFSA-1] := r10 |
335 | @ p->buf[XADAPTCOEFFSA] := r11 | 340 | @ p->buf[XADAPTCOEFFSA] := r11 |
336 | 341 | ||
@@ -361,7 +366,7 @@ loop: | |||
361 | 366 | ||
362 | subs r10, r11, r10 @ r10 := r11 - r10 | 367 | subs r10, r11, r10 @ r10 := r11 - r10 |
363 | 368 | ||
364 | STR2OFS r10, r11, r14, #XDELAYB-4, r1 @ r1 -> scratch | 369 | STR2OFS r10, r11, r14, #XDELAYB-4 |
365 | @ p->buf[XDELAYB-1] = r10 | 370 | @ p->buf[XDELAYB-1] = r10 |
366 | @ p->buf[XDELAYB] = r11 | 371 | @ p->buf[XDELAYB] = r11 |
367 | 372 | ||
@@ -379,7 +384,7 @@ loop: | |||
379 | mvngt r11, #0 | 384 | mvngt r11, #0 |
380 | movlt r11, #1 @ r11 := SIGN(r11) (see .c for SIGN macro) | 385 | movlt r11, #1 @ r11 := SIGN(r11) (see .c for SIGN macro) |
381 | 386 | ||
382 | STR2OFS r10, r11, r14, #XADAPTCOEFFSB-4, r2 @ r2 -> scratch | 387 | STR2OFS r10, r11, r14, #XADAPTCOEFFSB-4 |
383 | @ p->buf[XADAPTCOEFFSB-1] := r10 | 388 | @ p->buf[XADAPTCOEFFSB-1] := r10 |
384 | @ p->buf[XADAPTCOEFFSB] := r11 | 389 | @ p->buf[XADAPTCOEFFSB] := r11 |
385 | 390 | ||