RSEQ_ASM_DEFINE_ABORT(4, abort)
                                  : /* gcc asm goto does not allow outputs */
                                  : [cpu_id]            "r" (cpu),
-                                   [current_cpu_id]    "m" (__rseq_abi.cpu_id),
-                                   [rseq_cs]           "m" (__rseq_abi.rseq_cs),
+                                   [current_cpu_id]    "m" (rseq_get_abi()->cpu_id),
+                                   [rseq_cs]           "m" (rseq_get_abi()->rseq_cs.arch.ptr),
                                    [v]                 "m" (*v),
                                    [expect]            "r" (expect),
                                    [newv]              "r" (newv)
                                  RSEQ_ASM_DEFINE_ABORT(4, abort)
                                  : /* gcc asm goto does not allow outputs */
                                  : [cpu_id]            "r" (cpu),
-                                   [current_cpu_id]    "m" (__rseq_abi.cpu_id),
-                                   [rseq_cs]           "m" (__rseq_abi.rseq_cs),
+                                   [current_cpu_id]    "m" (rseq_get_abi()->cpu_id),
+                                   [rseq_cs]           "m" (rseq_get_abi()->rseq_cs.arch.ptr),
                                    [v]                 "m" (*v),
                                    [expectnot]         "r" (expectnot),
                                    [load]              "m" (*load),
                                  RSEQ_ASM_DEFINE_ABORT(4, abort)
                                  : /* gcc asm goto does not allow outputs */
                                  : [cpu_id]            "r" (cpu),
-                                   [current_cpu_id]    "m" (__rseq_abi.cpu_id),
-                                   [rseq_cs]           "m" (__rseq_abi.rseq_cs),
+                                   [current_cpu_id]    "m" (rseq_get_abi()->cpu_id),
+                                   [rseq_cs]           "m" (rseq_get_abi()->rseq_cs.arch.ptr),
                                    [v]                 "m" (*v),
                                    [count]             "r" (count)
                                    RSEQ_INJECT_INPUT
                                  RSEQ_ASM_DEFINE_ABORT(4, abort)
                                  : /* gcc asm goto does not allow outputs */
                                  : [cpu_id]            "r" (cpu),
-                                   [current_cpu_id]    "m" (__rseq_abi.cpu_id),
-                                   [rseq_cs]           "m" (__rseq_abi.rseq_cs),
+                                   [current_cpu_id]    "m" (rseq_get_abi()->cpu_id),
+                                   [rseq_cs]           "m" (rseq_get_abi()->rseq_cs.arch.ptr),
                                    [expect]            "r" (expect),
                                    [v]                 "m" (*v),
                                    [newv]              "r" (newv),
                                  RSEQ_ASM_DEFINE_ABORT(4, abort)
                                  : /* gcc asm goto does not allow outputs */
                                  : [cpu_id]            "r" (cpu),
-                                   [current_cpu_id]    "m" (__rseq_abi.cpu_id),
-                                   [rseq_cs]           "m" (__rseq_abi.rseq_cs),
+                                   [current_cpu_id]    "m" (rseq_get_abi()->cpu_id),
+                                   [rseq_cs]           "m" (rseq_get_abi()->rseq_cs.arch.ptr),
                                    [expect]            "r" (expect),
                                    [v]                 "m" (*v),
                                    [newv]              "r" (newv),
                                  RSEQ_ASM_DEFINE_ABORT(4, abort)
                                  : /* gcc asm goto does not allow outputs */
                                  : [cpu_id]            "r" (cpu),
-                                   [current_cpu_id]    "m" (__rseq_abi.cpu_id),
-                                   [rseq_cs]           "m" (__rseq_abi.rseq_cs),
+                                   [current_cpu_id]    "m" (rseq_get_abi()->cpu_id),
+                                   [rseq_cs]           "m" (rseq_get_abi()->rseq_cs.arch.ptr),
                                    [v]                 "m" (*v),
                                    [expect]            "r" (expect),
                                    [v2]                        "m" (*v2),
                                  RSEQ_ASM_DEFINE_ABORT(4, abort)
                                  : /* gcc asm goto does not allow outputs */
                                  : [cpu_id]            "r" (cpu),
-                                   [current_cpu_id]    "m" (__rseq_abi.cpu_id),
-                                   [rseq_cs]           "m" (__rseq_abi.rseq_cs),
+                                   [current_cpu_id]    "m" (rseq_get_abi()->cpu_id),
+                                   [rseq_cs]           "m" (rseq_get_abi()->rseq_cs.arch.ptr),
                                    [expect]            "r" (expect),
                                    [v]                 "m" (*v),
                                    [newv]              "r" (newv),
                                  RSEQ_ASM_DEFINE_ABORT(4, abort)
                                  : /* gcc asm goto does not allow outputs */
                                  : [cpu_id]            "r" (cpu),
-                                   [current_cpu_id]    "m" (__rseq_abi.cpu_id),
-                                   [rseq_cs]           "m" (__rseq_abi.rseq_cs),
+                                   [current_cpu_id]    "m" (rseq_get_abi()->cpu_id),
+                                   [rseq_cs]           "m" (rseq_get_abi()->rseq_cs.arch.ptr),
                                    [expect]            "r" (expect),
                                    [v]                 "m" (*v),
                                    [newv]              "r" (newv),
                                  RSEQ_ASM_DEFINE_ABORT(4, abort)
                                  : /* gcc asm goto does not allow outputs */
                                  : [cpu_id]            "r" (cpu),
-                                   [current_cpu_id]      "m" (__rseq_abi.cpu_id),
-                                   [rseq_cs]           "m" (__rseq_abi.rseq_cs),
+                                   [current_cpu_id]      "m" (rseq_get_abi()->cpu_id),
+                                   [rseq_cs]           "m" (rseq_get_abi()->rseq_cs.arch.ptr),
                                    [ptr]                       "r" (ptr),
                                    [off]                       "er" (off),
                                    [inc]                       "er" (inc)