[MIPS] Fix *_SUB instruction macros
Commit Message
While doing some work in glibc, I noticed that some of the *_SUB instruction
macros in sysdeps/mips/sys/asm.h are defined to do addition instructions
instead of subtraction instructions. I don't know why this is but it seems
obviously wrong and it is different then the definitions in the linux kernel
which do define these as subtract instructions (arch/mips/include/asm/asm.h).
This patch changes the macros to do sub instructions instead of add.
OK to checkin?
Steve Ellcey
sellcey@mips.com
2014-05-07 Steve Ellcey <sellcey@mips.com>
* sysdeps/mips/sys/asm.h (INT_SUB): Fix definition.
(LONG_SUB): Ditto.
(PTR_SUB): Ditto.
Comments
On Wed, 7 May 2014, Steve Ellcey wrote:
> While doing some work in glibc, I noticed that some of the *_SUB instruction
> macros in sysdeps/mips/sys/asm.h are defined to do addition instructions
> instead of subtraction instructions. I don't know why this is but it seems
> obviously wrong and it is different then the definitions in the linux kernel
> which do define these as subtract instructions (arch/mips/include/asm/asm.h).
>
> This patch changes the macros to do sub instructions instead of add.
>
> OK to checkin?
OK, but please file a bug in Bugzilla first (and the use the [BZ #N]
notation in your ChangeLog entry, add the bug to the list of fixed bugs in
NEWS and close the bug after checking in the fix), since this was a
user-visible bug in releases.
@@ -326,7 +326,7 @@ symbol = value
# define INT_ADDI addi
# define INT_ADDU addu
# define INT_ADDIU addiu
-# define INT_SUB add
+# define INT_SUB sub
# define INT_SUBI subi
# define INT_SUBU subu
# define INT_SUBIU subu
@@ -339,7 +339,7 @@ symbol = value
# define INT_ADDI daddi
# define INT_ADDU daddu
# define INT_ADDIU daddiu
-# define INT_SUB dadd
+# define INT_SUB dsub
# define INT_SUBI dsubi
# define INT_SUBU dsubu
# define INT_SUBIU dsubu
@@ -355,7 +355,7 @@ symbol = value
# define LONG_ADDI addi
# define LONG_ADDU addu
# define LONG_ADDIU addiu
-# define LONG_SUB add
+# define LONG_SUB sub
# define LONG_SUBI subi
# define LONG_SUBU subu
# define LONG_SUBIU subu
@@ -374,7 +374,7 @@ symbol = value
# define LONG_ADDI daddi
# define LONG_ADDU daddu
# define LONG_ADDIU daddiu
-# define LONG_SUB dadd
+# define LONG_SUB dsub
# define LONG_SUBI dsubi
# define LONG_SUBU dsubu
# define LONG_SUBIU dsubu
@@ -396,7 +396,7 @@ symbol = value
# define PTR_ADDI addi
# define PTR_ADDU addu
# define PTR_ADDIU addiu
-# define PTR_SUB add
+# define PTR_SUB sub
# define PTR_SUBI subi
# define PTR_SUBU subu
# define PTR_SUBIU subu
@@ -418,7 +418,7 @@ symbol = value
# define PTR_ADDI addi
# define PTR_ADDU add /* no u */
# define PTR_ADDIU addi /* no u */
-# define PTR_SUB add
+# define PTR_SUB sub
# define PTR_SUBI subi
# define PTR_SUBU sub /* no u */
# define PTR_SUBIU sub /* no u */
@@ -441,7 +441,7 @@ symbol = value
# define PTR_ADDI daddi
# define PTR_ADDU daddu
# define PTR_ADDIU daddiu
-# define PTR_SUB dadd
+# define PTR_SUB dsub
# define PTR_SUBI dsubi
# define PTR_SUBU dsubu
# define PTR_SUBIU dsubu