Fix: ppc32: do not produce cmpdi invalid instruction
[librseq.git] / 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.023138 seconds and 4 git commands to generate.