Support MIPS atomic on pre-MIPS32 architectures
authorAurelien Jarno <aurelien@aurel32.net>
Sun, 10 Nov 2013 22:20:46 +0000 (23:20 +0100)
committerThiago Macieira <thiago.macieira@intel.com>
Fri, 27 Jun 2014 01:19:02 +0000 (03:19 +0200)
commit60b6b28c213a420ee40e254ff1823876098e0a04
treec8ed53a71164bc66755cc72134417895651c43d1
parentdd91f8d46dbdf62cc276bc204425c4ae106d913e
Support MIPS atomic on pre-MIPS32 architectures

The atomic functions on MIPS are based on the sync opcode with an
immediate argument, which is something introduced in the MIPS32
instruction set. This prevent to use Qt on pre-MIPS32 CPU, like the
Loongson 2 CPU.

However some of the pre-MIPS32 CPUs interprets the sync opcode with and
immediate argument as a sync opcode without argument (which is a stronger
ordering than with the argument), and for the others the kernel emulates
it.

It is therefore fine to use the current MIPS atomic functions on
pre-MIPS32 CPU. This patch allows that by temporarily changing the
instruction set to MIPS32 around the sync instruction, so that binutils
doesn't choke on it.

Change-Id: I9cc984bd55b5f172736ce9e638a6f4e271b79fe7
Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
src/corelib/arch/qatomic_mips.h