diff options
author | Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | 2024-02-29 09:45:04 -0500 |
---|---|---|
committer | Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | 2024-02-29 09:52:00 -0500 |
commit | 9dc22f846d7f11a9b14dd87911afb2275911c100 (patch) | |
tree | 43195450638513f1f41c31e2e1b8a5bfd2a888d0 | |
parent | 4cf5dcc5791083faada3cb94316f083885e726bd (diff) | |
download | librseq-9dc22f846d7f11a9b14dd87911afb2275911c100.tar.gz |
riscv: Introduce RSEQ_ASM_U64_PTR and RSEQ_ASM_U32
These will allow moving __RSEQ_ASM_DEFINE_TABLE and
RSEQ_ASM_DEFINE_EXIT_POINT to a generic common header file.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I9cac7076b9ef9bd7dd4a818b9ad7aae1df45ff5a
-rw-r--r-- | include/rseq/arch/riscv.h | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/include/rseq/arch/riscv.h b/include/rseq/arch/riscv.h index 898958c..3cfb9ac 100644 --- a/include/rseq/arch/riscv.h +++ b/include/rseq/arch/riscv.h @@ -77,6 +77,9 @@ do { \ RSEQ_WRITE_ONCE(*(p), v); \ } while (0) +#define RSEQ_ASM_U64_PTR(x) ".quad " x +#define RSEQ_ASM_U32(x) ".long " x + /* Temporary registers. */ #define RSEQ_ASM_TMP_REG_1 "t6" #define RSEQ_ASM_TMP_REG_2 "t5" @@ -89,13 +92,14 @@ do { \ ".pushsection __rseq_cs, \"aw\"\n" \ ".balign 32\n" \ __rseq_str(label) ":\n" \ - ".long " __rseq_str(version) ", " __rseq_str(flags) "\n" \ - ".quad " __rseq_str(start_ip) ", " \ - __rseq_str(post_commit_offset) ", " \ - __rseq_str(abort_ip) "\n" \ + RSEQ_ASM_U32(__rseq_str(version)) "\n" \ + RSEQ_ASM_U32(__rseq_str(flags)) "\n" \ + RSEQ_ASM_U64_PTR(__rseq_str(start_ip)) "\n" \ + RSEQ_ASM_U64_PTR(__rseq_str(post_commit_offset)) "\n" \ + RSEQ_ASM_U64_PTR(__rseq_str(abort_ip)) "\n" \ ".popsection\n\t" \ ".pushsection __rseq_cs_ptr_array, \"aw\"\n" \ - ".quad " __rseq_str(label) "b\n" \ + RSEQ_ASM_U64_PTR(__rseq_str(label) "b") "\n" \ ".popsection\n" /* @@ -137,7 +141,8 @@ do { \ */ #define RSEQ_ASM_DEFINE_EXIT_POINT(start_ip, exit_ip) \ ".pushsection __rseq_exit_point_array, \"aw\"\n" \ - ".quad " __rseq_str(start_ip) ", " __rseq_str(exit_ip) "\n" \ + RSEQ_ASM_U64_PTR(__rseq_str(start_ip)) "\n" \ + RSEQ_ASM_U64_PTR(__rseq_str(exit_ip)) "\n" \ ".popsection\n" /* @@ -153,7 +158,7 @@ do { \ #define RSEQ_ASM_DEFINE_ABORT(label, teardown, abort_label) \ "j 222f\n" \ ".balign 4\n" \ - ".long " __rseq_str(RSEQ_SIG) "\n" \ + RSEQ_ASM_U32(__rseq_str(RSEQ_SIG)) "\n" \ __rseq_str(label) ":\n" \ teardown \ "j %l[" __rseq_str(abort_label) "]\n" \ |