summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-01-23 09:57:46 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-01-24 11:34:30 +0000
commitb0649df7d69a3db1538c62c624eda42a6326110b (patch)
treee49a5614db41adf394fed3a417878a3825df5d59
parent74819c4ed95af98d3caf5144f44123dee0149e45 (diff)
Fix MIPS32 processor detection
Gcc defines neither _MIPS_ARCH_MIPS32 nor __mips32 on MIPS32 architectures, instead __mips is defined to 32. This fix exposed bit-rot in qdrawhelper where qt_memfill32 was set as a function pointer despite not being one since Qt4. Change-Id: I87461823e54fa3166223ebf97175fd05d2f2fd16 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--src/corelib/global/qprocessordetection.h6
-rw-r--r--src/gui/painting/qdrawhelper.cpp14
-rw-r--r--src/gui/painting/qdrawhelper_mips_dsp.cpp5
3 files changed, 9 insertions, 16 deletions
diff --git a/src/corelib/global/qprocessordetection.h b/src/corelib/global/qprocessordetection.h
index 566d76d3d2..55fcb37093 100644
--- a/src/corelib/global/qprocessordetection.h
+++ b/src/corelib/global/qprocessordetection.h
@@ -231,9 +231,6 @@
# if defined(_MIPS_ARCH_MIPS2) || (defined(__mips) && __mips - 0 >= 2)
# define Q_PROCESSOR_MIPS_II
# endif
-# if defined(_MIPS_ARCH_MIPS32) || defined(__mips32)
-# define Q_PROCESSOR_MIPS_32
-# endif
# if defined(_MIPS_ARCH_MIPS3) || (defined(__mips) && __mips - 0 >= 3)
# define Q_PROCESSOR_MIPS_III
# endif
@@ -243,6 +240,9 @@
# if defined(_MIPS_ARCH_MIPS5) || (defined(__mips) && __mips - 0 >= 5)
# define Q_PROCESSOR_MIPS_V
# endif
+# if defined(_MIPS_ARCH_MIPS32) || defined(__mips32) || (defined(__mips) && __mips - 0 >= 32)
+# define Q_PROCESSOR_MIPS_32
+# endif
# if defined(_MIPS_ARCH_MIPS64) || defined(__mips64)
# define Q_PROCESSOR_MIPS_64
# define Q_PROCESSOR_WORDSIZE 8
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index adc28f07d3..298304c4ef 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -6030,18 +6030,10 @@ void qt_memfill16(quint16 *dest, quint16 color, int count)
qt_memfill_template<quint16>(dest, color, count);
}
#endif
-#if !defined(__SSE2__) && !defined(__ARM_NEON__)
-# ifdef QT_COMPILER_SUPPORTS_MIPS_DSP
-extern "C" void qt_memfill32_asm_mips_dsp(quint32 *, quint32, int);
-# endif
-
+#if !defined(__SSE2__) && !defined(__ARM_NEON__) && !defined(__mips_dsp)
void qt_memfill32(quint32 *dest, quint32 color, int count)
{
-# ifdef QT_COMPILER_SUPPORTS_MIPS_DSP
- qt_memfill32_asm_mips_dsp(dest, color, count);
-# else
qt_memfill_template<quint32>(dest, color, count);
-# endif
}
#endif
@@ -6233,10 +6225,6 @@ static void qInitDrawhelperFunctions()
#endif
-#if defined(Q_PROCESSOR_MIPS_32) && defined(QT_COMPILER_SUPPORTS_MIPS_DSP)
- qt_memfill32 = qt_memfill32_asm_mips_dsp;
-#endif // Q_PROCESSOR_MIPS_32
-
#if defined(QT_COMPILER_SUPPORTS_MIPS_DSP) || defined(QT_COMPILER_SUPPORTS_MIPS_DSPR2)
if (qCpuHasFeature(DSP) && qCpuHasFeature(DSPR2)) {
// Composition functions are all DSP r1
diff --git a/src/gui/painting/qdrawhelper_mips_dsp.cpp b/src/gui/painting/qdrawhelper_mips_dsp.cpp
index b72ca3da3d..783e481296 100644
--- a/src/gui/painting/qdrawhelper_mips_dsp.cpp
+++ b/src/gui/painting/qdrawhelper_mips_dsp.cpp
@@ -43,6 +43,11 @@
QT_BEGIN_NAMESPACE
+void qt_memfill32(quint32 *dest, quint32 color, int count)
+{
+ qt_memfill32_asm_mips_dsp(dest, color, count);
+}
+
void qt_blend_argb32_on_argb32_mips_dsp(uchar *destPixels, int dbpl,
const uchar *srcPixels, int sbpl,
int w, int h,