From b0649df7d69a3db1538c62c624eda42a6326110b Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 23 Jan 2017 09:57:46 +0100 Subject: [PATCH] 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 --- src/corelib/global/qprocessordetection.h | 6 +++--- src/gui/painting/qdrawhelper.cpp | 14 +------------- src/gui/painting/qdrawhelper_mips_dsp.cpp | 5 +++++ 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(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(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,