Index: chromium-browser-20.0.1132.57~r145807/src/third_party/ffmpeg/ffmpeg.gyp
===================================================================
--- chromium-browser-20.0.1132.57~r145807.orig/src/third_party/ffmpeg/ffmpeg.gyp	2012-07-13 00:18:26.000000000 +0000
+++ chromium-browser-20.0.1132.57~r145807/src/third_party/ffmpeg/ffmpeg.gyp	2012-07-15 14:12:09.000000000 +0000
@@ -173,15 +173,25 @@
               'cflags!': [
                 '-marm',
               ],
-              'cflags': [
-                '-mthumb',
-                '-march=armv7-a',
-                '-mtune=cortex-a8',
-              ],
               'conditions': [
+                ['armv7 == 1', {
+                  'cflags': [
+                    '-march=armv7-a',
+                  ],
+                }, {
+                  'cflags': [
+                    '-march=armv6',
+                  ],
+                }],
+                ['arm_thumb == 1', {
+                  'cflags': [
+                    '-mthumb',
+                    '-mtune=cortex-a8',
+                  ],
+                }],
                 ['arm_neon == 0', {
                   'cflags': [
-                    '-mfpu=vfpv3-d16',
+                    '-mfpu=<(arm_fpu)',
                   ],
                 }, {
                   'cflags': [
Index: chromium-browser-20.0.1132.57~r145807/src/third_party/ffmpeg/chromium/config/Chrome/linux/arm/config.h
===================================================================
--- chromium-browser-20.0.1132.57~r145807.orig/src/third_party/ffmpeg/chromium/config/Chrome/linux/arm/config.h	2012-07-13 00:16:31.000000000 +0000
+++ chromium-browser-20.0.1132.57~r145807/src/third_party/ffmpeg/chromium/config/Chrome/linux/arm/config.h	2012-07-15 14:12:09.000000000 +0000
@@ -1,7 +1,7 @@
 /* Automatically generated by configure - do not modify! */
 #ifndef FFMPEG_CONFIG_H
 #define FFMPEG_CONFIG_H
-#define FFMPEG_CONFIGURATION "--disable-everything --enable-fft --enable-rdft --disable-network --disable-bzlib --disable-zlib --disable-swscale --disable-amd3dnow --disable-amd3dnowext --enable-shared --optflags=-O2 --enable-decoder='theora,vorbis,vp8' --enable-decoder='pcm_u8,pcm_s16le,pcm_f32le' --enable-demuxer='ogg,matroska,wav' --enable-parser=vp8 --enable-cross-compile --cross-prefix=/usr/bin/armv7a-cros-linux-gnueabi- --target-os=linux --arch=arm --enable-armv6 --enable-armv6t2 --enable-armvfp --enable-thumb --disable-neon --extra-cflags='-march=armv7-a' --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfpu=vfpv3-d16' --extra-cflags='-mfloat-abi=softfp' --enable-pic --enable-decoder='aac,h264,mp3' --enable-demuxer='mp3,mov' --enable-parser=mpegaudio --enable-bsf=h264_mp4toannexb"
+#define FFMPEG_CONFIGURATION "--disable-everything --enable-fft --enable-rdft --disable-network --disable-bzlib --disable-zlib --disable-swscale --disable-amd3dnow --disable-amd3dnowext --enable-shared --optflags=-O2 --enable-decoder='theora,vorbis,vp8' --enable-decoder='pcm_u8,pcm_s16le,pcm_f32le' --enable-demuxer='ogg,matroska,wav' --enable-parser=vp8 --target-os=linux --arch=arm --enable-armv6 --enable-armvfp --disable-neon --extra-cflags='-march=armv6' --extra-cflags='-mfpu=vfp' --extra-cflags='-mfloat-abi=hard' --enable-pic --enable-decoder='aac,h264,mp3' --enable-demuxer='mp3,mov' --enable-parser=mpegaudio --enable-bsf=h264_mp4toannexb"
 #define FFMPEG_LICENSE "LGPL version 2.1 or later"
 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
 #define AVCONV_DATADIR "/usr/local/share/ffmpeg"
@@ -37,7 +37,7 @@
 #define HAVE_AMD3DNOWEXT 0
 #define HAVE_ARMV5TE 1
 #define HAVE_ARMV6 1
-#define HAVE_ARMV6T2 1
+#define HAVE_ARMV6T2 0
 #define HAVE_ARMVFP 1
 #define HAVE_AVX 0
 #define HAVE_MMI 0
@@ -47,7 +47,7 @@
 #define HAVE_PPC4XX 0
 #define HAVE_SSE 0
 #define HAVE_SSSE3 0
-#define HAVE_VFPV3 1
+#define HAVE_VFPV3 0
 #define HAVE_VIS 0
 #define HAVE_BIGENDIAN 0
 #define HAVE_FAST_UNALIGNED 1
@@ -113,7 +113,7 @@
 #define HAVE_LZO1X_999_COMPRESS 0
 #define HAVE_MACHINE_IOCTL_BT848_H 0
 #define HAVE_MACHINE_IOCTL_METEOR_H 0
-#define HAVE_MAKEINFO 1
+#define HAVE_MAKEINFO 0
 #define HAVE_MALLOC_H 1
 #define HAVE_MAPVIEWOFFILE 0
 #define HAVE_MEMALIGN 1
@@ -186,7 +186,7 @@
 #define CONFIG_BZLIB 0
 #define CONFIG_CRYSTALHD 0
 #define CONFIG_DCT 1
-#define CONFIG_DOC 1
+#define CONFIG_DOC 0
 #define CONFIG_DWT 0
 #define CONFIG_DXVA2 0
 #define CONFIG_FASTDIV 1
@@ -251,7 +251,7 @@
 #define CONFIG_SWRESAMPLE 1
 #define CONFIG_SWSCALE 0
 #define CONFIG_SWSCALE_ALPHA 1
-#define CONFIG_THUMB 1
+#define CONFIG_THUMB 0
 #define CONFIG_VAAPI 0
 #define CONFIG_VDA 0
 #define CONFIG_VDPAU 0
Index: chromium-browser-20.0.1132.57~r145807/src/skia/skia.gyp
===================================================================
--- chromium-browser-20.0.1132.57~r145807.orig/src/skia/skia.gyp	2012-07-15 12:17:16.000000000 +0000
+++ chromium-browser-20.0.1132.57~r145807/src/skia/skia.gyp	2012-07-15 14:12:09.000000000 +0000
@@ -1143,7 +1143,7 @@
             '../third_party/skia/src/opts/opts_check_arm.cpp',
           ],
         }],
-        [ 'armv7 == 1 and arm_neon == 0', {
+        [ 'arm_neon == 0', {
           'sources': [
             '../third_party/skia/src/opts/memset.arm.S',
         ],
Index: chromium-browser-20.0.1132.57~r145807/src/v8/build/common.gypi
===================================================================
--- chromium-browser-20.0.1132.57~r145807.orig/src/v8/build/common.gypi	2012-07-13 00:20:40.000000000 +0000
+++ chromium-browser-20.0.1132.57~r145807/src/v8/build/common.gypi	2012-07-15 14:12:09.000000000 +0000
@@ -48,7 +48,8 @@
     # both for the snapshot and for the ARM target. Leaving the default value
     # of 'false' will avoid VFP instructions in the snapshot and use CPU feature
     # probing when running on the target.
-    'v8_can_use_vfp_instructions%': 'false',
+    'v8_can_use_vfp2_instructions%': 'false',
+    'v8_can_use_vfp3_instructions%': 'false',
 
     # Similar to vfp but on MIPS.
     'v8_can_use_fpu_instructions%': 'true',
@@ -132,9 +133,14 @@
                   'CAN_USE_UNALIGNED_ACCESSES=0',
                 ],
               }],
-              [ 'v8_can_use_vfp_instructions=="true"', {
+              [ 'v8_can_use_vfp2_instructions=="true"', {
                 'defines': [
-                  'CAN_USE_VFP_INSTRUCTIONS',
+                  'CAN_USE_VFP2_INSTRUCTIONS',
+                ],
+              }],
+              [ 'v8_can_use_vfp3_instructions=="true"', {
+                'defines': [
+                  'CAN_USE_VFP3_INSTRUCTIONS',
                 ],
               }],
               [ 'v8_use_arm_eabi_hardfloat=="true"', {
Index: chromium-browser-20.0.1132.57~r145807/src/v8/src/arm/assembler-arm.cc
===================================================================
--- chromium-browser-20.0.1132.57~r145807.orig/src/v8/src/arm/assembler-arm.cc	2012-07-13 00:20:39.000000000 +0000
+++ chromium-browser-20.0.1132.57~r145807/src/v8/src/arm/assembler-arm.cc	2012-07-15 14:12:09.000000000 +0000
@@ -52,7 +52,7 @@
 
 
 // Get the CPU features enabled by the build. For cross compilation the
-// preprocessor symbols CAN_USE_ARMV7_INSTRUCTIONS and CAN_USE_VFP_INSTRUCTIONS
+// preprocessor symbols CAN_USE_ARMV7_INSTRUCTIONS and CAN_USE_VFP3_INSTRUCTIONS
 // can be defined to enable ARMv7 and VFPv3 instructions when building the
 // snapshot.
 static uint64_t CpuFeaturesImpliedByCompiler() {
@@ -60,9 +60,12 @@
 #ifdef CAN_USE_ARMV7_INSTRUCTIONS
   answer |= 1u << ARMv7;
 #endif  // def CAN_USE_ARMV7_INSTRUCTIONS
-#ifdef CAN_USE_VFP_INSTRUCTIONS
-  answer |= 1u << VFP3 | 1u << ARMv7;
-#endif  // def CAN_USE_VFP_INSTRUCTIONS
+#ifdef CAN_USE_VFP3_INSTRUCTIONS
+  answer |= 1u << VFP3 | 1u << VFP2 | 1u << ARMv7;
+#endif  // def CAN_USE_VFP3_INSTRUCTIONS
+#ifdef CAN_USE_VFP2_INSTRUCTIONS
+  answer |= 1u << VFP2;
+#endif // def CAN_USE_VFP2_INSTRUCTIONS
 
 #ifdef __arm__
   // If the compiler is allowed to use VFP then we can use VFP too in our code
@@ -1742,7 +1745,7 @@
   // Instruction details available in ARM DDI 0406A, A8-786.
   // cond(31-28) | 1101(27-24)| U000(23-20) | | Rbase(19-16) |
   // Vsrc(15-12) | 1011(11-8) | (offset/4)
-  ASSERT(CpuFeatures::IsEnabled(VFP3));
+  ASSERT(CpuFeatures::IsEnabled(VFP3) || CpuFeatures::IsEnabled(VFP2));
   int u = 1;
   if (offset < 0) {
     offset = -offset;
@@ -2028,7 +2031,7 @@
   // Instruction details available in ARM DDI 0406A, A8-646.
   // cond(31-28) | 1100(27-24)| 010(23-21) | op=0(20) | Rt2(19-16) |
   // Rt(15-12) | 1011(11-8) | 00(7-6) | M(5) | 1(4) | Vm
-  ASSERT(CpuFeatures::IsEnabled(VFP3));
+  ASSERT(CpuFeatures::IsEnabled(VFP3) || CpuFeatures::IsEnabled(VFP2));
   ASSERT(!src1.is(pc) && !src2.is(pc));
   emit(cond | 0xC*B24 | B22 | src2.code()*B16 |
        src1.code()*B12 | 0xB*B8 | B4 | dst.code());
Index: chromium-browser-20.0.1132.57~r145807/src/v8/src/arm/code-stubs-arm.cc
===================================================================
--- chromium-browser-20.0.1132.57~r145807.orig/src/v8/src/arm/code-stubs-arm.cc	2012-07-13 00:20:39.000000000 +0000
+++ chromium-browser-20.0.1132.57~r145807/src/v8/src/arm/code-stubs-arm.cc	2012-07-15 14:12:09.000000000 +0000
@@ -978,7 +978,7 @@
   __ push(lr);
   __ PrepareCallCFunction(0, 2, scratch);
   if (masm->use_eabi_hardfloat()) {
-    CpuFeatures::Scope scope(VFP3);
+    CpuFeatures::Scope scope(VFP2);
     __ vmov(d0, r0, r1);
     __ vmov(d1, r2, r3);
   }
@@ -990,7 +990,7 @@
   // Store answer in the overwritable heap number. Double returned in
   // registers r0 and r1 or in d0.
   if (masm->use_eabi_hardfloat()) {
-    CpuFeatures::Scope scope(VFP3);
+    CpuFeatures::Scope scope(VFP2);
     __ vstr(d0,
             FieldMemOperand(heap_number_result, HeapNumber::kValueOffset));
   } else {
@@ -1362,7 +1362,7 @@
     __ push(lr);
     __ PrepareCallCFunction(0, 2, r5);
     if (masm->use_eabi_hardfloat()) {
-      CpuFeatures::Scope scope(VFP3);
+      CpuFeatures::Scope scope(VFP2);
       __ vmov(d0, r0, r1);
       __ vmov(d1, r2, r3);
     }
@@ -3389,7 +3389,7 @@
 
   __ push(lr);
   __ PrepareCallCFunction(0, 1, scratch);
-  if (masm->use_eabi_hardfloat()) {
+  if (masm->use_eabi_hardfloat() && CpuFeatures::IsSupported(VFP3)) {
     __ vmov(d0, d2);
   } else {
     __ vmov(r0, r1, d2);
Index: chromium-browser-20.0.1132.57~r145807/src/v8/src/arm/macro-assembler-arm.cc
===================================================================
--- chromium-browser-20.0.1132.57~r145807.orig/src/v8/src/arm/macro-assembler-arm.cc	2012-07-15 12:17:16.000000000 +0000
+++ chromium-browser-20.0.1132.57~r145807/src/v8/src/arm/macro-assembler-arm.cc	2012-07-15 14:12:09.000000000 +0000
@@ -930,7 +930,7 @@
 }
 
 void MacroAssembler::GetCFunctionDoubleResult(const DoubleRegister dst) {
-  if (use_eabi_hardfloat()) {
+  if (use_eabi_hardfloat() && CpuFeatures::IsSupported(VFP3)) {
     Move(dst, d0);
   } else {
     vmov(dst, r0, r1);
@@ -3313,7 +3313,7 @@
 
 
 void MacroAssembler::SetCallCDoubleArguments(DoubleRegister dreg) {
-  if (use_eabi_hardfloat()) {
+  if (use_eabi_hardfloat() && CpuFeatures::IsSupported(VFP3)) {
     Move(d0, dreg);
   } else {
     vmov(r0, r1, dreg);
@@ -3323,7 +3323,7 @@
 
 void MacroAssembler::SetCallCDoubleArguments(DoubleRegister dreg1,
                                              DoubleRegister dreg2) {
-  if (use_eabi_hardfloat()) {
+  if (use_eabi_hardfloat() && CpuFeatures::IsSupported(VFP3)) {
     if (dreg2.is(d0)) {
       ASSERT(!dreg1.is(d1));
       Move(d1, dreg2);
@@ -3341,7 +3341,7 @@
 
 void MacroAssembler::SetCallCDoubleArguments(DoubleRegister dreg,
                                              Register reg) {
-  if (use_eabi_hardfloat()) {
+  if (use_eabi_hardfloat() && CpuFeatures::IsSupported(VFP3)) {
     Move(d0, dreg);
     Move(r0, reg);
   } else {
Index: chromium-browser-20.0.1132.57~r145807/src/v8/src/v8globals.h
===================================================================
--- chromium-browser-20.0.1132.57~r145807.orig/src/v8/src/v8globals.h	2012-07-13 00:20:40.000000000 +0000
+++ chromium-browser-20.0.1132.57~r145807/src/v8/src/v8globals.h	2012-07-15 14:12:09.000000000 +0000
@@ -442,6 +442,7 @@
                   CPUID = 10,  // x86
                   VFP3 = 1,    // ARM
                   ARMv7 = 2,   // ARM
+                  VFP2 = 4,    // ARM
                   SAHF = 0,    // x86
                   FPU = 1};    // MIPS
 
