summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Woodward <b-woodward@ti.com>2011-04-26 22:34:58 -0500
committerBarry Woodward <b-woodward@ti.com>2011-04-26 22:34:58 -0500
commitb109c68d59d8b31bc829856a3a759ae665dd0498 (patch)
tree11091571b66201e242f9328bba75aa178fa19d74
parent4459bb13892b40980b79eddb87849f40f9eb785a (diff)
downloadbase-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
-rw-r--r--media/libstagefright/codecs/aacenc/src/asm/ARMV7/PrePostMDCT_v7.s3
-rw-r--r--media/libstagefright/codecs/aacenc/src/asm/ARMV7/R4R8First_v7.s3
-rw-r--r--media/libstagefright/codecs/amrwbenc/src/math_op.c6
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;
}