diff options
author | Barry Woodward <b-woodward@ti.com> | 2011-04-26 22:34:58 -0500 |
---|---|---|
committer | Barry Woodward <b-woodward@ti.com> | 2011-04-26 22:34:58 -0500 |
commit | b109c68d59d8b31bc829856a3a759ae665dd0498 (patch) | |
tree | 11091571b66201e242f9328bba75aa178fa19d74 | |
parent | 4459bb13892b40980b79eddb87849f40f9eb785a (diff) | |
download | base-b109c68d59d8b31bc829856a3a759ae665dd0498.tar.gz |
Fixing remaining NEON corner cases
The newest version of the codescan tool revealed some corner cases where the NEON could still be left
active. This patch closes these corner cases.
Signed-off-by: Barry Woodward <b-woodward@ti.com>
Change-Id: I86697f827d2c9b9467dd704d6055d2e538290154
3 files changed, 12 insertions, 0 deletions
diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s index 1ce9cb243def..2c388e794cbc 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s @@ -74,6 +74,9 @@ PreMDCT_LOOP: bne PreMDCT_LOOP
PreMDCT_END:
+.ifdef NEEDS_ARM_ERRATA_754319_754320_ASM
+ VMOV s0,s0 @NOP for ARM Errata
+.endif
ldmia sp!, {r4 - r11, pc}
@ENDP @ |PreMDCT|
diff --git a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s index 5f2ed5e60ce8..3fae129482a7 100644 --- a/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s +++ b/media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s @@ -103,6 +103,9 @@ Radix8First_LOOP: bne Radix8First_LOOP
Radix8First_END:
+.ifdef NEEDS_ARM_ERRATA_754319_754320_ASM
+ VMOV s0,s0 @NOP for ARM Errata
+.endif
ldmia sp!, {r4 - r11, pc}
SQRT1_2:
.word 0x2d413ccd
diff --git a/media/libstagefright/codecs/amrwbenc/src/math_op.c b/media/libstagefright/codecs/amrwbenc/src/math_op.c index 1c95ed025133..b99212489466 100644 --- a/media/libstagefright/codecs/amrwbenc/src/math_op.c +++ b/media/libstagefright/codecs/amrwbenc/src/math_op.c @@ -108,6 +108,9 @@ void Isqrt_n( {
*exp = 0;
*frac = 0x7fffffffL;
+#ifdef NEEDS_ARM_ERRATA_754319_754320
+ asm volatile("vmov s0,s0\n\t");
+#endif
return;
}
@@ -125,6 +128,9 @@ void Isqrt_n( *frac = L_deposit_h(table_isqrt[i]); /* table[i] << 16 */
tmp = vo_sub(table_isqrt[i], table_isqrt[i + 1]); /* table[i] - table[i+1]) */
*frac = vo_L_msu(*frac, tmp, a); /* frac -= tmp*a*2 */
+#ifdef NEEDS_ARM_ERRATA_754319_754320
+ asm volatile("vmov s0,s0\n\t");
+#endif
return;
}
|