configure: Revamp MIPS architecture version+revision detection

This allows us to easily distinguish between mips32 and mips32r2

(Works at least as far back as gcc 4.9)

Change-Id: I2bcba194fd9cbeedf76cea739252271908bf73d0
This commit is contained in:
Solomon Peachy 2025-12-06 14:58:40 -05:00
parent 5e5b434ce8
commit 6c6bdbf60e
3 changed files with 7 additions and 3 deletions

View file

@ -1,4 +1,4 @@
#if CPU_MIPS == 32 #if (CPU_MIPS == 32) || (CPU_MIPS == 32r2)
#include "thread-mips32.c" #include "thread-mips32.c"
#else #else
#error Missing thread impl #error Missing thread impl

View file

@ -729,7 +729,7 @@ Lyre prototype 1 */
#endif #endif
#if ARCH == ARCH_MIPS #if ARCH == ARCH_MIPS
#define CPU_MIPS ARCH_VERSION /* 32, 64 */ #define CPU_MIPS ARCH_VERSION /* 32, 32r2, 64 */
#endif #endif
#endif /*__PCTOOL__*/ #endif /*__PCTOOL__*/

6
tools/configure vendored
View file

@ -4784,7 +4784,11 @@ if [ -z "$arch" ]; then
esac esac
elif [ -n "$(echo $cpp_defines | grep -w __mips__)" ]; then elif [ -n "$(echo $cpp_defines | grep -w __mips__)" ]; then
arch="mips" arch="mips"
arch_version="$(echo $cpp_defines | tr ' ' '\012' | grep _MIPS_ARCH_MIPS | sed -e 's,.*\([0-9][0-9]\).*,\1,' | grep -v _MIPS_ARCH_MIPS)" arch_version="$(echo "$cpp_defines" | grep 'define __mips ' | sed -e 's,.* \([0-9]\+\).*,\1,')"
arch_revision="$(echo "$cpp_defines" | grep 'define __mips_isa_rev ' | sed -e 's,.* \([0-9]\+\).*,\1,')"
if [ -n "$arch_revision" ] ; then
arch_version="${arch_version}r${arch_revision}"
fi
elif [ -n "$(echo $cpp_defines | grep -w __i386__)" ]; then elif [ -n "$(echo $cpp_defines | grep -w __i386__)" ]; then
arch="x86" arch="x86"
elif [ -n "$(echo $cpp_defines | grep -w __x86_64__)" ]; then elif [ -n "$(echo $cpp_defines | grep -w __x86_64__)" ]; then