Fix: ppc32: do not produce cmpdi invalid instruction
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 21 Jan 2022 15:32:35 +0000 (10:32 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 21 Jan 2022 15:32:35 +0000 (10:32 -0500)
Introduce RSEQ_CMP_LONG_INT to fix this.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I02e216edde9ceed14777db2789e7297118503683

include/rseq/rseq-ppc.h

index 86c044f78aa7a64ef418bdc507af0b653c906976..727b567f05523ef5bbac973825992c53c5e46d7e 100644 (file)
@@ -53,6 +53,7 @@ do {                                                                  \
 #define RSEQ_LOAD_INT(arg)     "lwz%U[" __rseq_str(arg) "]%X[" __rseq_str(arg) "] "    /* From memory ("m" constraint) */
 #define RSEQ_LOADX_LONG                "ldx "                                                  /* From base register ("b" constraint) */
 #define RSEQ_CMP_LONG          "cmpd "
+#define RSEQ_CMP_LONG_INT      "cmpdi "
 
 #define __RSEQ_ASM_DEFINE_TABLE(label, version, flags,                         \
                        start_ip, post_commit_offset, abort_ip)                 \
@@ -97,6 +98,7 @@ do {                                                                  \
 #define RSEQ_LOAD_INT(arg)     RSEQ_LOAD_LONG(arg)                                     /* From memory ("m" constraint) */
 #define RSEQ_LOADX_LONG                "lwzx "                                                 /* From base register ("b" constraint) */
 #define RSEQ_CMP_LONG          "cmpw "
+#define RSEQ_CMP_LONG_INT      "cmpwi "
 
 #define __RSEQ_ASM_DEFINE_TABLE(label, version, flags,                         \
                        start_ip, post_commit_offset, abort_ip)                 \
@@ -187,7 +189,7 @@ do {                                                                        \
 
 /* TODO: implement a faster memcpy. */
 #define RSEQ_ASM_OP_R_MEMCPY() \
-               "cmpdi %%r19, 0\n\t" \
+               RSEQ_CMP_LONG_INT "%%r19, 0\n\t" \
                "beq 333f\n\t" \
                "addi %%r20, %%r20, -1\n\t" \
                "addi %%r21, %%r21, -1\n\t" \
@@ -195,7 +197,7 @@ do {                                                                        \
                "lbzu %%r18, 1(%%r20)\n\t" \
                "stbu %%r18, 1(%%r21)\n\t" \
                "addi %%r19, %%r19, -1\n\t" \
-               "cmpdi %%r19, 0\n\t" \
+               RSEQ_CMP_LONG_INT "%%r19, 0\n\t" \
                "bne 222b\n\t" \
                "333:\n\t" \
 
This page took 0.025684 seconds and 4 git commands to generate.