Fix: ppc32: wrong rseq_cs 32-bit field pointer field on big endian
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 21 Jan 2022 15:37:55 +0000 (10:37 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 21 Jan 2022 15:37:55 +0000 (10:37 -0500)
Update the ptr32 field, not padding.

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

include/rseq/rseq-ppc.h

index 727b567f05523ef5bbac973825992c53c5e46d7e..13c6fab911244ee5374309ec6df4087dc1e0a671 100644 (file)
@@ -55,6 +55,8 @@ do {                                                                  \
 #define RSEQ_CMP_LONG          "cmpd "
 #define RSEQ_CMP_LONG_INT      "cmpdi "
 
+#define RSEQ_CS_PTR            rseq_cs.ptr
+
 #define __RSEQ_ASM_DEFINE_TABLE(label, version, flags,                         \
                        start_ip, post_commit_offset, abort_ip)                 \
                ".pushsection __rseq_cs, \"aw\"\n\t"                            \
@@ -100,6 +102,8 @@ do {                                                                        \
 #define RSEQ_CMP_LONG          "cmpw "
 #define RSEQ_CMP_LONG_INT      "cmpwi "
 
+#define RSEQ_CS_PTR            rseq_cs.ptr.ptr32
+
 #define __RSEQ_ASM_DEFINE_TABLE(label, version, flags,                         \
                        start_ip, post_commit_offset, abort_ip)                 \
                ".pushsection __rseq_cs, \"aw\"\n\t"                            \
@@ -242,7 +246,7 @@ int rseq_cmpeqv_storev(intptr_t *v, intptr_t expect, intptr_t newv, int cpu)
                : /* gcc asm goto does not allow outputs */
                : [cpu_id]              "r" (cpu),
                  [current_cpu_id]      "m" (rseq_get_abi()->cpu_id),
-                 [rseq_cs]             "m" (rseq_get_abi()->rseq_cs),
+                 [rseq_cs]             "m" (rseq_get_abi()->RSEQ_CS_PTR),
                  [v]                   "m" (*v),
                  [expect]              "r" (expect),
                  [newv]                "r" (newv)
@@ -313,7 +317,7 @@ int rseq_cmpnev_storeoffp_load(intptr_t *v, intptr_t expectnot,
                : /* gcc asm goto does not allow outputs */
                : [cpu_id]              "r" (cpu),
                  [current_cpu_id]      "m" (rseq_get_abi()->cpu_id),
-                 [rseq_cs]             "m" (rseq_get_abi()->rseq_cs),
+                 [rseq_cs]             "m" (rseq_get_abi()->RSEQ_CS_PTR),
                  /* final store input */
                  [v]                   "m" (*v),
                  [expectnot]           "r" (expectnot),
@@ -376,7 +380,7 @@ int rseq_addv(intptr_t *v, intptr_t count, int cpu)
                : /* gcc asm goto does not allow outputs */
                : [cpu_id]              "r" (cpu),
                  [current_cpu_id]      "m" (rseq_get_abi()->cpu_id),
-                 [rseq_cs]             "m" (rseq_get_abi()->rseq_cs),
+                 [rseq_cs]             "m" (rseq_get_abi()->RSEQ_CS_PTR),
                  /* final store input */
                  [v]                   "m" (*v),
                  [count]               "r" (count)
@@ -439,7 +443,7 @@ int rseq_cmpeqv_trystorev_storev(intptr_t *v, intptr_t expect,
                : /* gcc asm goto does not allow outputs */
                : [cpu_id]              "r" (cpu),
                  [current_cpu_id]      "m" (rseq_get_abi()->cpu_id),
-                 [rseq_cs]             "m" (rseq_get_abi()->rseq_cs),
+                 [rseq_cs]             "m" (rseq_get_abi()->RSEQ_CS_PTR),
                  /* try store input */
                  [v2]                  "m" (*v2),
                  [newv2]               "r" (newv2),
@@ -514,7 +518,7 @@ int rseq_cmpeqv_trystorev_storev_release(intptr_t *v, intptr_t expect,
                : /* gcc asm goto does not allow outputs */
                : [cpu_id]              "r" (cpu),
                  [current_cpu_id]      "m" (rseq_get_abi()->cpu_id),
-                 [rseq_cs]             "m" (rseq_get_abi()->rseq_cs),
+                 [rseq_cs]             "m" (rseq_get_abi()->RSEQ_CS_PTR),
                  /* try store input */
                  [v2]                  "m" (*v2),
                  [newv2]               "r" (newv2),
@@ -590,7 +594,7 @@ int rseq_cmpeqv_cmpeqv_storev(intptr_t *v, intptr_t expect,
                : /* gcc asm goto does not allow outputs */
                : [cpu_id]              "r" (cpu),
                  [current_cpu_id]      "m" (rseq_get_abi()->cpu_id),
-                 [rseq_cs]             "m" (rseq_get_abi()->rseq_cs),
+                 [rseq_cs]             "m" (rseq_get_abi()->RSEQ_CS_PTR),
                  /* cmp2 input */
                  [v2]                  "m" (*v2),
                  [expect2]             "r" (expect2),
@@ -671,7 +675,7 @@ int rseq_cmpeqv_trymemcpy_storev(intptr_t *v, intptr_t expect,
                : /* gcc asm goto does not allow outputs */
                : [cpu_id]              "r" (cpu),
                  [current_cpu_id]      "m" (rseq_get_abi()->cpu_id),
-                 [rseq_cs]             "m" (rseq_get_abi()->rseq_cs),
+                 [rseq_cs]             "m" (rseq_get_abi()->RSEQ_CS_PTR),
                  /* final store input */
                  [v]                   "m" (*v),
                  [expect]              "r" (expect),
@@ -752,7 +756,7 @@ int rseq_cmpeqv_trymemcpy_storev_release(intptr_t *v, intptr_t expect,
                : /* gcc asm goto does not allow outputs */
                : [cpu_id]              "r" (cpu),
                  [current_cpu_id]      "m" (rseq_get_abi()->cpu_id),
-                 [rseq_cs]             "m" (rseq_get_abi()->rseq_cs),
+                 [rseq_cs]             "m" (rseq_get_abi()->RSEQ_CS_PTR),
                  /* final store input */
                  [v]                   "m" (*v),
                  [expect]              "r" (expect),
This page took 0.034795 seconds and 4 git commands to generate.