summaryrefslogtreecommitdiff
path: root/gcc/config/mips/mips.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/mips/mips.h')
-rw-r--r--gcc/config/mips/mips.h21
1 files changed, 18 insertions, 3 deletions
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index cda433aa4f0..9f59f1a2550 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -1936,7 +1936,7 @@ enum reg_class
If `ACCUMULATE_OUTGOING_ARGS' is also defined, the only effect
of this macro is to determine whether the space is included in
`crtl->outgoing_args_size'. */
-#define OUTGOING_REG_PARM_STACK_SPACE 1
+#define OUTGOING_REG_PARM_STACK_SPACE(FNTYPE) 1
#define STACK_BOUNDARY (TARGET_NEWABI ? 128 : 64)
@@ -2902,7 +2902,8 @@ while (0)
"\tsc" SUFFIX "\t%@,%1\n" \
"\tbeq\t%@,%.,1b\n" \
"\tnop\n" \
- "2:\tsync%-%]%>%)"
+ "\tsync%-%]%>%)\n" \
+ "2:\n"
/* Return an asm string that atomically:
@@ -2919,7 +2920,7 @@ while (0)
"%(%<%[%|sync\n" \
"1:\tll\t%0,%1\n" \
"\tand\t%@,%0,%2\n" \
- "\tbne\t%@,%4,2f\n" \
+ "\tbne\t%@,%z4,2f\n" \
"\tand\t%@,%0,%3\n" \
"\tor\t%@,%@,%5\n" \
"\tsc\t%@,%1\n" \
@@ -2928,6 +2929,20 @@ while (0)
"\tsync%-%]%>%)\n" \
"2:\n"
+/* Like MIPS_COMPARE_AND_SWAP_12, except %5 is a constant zero,
+ so the OR can be omitted. */
+#define MIPS_COMPARE_AND_SWAP_12_0 \
+ "%(%<%[%|sync\n" \
+ "1:\tll\t%0,%1\n" \
+ "\tand\t%@,%0,%2\n" \
+ "\tbne\t%@,%z4,2f\n" \
+ "\tand\t%@,%0,%3\n" \
+ "\tsc\t%@,%1\n" \
+ "\tbeq\t%@,%.,1b\n" \
+ "\tnop\n" \
+ "\tsync%-%]%>%)\n" \
+ "2:\n"
+
/* Return an asm string that atomically:
- Sets memory reference %0 to %0 INSN %1.