#ifdef __s390x__
+#define RSEQ_CS_PTR rseq_cs.ptr
+
#define LONG_L "lg"
#define LONG_S "stg"
#define LONG_LT_R "ltgr"
#elif __s390__
+#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" \
: /* 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)
: /* 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),
: /* 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)
: /* 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),
: /* 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),
: /* 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),