diff options
Diffstat (limited to 'www/firefox31/patches')
19 files changed, 910 insertions, 2 deletions
diff --git a/www/firefox31/patches/patch-gfx_ycbcr_moz.build b/www/firefox31/patches/patch-gfx_ycbcr_moz.build new file mode 100644 index 00000000000..4996ac534bf --- /dev/null +++ b/www/firefox31/patches/patch-gfx_ycbcr_moz.build @@ -0,0 +1,13 @@ +$NetBSD: patch-gfx_ycbcr_moz.build,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- gfx/ycbcr/moz.build.orig 2015-04-26 10:44:35.000000000 +0000 ++++ gfx/ycbcr/moz.build +@@ -63,7 +63,7 @@ else: + + if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['HAVE_ARM_NEON']: + SOURCES += [ +- 'yuv_row_arm.s', ++ 'yuv_row_arm.S', + ] + SOURCES += [ + 'yuv_convert_arm.cpp', diff --git a/www/firefox31/patches/patch-gfx_ycbcr_yuv__row__arm.S b/www/firefox31/patches/patch-gfx_ycbcr_yuv__row__arm.S new file mode 100644 index 00000000000..50b62bfe75c --- /dev/null +++ b/www/firefox31/patches/patch-gfx_ycbcr_yuv__row__arm.S @@ -0,0 +1,26 @@ +$NetBSD: patch-gfx_ycbcr_yuv__row__arm.S,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- gfx/ycbcr/yuv_row_arm.S.orig 2015-04-25 13:25:04.000000000 +0000 ++++ gfx/ycbcr/yuv_row_arm.S +@@ -74,7 +74,10 @@ YCbCr42xToRGB565_DITHER30_CONSTS_NEON: + .global ScaleYCbCr42xToRGB565_BilinearY_Row_NEON + .type ScaleYCbCr42xToRGB565_BilinearY_Row_NEON, %function + .balign 64 ++#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__) + .fnstart ++#endif ++ .cfi_startproc + ScaleYCbCr42xToRGB565_BilinearY_Row_NEON: + STMFD r13!,{r4-r9,r14} @ 8 words. + ADR r14,YCbCr42xToRGB565_DITHER03_CONSTS_NEON +@@ -296,7 +299,10 @@ s42xbily_neon_tail: + s42xbily_neon_done: + VPOP {Q4-Q7} @ 16 words. + LDMFD r13!,{r4-r9,PC} @ 8 words. ++#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__) + .fnend ++#endif ++ .cfi_endproc + .size ScaleYCbCr42xToRGB565_BilinearY_Row_NEON, .-ScaleYCbCr42xToRGB565_BilinearY_Row_NEON + + #if defined(__ELF__)&&defined(__linux__) diff --git a/www/firefox31/patches/patch-ipc_chromium_src_base_atomicops.h b/www/firefox31/patches/patch-ipc_chromium_src_base_atomicops.h new file mode 100644 index 00000000000..39612b492ed --- /dev/null +++ b/www/firefox31/patches/patch-ipc_chromium_src_base_atomicops.h @@ -0,0 +1,16 @@ +$NetBSD: patch-ipc_chromium_src_base_atomicops.h,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- ipc/chromium/src/base/atomicops.h.orig 2015-04-10 17:59:48.000000000 +0000 ++++ ipc/chromium/src/base/atomicops.h +@@ -52,7 +52,11 @@ typedef Atomic64 AtomicWord; + typedef Atomic32 AtomicWord; + #endif // ARCH_CPU_64_BITS + #else ++#ifdef __arm__ ++typedef Atomic32 AtomicWord; ++#else + typedef intptr_t AtomicWord; ++#endif + #endif // OS_OPENBSD + + // Atomically execute: diff --git a/www/firefox31/patches/patch-ipc_chromium_src_base_atomicops__internals__arm__gcc.h b/www/firefox31/patches/patch-ipc_chromium_src_base_atomicops__internals__arm__gcc.h new file mode 100644 index 00000000000..9359545ff7a --- /dev/null +++ b/www/firefox31/patches/patch-ipc_chromium_src_base_atomicops__internals__arm__gcc.h @@ -0,0 +1,90 @@ +$NetBSD: patch-ipc_chromium_src_base_atomicops__internals__arm__gcc.h,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- ipc/chromium/src/base/atomicops_internals_arm_gcc.h.orig 2015-03-21 03:27:18.000000000 +0000 ++++ ipc/chromium/src/base/atomicops_internals_arm_gcc.h +@@ -12,44 +12,19 @@ + namespace base { + namespace subtle { + +-// 0xffff0fc0 is the hard coded address of a function provided by +-// the kernel which implements an atomic compare-exchange. On older +-// ARM architecture revisions (pre-v6) this may be implemented using +-// a syscall. This address is stable, and in active use (hard coded) +-// by at least glibc-2.7 and the Android C library. +-typedef Atomic32 (*LinuxKernelCmpxchgFunc)(Atomic32 old_value, +- Atomic32 new_value, +- volatile Atomic32* ptr); +-LinuxKernelCmpxchgFunc pLinuxKernelCmpxchg __attribute__((weak)) = +- (LinuxKernelCmpxchgFunc) 0xffff0fc0; +- +-typedef void (*LinuxKernelMemoryBarrierFunc)(void); +-LinuxKernelMemoryBarrierFunc pLinuxKernelMemoryBarrier __attribute__((weak)) = +- (LinuxKernelMemoryBarrierFunc) 0xffff0fa0; +- +- + inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { +- Atomic32 prev_value = *ptr; +- do { +- if (!pLinuxKernelCmpxchg(old_value, new_value, +- const_cast<Atomic32*>(ptr))) { +- return old_value; +- } +- prev_value = *ptr; +- } while (prev_value == old_value); +- return prev_value; ++ return __sync_val_compare_and_swap(ptr, old_value, new_value); + } + + inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { +- Atomic32 old_value; ++ Atomic32 prev_value; + do { +- old_value = *ptr; +- } while (pLinuxKernelCmpxchg(old_value, new_value, +- const_cast<Atomic32*>(ptr))); +- return old_value; ++ prev_value = *ptr; ++ } while (!__sync_bool_compare_and_swap(ptr, prev_value, new_value)); ++ return prev_value; + } + + inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, +@@ -59,18 +34,14 @@ inline Atomic32 NoBarrier_AtomicIncremen + + inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { +- for (;;) { +- // Atomic exchange the old value with an incremented one. +- Atomic32 old_value = *ptr; +- Atomic32 new_value = old_value + increment; +- if (pLinuxKernelCmpxchg(old_value, new_value, +- const_cast<Atomic32*>(ptr)) == 0) { +- // The exchange took place as expected. +- return new_value; +- } +- // Otherwise, *ptr changed mid-loop and we need to retry. +- } +- ++ Atomic32 old_value; ++ Atomic32 new_value; ++ do { ++ // Atomic exchange the old value with an incremented one. ++ old_value = *ptr; ++ new_value = old_value + increment; ++ } while (!__sync_bool_compare_and_swap(ptr, old_value, new_value)); ++ return new_value; + } + + inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, +@@ -90,7 +61,7 @@ inline void NoBarrier_Store(volatile Ato + } + + inline void MemoryBarrier() { +- pLinuxKernelMemoryBarrier(); ++ __sync_synchronize(); + } + + inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { diff --git a/www/firefox31/patches/patch-js_src_assembler_jit_ExecutableAllocator.h b/www/firefox31/patches/patch-js_src_assembler_jit_ExecutableAllocator.h new file mode 100644 index 00000000000..23f4b7b2bd2 --- /dev/null +++ b/www/firefox31/patches/patch-js_src_assembler_jit_ExecutableAllocator.h @@ -0,0 +1,17 @@ +$NetBSD: patch-js_src_assembler_jit_ExecutableAllocator.h,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- js/src/assembler/jit/ExecutableAllocator.h.orig 2015-04-10 13:30:05.000000000 +0000 ++++ js/src/assembler/jit/ExecutableAllocator.h +@@ -471,6 +471,12 @@ public: + : "r" (code), "r" (reinterpret_cast<char*>(code) + size) + : "r0", "r1", "r2"); + } ++#elif WTF_CPU_ARM && defined(__NetBSD__) ++ static void cacheFlush(void* code, size_t size) ++ { ++ intptr_t end = reinterpret_cast<intptr_t>(code) + size; ++ __builtin___clear_cache(reinterpret_cast<char*>(code), reinterpret_cast<char*>(end)); ++ } + #elif WTF_OS_SYMBIAN + static void cacheFlush(void* code, size_t size) + { diff --git a/www/firefox31/patches/patch-js_src_jit_AsmJSModule.cpp b/www/firefox31/patches/patch-js_src_jit_AsmJSModule.cpp new file mode 100644 index 00000000000..7992f49b93c --- /dev/null +++ b/www/firefox31/patches/patch-js_src_jit_AsmJSModule.cpp @@ -0,0 +1,17 @@ +$NetBSD: patch-js_src_jit_AsmJSModule.cpp,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- js/src/jit/AsmJSModule.cpp.orig 2015-04-20 23:47:34.000000000 +0000 ++++ js/src/jit/AsmJSModule.cpp +@@ -165,10 +165,10 @@ InvokeFromAsmJS_ToNumber(JSContext *cx, + extern "C" { + + extern int64_t +-__aeabi_idivmod(int, int); ++__aeabi_idivmod(int, int) MOZ_EXPORT; + + extern int64_t +-__aeabi_uidivmod(int, int); ++__aeabi_uidivmod(int, int) MOZ_EXPORT; + + } + #endif diff --git a/www/firefox31/patches/patch-js_src_jit_arm_Architecture-arm.cpp b/www/firefox31/patches/patch-js_src_jit_arm_Architecture-arm.cpp new file mode 100644 index 00000000000..15aa80152c0 --- /dev/null +++ b/www/firefox31/patches/patch-js_src_jit_arm_Architecture-arm.cpp @@ -0,0 +1,23 @@ +$NetBSD: patch-js_src_jit_arm_Architecture-arm.cpp,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- js/src/jit/arm/Architecture-arm.cpp.orig 2015-04-10 17:17:56.000000000 +0000 ++++ js/src/jit/arm/Architecture-arm.cpp +@@ -17,7 +17,7 @@ + + #define HWCAP_USE_HARDFP_ABI (1 << 28) + +-#if !(defined(ANDROID) || defined(MOZ_B2G)) && !defined(JS_ARM_SIMULATOR) ++#if defined(__linux__) && !(defined(ANDROID) || defined(MOZ_B2G)) && !defined(JS_ARM_SIMULATOR) + #define HWCAP_ARMv7 (1 << 29) + #include <asm/hwcap.h> + #else +@@ -212,6 +212,9 @@ uint32_t GetARMFlags() + + isSet = true; + return flags; ++#elif defined(__NetBSD__) ++ /* XXX */ ++ return 0; + #endif + + return 0; diff --git a/www/firefox31/patches/patch-js_src_jit_arm_BaselineIC-arm.cpp b/www/firefox31/patches/patch-js_src_jit_arm_BaselineIC-arm.cpp new file mode 100644 index 00000000000..c2958739b5a --- /dev/null +++ b/www/firefox31/patches/patch-js_src_jit_arm_BaselineIC-arm.cpp @@ -0,0 +1,13 @@ +$NetBSD: patch-js_src_jit_arm_BaselineIC-arm.cpp,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- js/src/jit/arm/BaselineIC-arm.cpp.orig 2015-04-20 23:58:14.000000000 +0000 ++++ js/src/jit/arm/BaselineIC-arm.cpp +@@ -71,7 +71,7 @@ ICCompare_Double::Compiler::generateStub + // ICBinaryArith_Int32 + + extern "C" { +- extern int64_t __aeabi_idivmod(int,int); ++ extern int64_t __aeabi_idivmod(int,int) MOZ_EXPORT; + } + + bool diff --git a/www/firefox31/patches/patch-js_src_jit_arm_CodeGenerator-arm.cpp b/www/firefox31/patches/patch-js_src_jit_arm_CodeGenerator-arm.cpp new file mode 100644 index 00000000000..da8e2e26052 --- /dev/null +++ b/www/firefox31/patches/patch-js_src_jit_arm_CodeGenerator-arm.cpp @@ -0,0 +1,15 @@ +$NetBSD: patch-js_src_jit_arm_CodeGenerator-arm.cpp,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- js/src/jit/arm/CodeGenerator-arm.cpp.orig 2015-04-20 23:29:04.000000000 +0000 ++++ js/src/jit/arm/CodeGenerator-arm.cpp +@@ -619,8 +619,8 @@ CodeGeneratorARM::visitDivI(LDivI *ins) + } + + extern "C" { +- extern int64_t __aeabi_idivmod(int,int); +- extern int64_t __aeabi_uidivmod(int,int); ++ extern int64_t __aeabi_idivmod(int,int) MOZ_EXPORT; ++ extern int64_t __aeabi_uidivmod(int,int) MOZ_EXPORT; + } + + bool diff --git a/www/firefox31/patches/patch-js_src_vm_NumericConversions.h b/www/firefox31/patches/patch-js_src_vm_NumericConversions.h new file mode 100644 index 00000000000..ffdc7d3bc44 --- /dev/null +++ b/www/firefox31/patches/patch-js_src_vm_NumericConversions.h @@ -0,0 +1,13 @@ +$NetBSD: patch-js_src_vm_NumericConversions.h,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- js/src/vm/NumericConversions.h.orig 2015-04-10 16:14:14.000000000 +0000 ++++ js/src/vm/NumericConversions.h +@@ -130,7 +130,7 @@ ToIntWidth(double d) + inline int32_t + ToInt32(double d) + { +-#if defined (__arm__) && defined (__GNUC__) ++#if defined (__arm__) && defined (__GNUC__) && !defined(__clang__) + int32_t i; + uint32_t tmp0; + uint32_t tmp1; diff --git a/www/firefox31/patches/patch-media_libopus_celt_arm_celt__pitch__xcorr__arm.s b/www/firefox31/patches/patch-media_libopus_celt_arm_celt__pitch__xcorr__arm.s new file mode 100644 index 00000000000..f10bf826a0e --- /dev/null +++ b/www/firefox31/patches/patch-media_libopus_celt_arm_celt__pitch__xcorr__arm.s @@ -0,0 +1,74 @@ +$NetBSD: patch-media_libopus_celt_arm_celt__pitch__xcorr__arm.s,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- media/libopus/celt/arm/celt_pitch_xcorr_arm.s.orig 2015-04-10 12:53:15.000000000 +0000 ++++ media/libopus/celt/arm/celt_pitch_xcorr_arm.s +@@ -26,6 +26,7 @@ + ; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ++ .syntax unified + AREA |.text|, CODE, READONLY + + GET celt/arm/armopts.s +@@ -309,7 +310,7 @@ xcorr_kernel_edsp_process4_done + SUBS r2, r2, #1 ; j-- + ; Stall + SMLABB r6, r12, r10, r6 ; sum[0] = MAC16_16(sum[0],x,y_0) +- LDRGTH r14, [r4], #2 ; r14 = *x++ ++ LDRHGT r14, [r4], #2 ; r14 = *x++ + SMLABT r7, r12, r10, r7 ; sum[1] = MAC16_16(sum[1],x,y_1) + SMLABB r8, r12, r11, r8 ; sum[2] = MAC16_16(sum[2],x,y_2) + SMLABT r9, r12, r11, r9 ; sum[3] = MAC16_16(sum[3],x,y_3) +@@ -319,7 +320,7 @@ xcorr_kernel_edsp_process4_done + SMLABB r7, r14, r11, r7 ; sum[1] = MAC16_16(sum[1],x,y_2) + LDRH r10, [r5], #2 ; r10 = y_4 = *y++ + SMLABT r8, r14, r11, r8 ; sum[2] = MAC16_16(sum[2],x,y_3) +- LDRGTH r12, [r4], #2 ; r12 = *x++ ++ LDRHGT r12, [r4], #2 ; r12 = *x++ + SMLABB r9, r14, r10, r9 ; sum[3] = MAC16_16(sum[3],x,y_4) + BLE xcorr_kernel_edsp_done + SMLABB r6, r12, r11, r6 ; sum[0] = MAC16_16(sum[0],tmp,y_2) +@@ -327,7 +328,7 @@ xcorr_kernel_edsp_process4_done + SMLABT r7, r12, r11, r7 ; sum[1] = MAC16_16(sum[1],tmp,y_3) + LDRH r2, [r5], #2 ; r2 = y_5 = *y++ + SMLABB r8, r12, r10, r8 ; sum[2] = MAC16_16(sum[2],tmp,y_4) +- LDRGTH r14, [r4] ; r14 = *x ++ LDRHGT r14, [r4] ; r14 = *x + SMLABB r9, r12, r2, r9 ; sum[3] = MAC16_16(sum[3],tmp,y_5) + BLE xcorr_kernel_edsp_done + SMLABT r6, r14, r11, r6 ; sum[0] = MAC16_16(sum[0],tmp,y_3) +@@ -387,11 +388,11 @@ celt_pitch_xcorr_edsp_process1u_loop4 + celt_pitch_xcorr_edsp_process1u_loop4_done + ADDS r12, r12, #4 + celt_pitch_xcorr_edsp_process1u_loop1 +- LDRGEH r6, [r4], #2 ++ LDRHGE r6, [r4], #2 + ; Stall + SMLABBGE r14, r6, r8, r14 ; sum = MAC16_16(sum, *x, *y) +- SUBGES r12, r12, #1 +- LDRGTH r8, [r5], #2 ++ SUBSGE r12, r12, #1 ++ LDRHGT r8, [r5], #2 + BGT celt_pitch_xcorr_edsp_process1u_loop1 + ; Restore _x + SUB r4, r4, r3, LSL #1 +@@ -474,7 +475,7 @@ celt_pitch_xcorr_edsp_process2_1 + ADDS r12, r12, #1 + ; Stall + SMLABB r10, r6, r8, r10 ; sum0 = MAC16_16(sum0, x_0, y_0) +- LDRGTH r7, [r4], #2 ++ LDRHGT r7, [r4], #2 + SMLABT r11, r6, r8, r11 ; sum1 = MAC16_16(sum1, x_0, y_1) + BLE celt_pitch_xcorr_edsp_process2_done + LDRH r9, [r5], #2 +@@ -527,8 +528,8 @@ celt_pitch_xcorr_edsp_process1a_loop_don + SUBGE r12, r12, #2 + SMLATTGE r14, r6, r8, r14 ; sum = MAC16_16(sum, x_1, y_1) + ADDS r12, r12, #1 +- LDRGEH r6, [r4], #2 +- LDRGEH r8, [r5], #2 ++ LDRHGE r6, [r4], #2 ++ LDRHGE r8, [r5], #2 + ; Stall + SMLABBGE r14, r6, r8, r14 ; sum = MAC16_16(sum, *x, *y) + ; maxcorr = max(maxcorr, sum) diff --git a/www/firefox31/patches/patch-media_libtheora_lib_arm_armbits.s b/www/firefox31/patches/patch-media_libtheora_lib_arm_armbits.s new file mode 100644 index 00000000000..dc7b3dde9d6 --- /dev/null +++ b/www/firefox31/patches/patch-media_libtheora_lib_arm_armbits.s @@ -0,0 +1,83 @@ +$NetBSD: patch-media_libtheora_lib_arm_armbits.s,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- media/libtheora/lib/arm/armbits.s.orig 2015-04-10 13:06:36.000000000 +0000 ++++ media/libtheora/lib/arm/armbits.s +@@ -15,6 +15,7 @@ + ; + ;******************************************************************** + ++ .syntax unified + AREA |.text|, CODE, READONLY + + ; Explicitly specifying alignment here because some versions of +@@ -73,25 +74,25 @@ oc_pack_read_refill + ; negative. + CMP r10,r11 ; ptr<stop => HI + CMPHI r3,#7 ; available<=24 => HI +- LDRHIB r14,[r11],#1 ; r14 = *ptr++ ++ LDRBHI r14,[r11],#1 ; r14 = *ptr++ + SUBHI r3,#8 ; available += 8 + ; (HI) Stall... + ORRHI r2,r14,LSL r3 ; r2 = window|=r14<<32-available + CMPHI r10,r11 ; ptr<stop => HI + CMPHI r3,#7 ; available<=24 => HI +- LDRHIB r14,[r11],#1 ; r14 = *ptr++ ++ LDRBHI r14,[r11],#1 ; r14 = *ptr++ + SUBHI r3,#8 ; available += 8 + ; (HI) Stall... + ORRHI r2,r14,LSL r3 ; r2 = window|=r14<<32-available + CMPHI r10,r11 ; ptr<stop => HI + CMPHI r3,#7 ; available<=24 => HI +- LDRHIB r14,[r11],#1 ; r14 = *ptr++ ++ LDRBHI r14,[r11],#1 ; r14 = *ptr++ + SUBHI r3,#8 ; available += 8 + ; (HI) Stall... + ORRHI r2,r14,LSL r3 ; r2 = window|=r14<<32-available + CMPHI r10,r11 ; ptr<stop => HI + CMPHI r3,#7 ; available<=24 => HI +- LDRHIB r14,[r11],#1 ; r14 = *ptr++ ++ LDRBHI r14,[r11],#1 ; r14 = *ptr++ + SUBHI r3,#8 ; available += 8 + ; (HI) Stall... + ORRHI r2,r14,LSL r3 ; r2 = window|=r14<<32-available +@@ -110,7 +111,7 @@ oc_pack_read_refill_last + CMP r11,r10 ; ptr<stop => LO + ; If we didn't hit the end of the packet, then pull enough of the next byte to + ; to fill up the window. +- LDRLOB r14,[r11] ; (LO) r14 = *ptr ++ LDRBLO r14,[r11] ; (LO) r14 = *ptr + ; Otherwise, set the EOF flag and pretend we have lots of available bits. + MOVHS r14,#1 ; (HS) r14 = 1 + ADDLO r10,r3,r1 ; (LO) r10 = available +@@ -189,12 +190,12 @@ oc_huff_token_decode_refill + ; We can't possibly need more than 15 bits, so available must be <= 15. + ; Therefore we can load at least two bytes without checking it. + CMP r2,r3 ; ptr<stop => HI +- LDRHIB r14,[r3],#1 ; r14 = *ptr++ ++ LDRBHI r14,[r3],#1 ; r14 = *ptr++ + RSBHI r5,r5,#24 ; (HI) available = 32-(available+=8) + RSBLS r5,r5,#32 ; (LS) r5 = 32-available + ORRHI r4,r14,LSL r5 ; r4 = window|=r14<<32-available + CMPHI r2,r3 ; ptr<stop => HI +- LDRHIB r14,[r3],#1 ; r14 = *ptr++ ++ LDRBHI r14,[r3],#1 ; r14 = *ptr++ + SUBHI r5,#8 ; available += 8 + ; (HI) Stall... + ORRHI r4,r14,LSL r5 ; r4 = window|=r14<<32-available +@@ -204,14 +205,14 @@ oc_huff_token_decode_refill + ; negative. + CMPHI r2,r3 ; ptr<stop => HI + CMPHI r5,#7 ; available<=24 => HI +- LDRHIB r14,[r3],#1 ; r14 = *ptr++ ++ LDRBHI r14,[r3],#1 ; r14 = *ptr++ + SUBHI r5,#8 ; available += 8 + ; (HI) Stall... + ORRHI r4,r14,LSL r5 ; r4 = window|=r14<<32-available + CMP r2,r3 ; ptr<stop => HI + MOVLS r5,#-1<<30 ; (LS) available = OC_LOTS_OF_BITS+32 + CMPHI r5,#7 ; (HI) available<=24 => HI +- LDRHIB r14,[r3],#1 ; (HI) r14 = *ptr++ ++ LDRBHI r14,[r3],#1 ; (HI) r14 = *ptr++ + SUBHI r5,#8 ; (HI) available += 8 + ; (HI) Stall... + ORRHI r4,r14,LSL r5 ; (HI) r4 = window|=r14<<32-available diff --git a/www/firefox31/patches/patch-media_libtheora_lib_arm_armcpu.c b/www/firefox31/patches/patch-media_libtheora_lib_arm_armcpu.c new file mode 100644 index 00000000000..a40b759c411 --- /dev/null +++ b/www/firefox31/patches/patch-media_libtheora_lib_arm_armcpu.c @@ -0,0 +1,33 @@ +$NetBSD: patch-media_libtheora_lib_arm_armcpu.c,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- media/libtheora/lib/arm/armcpu.c.orig 2015-04-10 12:39:09.000000000 +0000 ++++ media/libtheora/lib/arm/armcpu.c +@@ -106,6 +106,28 @@ ogg_uint32_t oc_cpu_flags_get(void){ + } + return flags; + } ++#elif defined(__NetBSD__) ++#include <sys/sysctl.h> ++#include <stdlib.h> ++ ++ogg_uint32_t oc_cpu_flags_get(void){ ++ ogg_uint32_t flags = 0; ++ int val = 0; ++ char arch_buf[16]; ++ size_t lenp; ++ /* XXX EDSP? */ ++ lenp = sizeof(val); ++ if (sysctlbyname("machdep.neon_present", &val, &lenp, NULL, 0) == 0 && val) ++ flags|=OC_CPU_ARM_NEON; ++ lenp = sizeof(arch_buf) - 1; ++ if (sysctlbyname("machdep.cpu_arch", arch_buf, &lenp, NULL, 0) == 0) { ++ arch_buf[lenp] = '\0'; ++ val = atoi(arch_buf); ++ if (val >= 6) ++ flags |= OC_CPU_ARM_MEDIA; ++ } ++ return flags; ++} + + #else + /*The feature registers which can tell us what the processor supports are diff --git a/www/firefox31/patches/patch-media_libtheora_lib_arm_armfrag.s b/www/firefox31/patches/patch-media_libtheora_lib_arm_armfrag.s new file mode 100644 index 00000000000..f656fa2f509 --- /dev/null +++ b/www/firefox31/patches/patch-media_libtheora_lib_arm_armfrag.s @@ -0,0 +1,125 @@ +$NetBSD: patch-media_libtheora_lib_arm_armfrag.s,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- media/libtheora/lib/arm/armfrag.s.orig 2015-04-10 13:13:44.000000000 +0000 ++++ media/libtheora/lib/arm/armfrag.s +@@ -305,26 +305,26 @@ ofcl_edsp_lp + LDR r5, [r14,r5, LSL #2] ; r5 = _frag_buf_offs[_fragis[fragii]] + SUBS r12, r12, #1 + ; Stall (on XScale) +- LDRD r6, [r4, r5]! ; r4 = _src_frame+frag_buf_off +- LDRD r8, [r4, r2]! ++ LDRD r6, r7, [r4, r5]! ; r4 = _src_frame+frag_buf_off ++ LDRD r8, r9, [r4, r2]! + ; Stall +- STRD r6, [r5, r0]! ; r5 = _dst_frame+frag_buf_off +- STRD r8, [r5, r2]! ++ STRD r6, r7, [r5, r0]! ; r5 = _dst_frame+frag_buf_off ++ STRD r8, r9, [r5, r2]! + ; Stall +- LDRD r6, [r4, r2]! ; On Xscale at least, doing 3 consecutive +- LDRD r8, [r4, r2]! ; loads causes a stall, but that's no worse +- LDRD r10,[r4, r2]! ; than us only doing 2, and having to do ++ LDRD r6, r7, [r4, r2]! ; On Xscale at least, doing 3 consecutive ++ LDRD r8, r9, [r4, r2]! ; loads causes a stall, but that's no worse ++ LDRD r10,r11,[r4, r2]! ; than us only doing 2, and having to do + ; another pair of LDRD/STRD later on. + ; Stall +- STRD r6, [r5, r2]! +- STRD r8, [r5, r2]! +- STRD r10,[r5, r2]! +- LDRD r6, [r4, r2]! +- LDRD r8, [r4, r2]! +- LDRD r10,[r4, r2]! +- STRD r6, [r5, r2]! +- STRD r8, [r5, r2]! +- STRD r10,[r5, r2]! ++ STRD r6, r7, [r5, r2]! ++ STRD r8, r9, [r5, r2]! ++ STRD r10,r11,[r5, r2]! ++ LDRD r6, r7, [r4, r2]! ++ LDRD r8, r9, [r4, r2]! ++ LDRD r10,r11,[r4, r2]! ++ STRD r6, r7, [r5, r2]! ++ STRD r8, r9, [r5, r2]! ++ STRD r10,r11,[r5, r2]! + LDRGE r5, [r3],#4 ; r5 = _fragis[fragii] + BGE ofcl_edsp_lp + ofcl_edsp_end +@@ -346,8 +346,8 @@ oc_frag_recon_intra_v6 PROC + MOV r12,r2 + LDR r6, =0x00800080 + ofrintra_v6_lp +- LDRD r2, [r12],#8 ; r2 = 11110000 r3 = 33332222 +- LDRD r4, [r12],#8 ; r4 = 55554444 r5 = 77776666 ++ LDRD r2, r3, [r12],#8 ; r2 = 11110000 r3 = 33332222 ++ LDRD r4, r5, [r12],#8 ; r4 = 55554444 r5 = 77776666 + SUBS r14,r14,#1 + QADD16 r2, r2, r6 + QADD16 r3, r3, r6 +@@ -363,7 +363,7 @@ ofrintra_v6_lp + ORR r5, r5, r5, LSR #8 ; r5 = __777766 + PKHBT r2, r2, r3, LSL #16 ; r2 = 33221100 + PKHBT r3, r4, r5, LSL #16 ; r3 = 77665544 +- STRD r2, [r0], r1 ++ STRD r2, r3, [r0], r1 + BGT ofrintra_v6_lp + LDMFD r13!,{r4-r6,PC} + ENDP +@@ -376,10 +376,10 @@ oc_frag_recon_inter_v6 PROC + STMFD r13!,{r4-r7,r14} + MOV r14,#8 + ofrinter_v6_lp +- LDRD r6, [r3], #8 ; r6 = 11110000 r7 = 33332222 ++ LDRD r6, r7, [r3], #8 ; r6 = 11110000 r7 = 33332222 + SUBS r14,r14,#1 + [ OC_ARM_CAN_UNALIGN_LDRD +- LDRD r4, [r1], r2 ; Unaligned ; r4 = 33221100 r5 = 77665544 ++ LDRD r4, r5, [r1], r2 ; Unaligned ; r4 = 33221100 r5 = 77665544 + | + LDR r5, [r1, #4] + LDR r4, [r1], r2 +@@ -390,7 +390,7 @@ ofrinter_v6_lp + UXTB16 r4,r4, ROR #8 ; r4 = __33__11 + QADD16 r12,r12,r6 ; r12= xx22xx00 + QADD16 r4, r7, r4 ; r4 = xx33xx11 +- LDRD r6, [r3], #8 ; r6 = 55554444 r7 = 77776666 ++ LDRD r6, r7, [r3], #8 ; r6 = 55554444 r7 = 77776666 + USAT16 r4, #8, r4 ; r4 = __33__11 + USAT16 r12,#8,r12 ; r12= __22__00 + ORR r4, r12,r4, LSL #8 ; r4 = 33221100 +@@ -403,7 +403,7 @@ ofrinter_v6_lp + USAT16 r12,#8, r12 ; r12= __66__44 + USAT16 r5, #8, r5 ; r4 = __77__55 + ORR r5, r12,r5, LSL #8 ; r5 = 33221100 +- STRD r4, [r0], r2 ++ STRD r4, r5, [r0], r2 + BGT ofrinter_v6_lp + LDMFD r13!,{r4-r7,PC} + ENDP +@@ -418,7 +418,7 @@ oc_frag_recon_inter2_v6 PROC + STMFD r13!,{r4-r9,r14} + MOV r14,#8 + ofrinter2_v6_lp +- LDRD r6, [r12,#8] ; r6 = 55554444 r7 = 77776666 ++ LDRD r6, r7, [r12,#8] ; r6 = 55554444 r7 = 77776666 + SUBS r14,r14,#1 + LDR r4, [r1, #4] ; Unaligned ; r4 = src1[1] = 77665544 + LDR r5, [r2, #4] ; Unaligned ; r5 = src2[1] = 77665544 +@@ -429,7 +429,7 @@ ofrinter2_v6_lp + UXTB16 r4, r4, ROR #8 ; r4 = __77__55 + QADD16 r8, r8, r5 ; r8 = xx66xx44 + QADD16 r9, r9, r4 ; r9 = xx77xx55 +- LDRD r6,[r12],#16 ; r6 = 33332222 r7 = 11110000 ++ LDRD r6, r7, [r12],#16 ; r6 = 33332222 r7 = 11110000 + USAT16 r8, #8, r8 ; r8 = __66__44 + LDR r4, [r1], r3 ; Unaligned ; r4 = src1[0] = 33221100 + USAT16 r9, #8, r9 ; r9 = __77__55 +@@ -445,7 +445,7 @@ ofrinter2_v6_lp + USAT16 r8, #8, r8 ; r8 = __22__00 + USAT16 r7, #8, r7 ; r7 = __33__11 + ORR r8, r8, r7, LSL #8 ; r8 = 33221100 +- STRD r8, [r0], r3 ++ STRD r8, r9, [r0], r3 + BGT ofrinter2_v6_lp + LDMFD r13!,{r4-r9,PC} + ENDP diff --git a/www/firefox31/patches/patch-media_libtheora_lib_arm_armidct.s b/www/firefox31/patches/patch-media_libtheora_lib_arm_armidct.s new file mode 100644 index 00000000000..a98db0d3c80 --- /dev/null +++ b/www/firefox31/patches/patch-media_libtheora_lib_arm_armidct.s @@ -0,0 +1,265 @@ +$NetBSD: patch-media_libtheora_lib_arm_armidct.s,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- media/libtheora/lib/arm/armidct.s.orig 2015-04-10 13:12:08.000000000 +0000 ++++ media/libtheora/lib/arm/armidct.s +@@ -765,22 +765,22 @@ oc_idct8x8_1_v6 PROC + ; r1 = ogg_uint16_t _dc + ORR r2, r1, r1, LSL #16 + ORR r3, r1, r1, LSL #16 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 +- STRD r2, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 ++ STRD r2, r3, [r0], #8 + MOV PC, r14 + ENDP + +@@ -812,22 +812,22 @@ oc_idct8x8_slow_v6 + BEQ oc_idct8x8_slow_v6_cols + MOV r4, #0 + MOV r5, #0 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 +- STRD r4, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 ++ STRD r4, r5, [r2], #8 + oc_idct8x8_slow_v6_cols + ; Column transforms + BL idct8_8core_down_v6 +@@ -856,8 +856,8 @@ oc_idct8x8_10_v6 PROC + BEQ oc_idct8x8_10_v6_cols + MOV r4, #0 + MOV r5, #0 +- STRD r4, [r2] +- STRD r4, [r2,#16] ++ STRD r4, r5, [r2] ++ STRD r4, r5, [r2,#16] + STR r4, [r2,#32] + STR r4, [r2,#48] + oc_idct8x8_10_v6_cols +@@ -903,7 +903,7 @@ idct2_1core_v6 PROC + LDR r3, OC_C4S4 + LDRSH r6, [r1], #16 ; r6 = x[1,0] + SMULWB r12,r3, r2 ; r12= t[0,0]=OC_C4S4*x[0,0]>>16 +- LDRD r4, OC_C7S1 ; r4 = OC_C7S1; r5 = OC_C1S7 ++ LDRD r4, r5, OC_C7S1 ; r4 = OC_C7S1; r5 = OC_C1S7 + SMULWB r6, r3, r6 ; r6 = t[1,0]=OC_C4S4*x[1,0]>>16 + SMULWT r4, r4, r2 ; r4 = t[0,4]=OC_C7S1*x[0,1]>>16 + SMULWT r7, r5, r2 ; r7 = t[0,7]=OC_C1S7*x[0,1]>>16 +@@ -965,7 +965,7 @@ idct2_2core_down_v6 PROC + MOV r7 ,#8 ; r7 = 8 + LDR r6, [r1], #16 ; r6 = <x[1,1]|x[1,0]> + SMLAWB r12,r3, r2, r7 ; r12= (t[0,0]=OC_C4S4*x[0,0]>>16)+8 +- LDRD r4, OC_C7S1 ; r4 = OC_C7S1; r5 = OC_C1S7 ++ LDRD r4, r5, OC_C7S1 ; r4 = OC_C7S1; r5 = OC_C1S7 + SMLAWB r7, r3, r6, r7 ; r7 = (t[1,0]=OC_C4S4*x[1,0]>>16)+8 + SMULWT r5, r5, r2 ; r2 = t[0,7]=OC_C1S7*x[0,1]>>16 + PKHBT r12,r12,r7, LSL #16 ; r12= <t[1,0]+8|t[0,0]+8> +@@ -1048,7 +1048,7 @@ oc_idct8x8_6_v6 PROC + BEQ oc_idct8x8_6_v6_cols + MOV r4, #0 + MOV r5, #0 +- STRD r4, [r0] ++ STRD r4, r5, [r0] + STR r4, [r0,#16] + STR r4, [r0,#32] + MOV r0, r8 ; Write to the final destination. +@@ -1084,15 +1084,15 @@ idct3_2core_v6 PROC + ; r0 = ogg_int16_t *_y (destination) + ; r1 = const ogg_int16_t *_x (source) + ; Stage 1: +- LDRD r4, [r1], #16 ; r4 = <x[0,1]|x[0,0]>; r5 = <*|x[0,2]> +- LDRD r10,OC_C6S2_3_v6 ; r10= OC_C6S2; r11= OC_C2S6 ++ LDRD r4, r5, [r1], #16 ; r4 = <x[0,1]|x[0,0]>; r5 = <*|x[0,2]> ++ LDRD r10,r11, OC_C6S2_3_v6 ; r10= OC_C6S2; r11= OC_C2S6 + ; Stall + SMULWB r3, r11,r5 ; r3 = t[0,3]=OC_C2S6*x[0,2]>>16 + LDR r11,OC_C4S4 + SMULWB r2, r10,r5 ; r2 = t[0,2]=OC_C6S2*x[0,2]>>16 + LDR r5, [r1], #16 ; r5 = <x[1,1]|x[1,0]> + SMULWB r12,r11,r4 ; r12= (t[0,0]=OC_C4S4*x[0,0]>>16) +- LDRD r6, OC_C7S1_3_v6 ; r6 = OC_C7S1; r7 = OC_C1S7 ++ LDRD r6, r7, OC_C7S1_3_v6 ; r6 = OC_C7S1; r7 = OC_C1S7 + SMULWB r10,r11,r5 ; r10= (t[1,0]=OC_C4S4*x[1,0]>>16) + PKHBT r12,r12,r10,LSL #16 ; r12= <t[1,0]|t[0,0]> + SMULWT r10,r7, r5 ; r10= t[1,7]=OC_C1S7*x[1,1]>>16 +@@ -1128,8 +1128,8 @@ idct3_3core_down_v6 PROC + ; r0 = ogg_int16_t *_y (destination) + ; r1 = const ogg_int16_t *_x (source) + ; Stage 1: +- LDRD r10,[r1], #16 ; r10= <x[0,1]|x[0,0]>; r11= <??|x[0,2]> +- LDRD r6, OC_C6S2_3_v6 ; r6 = OC_C6S2; r7 = OC_C2S6 ++ LDRD r10,r11,[r1], #16 ; r10= <x[0,1]|x[0,0]>; r11= <??|x[0,2]> ++ LDRD r6, r7, OC_C6S2_3_v6 ; r6 = OC_C6S2; r7 = OC_C2S6 + LDR r4, [r1], #16 ; r4 = <x[1,1]|x[1,0]> + SMULWB r3, r7, r11 ; r3 = t[0,3]=OC_C2S6*x[0,2]>>16 + MOV r7,#8 +@@ -1140,7 +1140,7 @@ idct3_3core_down_v6 PROC + PKHBT r3, r3, r3, LSL #16 ; r3 = <t[0,3]|t[0,3]> + SMLAWB r5, r11,r4, r7 ; r5 = t[1,0]+8=(OC_C4S4*x[1,0]>>16)+8 + PKHBT r2, r2, r2, LSL #16 ; r2 = <t[0,2]|t[0,2]> +- LDRD r6, OC_C7S1_3_v6 ; r6 = OC_C7S1; r7 = OC_C1S7 ++ LDRD r6, r7, OC_C7S1_3_v6 ; r6 = OC_C7S1; r7 = OC_C1S7 + PKHBT r12,r12,r5, LSL #16 ; r12= <t[1,0]+8|t[0,0]+8> + SMULWT r5, r7, r4 ; r5 = t[1,7]=OC_C1S7*x[1,1]>>16 + SMULWT r7, r7, r10 ; r7 = t[0,7]=OC_C1S7*x[0,1]>>16 +@@ -1163,13 +1163,13 @@ idct4_3core_v6 PROC + ; r0 = ogg_int16_t *_y (destination) + ; r1 = const ogg_int16_t *_x (source) + ; Stage 1: +- LDRD r10,[r1], #16 ; r10= <x[0,1]|x[0,0]>; r11= <x[0,3]|x[0,2]> +- LDRD r2, OC_C5S3_4_v6 ; r2 = OC_C5S3; r3 = OC_C3S5 +- LDRD r4, [r1], #16 ; r4 = <x[1,1]|x[1,0]>; r5 = <??|x[1,2]> ++ LDRD r10,r11,[r1], #16 ; r10= <x[0,1]|x[0,0]>; r11= <x[0,3]|x[0,2]> ++ LDRD r2, r3, OC_C5S3_4_v6 ; r2 = OC_C5S3; r3 = OC_C3S5 ++ LDRD r4, r5, [r1], #16 ; r4 = <x[1,1]|x[1,0]>; r5 = <??|x[1,2]> + SMULWT r9, r3, r11 ; r9 = t[0,6]=OC_C3S5*x[0,3]>>16 + SMULWT r8, r2, r11 ; r8 = -t[0,5]=OC_C5S3*x[0,3]>>16 + PKHBT r9, r9, r2 ; r9 = <0|t[0,6]> +- LDRD r6, OC_C6S2_4_v6 ; r6 = OC_C6S2; r7 = OC_C2S6 ++ LDRD r6, r7, OC_C6S2_4_v6 ; r6 = OC_C6S2; r7 = OC_C2S6 + PKHBT r8, r8, r2 ; r9 = <0|-t[0,5]> + SMULWB r3, r7, r11 ; r3 = t[0,3]=OC_C2S6*x[0,2]>>16 + SMULWB r2, r6, r11 ; r2 = t[0,2]=OC_C6S2*x[0,2]>>16 +@@ -1180,7 +1180,7 @@ idct4_3core_v6 PROC + SMULWB r12,r11,r10 ; r12= t[0,0]=OC_C4S4*x[0,0]>>16 + PKHBT r2, r2, r5, LSL #16 ; r2 = <t[1,2]|t[0,2]> + SMULWB r5, r11,r4 ; r5 = t[1,0]=OC_C4S4*x[1,0]>>16 +- LDRD r6, OC_C7S1_4_v6 ; r6 = OC_C7S1; r7 = OC_C1S7 ++ LDRD r6, r7, OC_C7S1_4_v6 ; r6 = OC_C7S1; r7 = OC_C1S7 + PKHBT r12,r12,r5, LSL #16 ; r12= <t[1,0]|t[0,0]> + SMULWT r5, r7, r4 ; r5 = t[1,7]=OC_C1S7*x[1,1]>>16 + SMULWT r7, r7, r10 ; r7 = t[0,7]=OC_C1S7*x[0,1]>>16 +@@ -1247,11 +1247,11 @@ idct4_4core_down_v6 PROC + ; r0 = ogg_int16_t *_y (destination) + ; r1 = const ogg_int16_t *_x (source) + ; Stage 1: +- LDRD r10,[r1], #16 ; r10= <x[0,1]|x[0,0]>; r11= <x[0,3]|x[0,2]> +- LDRD r2, OC_C5S3_4_v6 ; r2 = OC_C5S3; r3 = OC_C3S5 +- LDRD r4, [r1], #16 ; r4 = <x[1,1]|x[1,0]>; r5 = <x[1,3]|x[1,2]> ++ LDRD r10,r11,[r1], #16 ; r10= <x[0,1]|x[0,0]>; r11= <x[0,3]|x[0,2]> ++ LDRD r2, r3, OC_C5S3_4_v6 ; r2 = OC_C5S3; r3 = OC_C3S5 ++ LDRD r4, r5, [r1], #16 ; r4 = <x[1,1]|x[1,0]>; r5 = <x[1,3]|x[1,2]> + SMULWT r9, r3, r11 ; r9 = t[0,6]=OC_C3S5*x[0,3]>>16 +- LDRD r6, OC_C6S2_4_v6 ; r6 = OC_C6S2; r7 = OC_C2S6 ++ LDRD r6, r7, OC_C6S2_4_v6 ; r6 = OC_C6S2; r7 = OC_C2S6 + SMULWT r8, r2, r11 ; r8 = -t[0,5]=OC_C5S3*x[0,3]>>16 + ; Here we cheat: row 3 had just a DC, so x[0,3]==x[1,3] by definition. + PKHBT r9, r9, r9, LSL #16 ; r9 = <t[0,6]|t[0,6]> +@@ -1266,7 +1266,7 @@ idct4_4core_down_v6 PROC + SMLAWB r12,r11,r10,r7 ; r12= t[0,0]+8=(OC_C4S4*x[0,0]>>16)+8 + PKHBT r2, r2, r5, LSL #16 ; r2 = <t[1,2]|t[0,2]> + SMLAWB r5, r11,r4 ,r7 ; r5 = t[1,0]+8=(OC_C4S4*x[1,0]>>16)+8 +- LDRD r6, OC_C7S1_4_v6 ; r6 = OC_C7S1; r7 = OC_C1S7 ++ LDRD r6, r7, OC_C7S1_4_v6 ; r6 = OC_C7S1; r7 = OC_C1S7 + PKHBT r12,r12,r5, LSL #16 ; r12= <t[1,0]+8|t[0,0]+8> + SMULWT r5, r7, r4 ; r5 = t[1,7]=OC_C1S7*x[1,1]>>16 + SMULWT r7, r7, r10 ; r7 = t[0,7]=OC_C1S7*x[0,1]>>16 +@@ -1296,7 +1296,7 @@ idct8_8core_v6 PROC + STMFD r13!,{r0,r14} + ; Stage 1: + ;5-6 rotation by 3pi/16 +- LDRD r10,OC_C5S3_4_v6 ; r10= OC_C5S3, r11= OC_C3S5 ++ LDRD r10,r11,OC_C5S3_4_v6 ; r10= OC_C5S3, r11= OC_C3S5 + LDR r4, [r1,#8] ; r4 = <x[0,5]|x[0,4]> + LDR r7, [r1,#24] ; r7 = <x[1,5]|x[1,4]> + SMULWT r5, r11,r4 ; r5 = OC_C3S5*x[0,5]>>16 +@@ -1313,7 +1313,7 @@ idct8_8core_v6 PROC + PKHBT r6, r6, r11,LSL #16 ; r6 = <t[1,6]|t[0,6]> + SMULWT r8, r10,r12 ; r8 = OC_C5S3*x[1,3]>>16 + ;2-3 rotation by 6pi/16 +- LDRD r10,OC_C6S2_4_v6 ; r10= OC_C6S2, r11= OC_C2S6 ++ LDRD r10,r11,OC_C6S2_4_v6 ; r10= OC_C6S2, r11= OC_C2S6 + PKHBT r3, r3, r8, LSL #16 ; r3 = <r8|r3> + LDR r8, [r1,#12] ; r8 = <x[0,7]|x[0,6]> + SMULWB r2, r10,r0 ; r2 = OC_C6S2*x[0,2]>>16 +@@ -1329,7 +1329,7 @@ idct8_8core_v6 PROC + PKHBT r3, r3, r10,LSL #16 ; r3 = <t[1,6]|t[0,6]> + SMULWB r12,r11,r7 ; r12= OC_C2S6*x[1,6]>>16 + ;4-7 rotation by 7pi/16 +- LDRD r10,OC_C7S1_8_v6 ; r10= OC_C7S1, r11= OC_C1S7 ++ LDRD r10,r11,OC_C7S1_8_v6 ; r10= OC_C7S1, r11= OC_C1S7 + PKHBT r9, r9, r12,LSL #16 ; r9 = <r9|r12> + LDR r0, [r1],#16 ; r0 = <x[0,1]|x[0,0]> + PKHTB r7, r7, r8, ASR #16 ; r7 = <x[1,7]|x[0,7]> +@@ -1395,7 +1395,7 @@ idct8_8core_down_v6 PROC + STMFD r13!,{r0,r14} + ; Stage 1: + ;5-6 rotation by 3pi/16 +- LDRD r10,OC_C5S3_8_v6 ; r10= OC_C5S3, r11= OC_C3S5 ++ LDRD r10,r11,OC_C5S3_8_v6 ; r10= OC_C5S3, r11= OC_C3S5 + LDR r4, [r1,#8] ; r4 = <x[0,5]|x[0,4]> + LDR r7, [r1,#24] ; r7 = <x[1,5]|x[1,4]> + SMULWT r5, r11,r4 ; r5 = OC_C3S5*x[0,5]>>16 +@@ -1412,7 +1412,7 @@ idct8_8core_down_v6 PROC + PKHBT r6, r6, r11,LSL #16 ; r6 = <t[1,6]|t[0,6]> + SMULWT r8, r10,r12 ; r8 = OC_C5S3*x[1,3]>>16 + ;2-3 rotation by 6pi/16 +- LDRD r10,OC_C6S2_8_v6 ; r10= OC_C6S2, r11= OC_C2S6 ++ LDRD r10,r11,OC_C6S2_8_v6 ; r10= OC_C6S2, r11= OC_C2S6 + PKHBT r3, r3, r8, LSL #16 ; r3 = <r8|r3> + LDR r8, [r1,#12] ; r8 = <x[0,7]|x[0,6]> + SMULWB r2, r10,r0 ; r2 = OC_C6S2*x[0,2]>>16 +@@ -1428,7 +1428,7 @@ idct8_8core_down_v6 PROC + PKHBT r3, r3, r10,LSL #16 ; r3 = <t[1,6]|t[0,6]> + SMULWB r12,r11,r7 ; r12= OC_C2S6*x[1,6]>>16 + ;4-7 rotation by 7pi/16 +- LDRD r10,OC_C7S1_8_v6 ; r10= OC_C7S1, r11= OC_C1S7 ++ LDRD r10,r11,OC_C7S1_8_v6 ; r10= OC_C7S1, r11= OC_C1S7 + PKHBT r9, r9, r12,LSL #16 ; r9 = <r9|r12> + LDR r0, [r1],#16 ; r0 = <x[0,1]|x[0,0]> + PKHTB r7, r7, r8, ASR #16 ; r7 = <x[1,7]|x[0,7]> diff --git a/www/firefox31/patches/patch-media_libyuv_include_libyuv_scale__row.h b/www/firefox31/patches/patch-media_libyuv_include_libyuv_scale__row.h new file mode 100644 index 00000000000..dd81ae248c1 --- /dev/null +++ b/www/firefox31/patches/patch-media_libyuv_include_libyuv_scale__row.h @@ -0,0 +1,17 @@ +$NetBSD: patch-media_libyuv_include_libyuv_scale__row.h,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- media/libyuv/include/libyuv/scale_row.h.orig 2015-04-10 18:40:37.000000000 +0000 ++++ media/libyuv/include/libyuv/scale_row.h +@@ -219,10 +219,10 @@ void ScaleARGBFilterCols_SSSE3(uint8* ds + void ScaleARGBColsUp2_SSE2(uint8* dst_argb, const uint8* src_argb, + int dst_width, int x, int dx); + // Row functions. +-void ScaleARGBRowDownEven_NEON(const uint8* src_argb, int src_stride, ++void ScaleARGBRowDownEven_NEON(const uint8* src_argb, ptrdiff_t src_stride, + int src_stepx, + uint8* dst_argb, int dst_width); +-void ScaleARGBRowDownEvenBox_NEON(const uint8* src_argb, int src_stride, ++void ScaleARGBRowDownEvenBox_NEON(const uint8* src_argb, ptrdiff_t src_stride, + int src_stepx, + uint8* dst_argb, int dst_width); + void ScaleARGBRowDown2_NEON(const uint8* src_ptr, ptrdiff_t src_stride, diff --git a/www/firefox31/patches/patch-mozglue_build_Makefile.in b/www/firefox31/patches/patch-mozglue_build_Makefile.in new file mode 100644 index 00000000000..9df6117760f --- /dev/null +++ b/www/firefox31/patches/patch-mozglue_build_Makefile.in @@ -0,0 +1,18 @@ +$NetBSD: patch-mozglue_build_Makefile.in,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- mozglue/build/Makefile.in.orig 2015-04-11 09:28:37.000000000 +0000 ++++ mozglue/build/Makefile.in +@@ -83,13 +83,6 @@ ifeq (android, $(MOZ_WIDGET_TOOLKIT)) + EXTRA_DSO_LDOPTS += -Wl,--wrap=pthread_atfork + endif + +-ifdef MOZ_LINKER +-ifeq (arm, $(TARGET_CPU)) +-EXTRA_DSO_LDOPTS += -Wl,-version-script,$(srcdir)/arm-eabi-filter +-endif +- +-endif +- + ifeq (Android, $(OS_TARGET)) + WRAP_LDFLAGS := $(filter -Wl%,$(WRAP_LDFLAGS)) + endif diff --git a/www/firefox31/patches/patch-xpcom_reflect_xptcall_src_md_unix_moz.build b/www/firefox31/patches/patch-xpcom_reflect_xptcall_src_md_unix_moz.build index 63426ab7d8c..0f435d71e72 100644 --- a/www/firefox31/patches/patch-xpcom_reflect_xptcall_src_md_unix_moz.build +++ b/www/firefox31/patches/patch-xpcom_reflect_xptcall_src_md_unix_moz.build @@ -1,10 +1,10 @@ -$NetBSD: patch-xpcom_reflect_xptcall_src_md_unix_moz.build,v 1.1 2014/11/03 12:18:32 ryoon Exp $ +$NetBSD: patch-xpcom_reflect_xptcall_src_md_unix_moz.build,v 1.2 2015/04/28 12:06:34 joerg Exp $ * Support NetBSD/amd64 and DragonFly/amd64. * OS_TEST can never be powerpc. ---- xpcom/reflect/xptcall/src/md/unix/moz.build.orig 2014-05-06 22:56:39.000000000 +0000 +--- xpcom/reflect/xptcall/src/md/unix/moz.build.orig 2015-03-21 03:27:27.000000000 +0000 +++ xpcom/reflect/xptcall/src/md/unix/moz.build @@ -9,7 +9,7 @@ if CONFIG['OS_ARCH'] == 'Darwin': 'xptcinvoke_darwin.cpp', @@ -32,3 +32,14 @@ $NetBSD: patch-xpcom_reflect_xptcall_src_md_unix_moz.build,v 1.1 2014/11/03 12:1 CONFIG['OS_ARCH'].startswith('GNU_'): if CONFIG['OS_TEST'] == 'x86_64': SOURCES += [ +@@ -102,8 +102,8 @@ if CONFIG['CPU_ARCH'] == 'arm' or CONFIG + CXXFLAGS += ['-O2'] + elif CONFIG['OS_ARCH'] == 'NetBSD': + SOURCES += [ +- 'xptcinvoke_arm_netbsd.cpp', +- 'xptcstubs_arm_netbsd.cpp', ++ 'xptcinvoke_arm.cpp', ++ 'xptcstubs_arm.cpp', + ] + + if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['OS_ARCH'] == 'OpenBSD': diff --git a/www/firefox31/patches/patch-xpcom_reflect_xptcall_src_md_unix_xptcstubs__arm.cpp b/www/firefox31/patches/patch-xpcom_reflect_xptcall_src_md_unix_xptcstubs__arm.cpp new file mode 100644 index 00000000000..5a1cad4b786 --- /dev/null +++ b/www/firefox31/patches/patch-xpcom_reflect_xptcall_src_md_unix_xptcstubs__arm.cpp @@ -0,0 +1,39 @@ +$NetBSD: patch-xpcom_reflect_xptcall_src_md_unix_xptcstubs__arm.cpp,v 1.1 2015/04/28 12:06:34 joerg Exp $ + +--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp.orig 2015-04-25 16:42:42.000000000 +0000 ++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp +@@ -130,24 +130,33 @@ __asm__ ("\n" + ".text\n" + ".align 2\n" + "SharedStub:\n" ++#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__) + ".fnstart\n" ++#endif + CFI(".cfi_startproc\n") + "stmfd sp!, {r1, r2, r3}\n" ++#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__) + ".save {r1, r2, r3}\n" ++#endif + CFI(".cfi_def_cfa_offset 12\n") + CFI(".cfi_offset r3, -4\n") + CFI(".cfi_offset r2, -8\n") + CFI(".cfi_offset r1, -12\n") + "mov r2, sp\n" + "str lr, [sp, #-4]!\n" ++#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__) + ".save {lr}\n" ++#endif + CFI(".cfi_def_cfa_offset 16\n") + CFI(".cfi_offset lr, -16\n") + "mov r1, ip\n" + "bl _PrepareAndDispatch\n" + "ldr pc, [sp], #16\n" + CFI(".cfi_endproc\n") +- ".fnend"); ++#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__) ++ ".fnend" ++#endif ++ ); + + /* + * Create sets of stubs to call the SharedStub. |