diff options
| -rw-r--r-- | tools/testing/selftests/rseq/rseq-x86.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/tools/testing/selftests/rseq/rseq-x86.h b/tools/testing/selftests/rseq/rseq-x86.h index 03095236f6fa..b2da6004fe30 100644 --- a/tools/testing/selftests/rseq/rseq-x86.h +++ b/tools/testing/selftests/rseq/rseq-x86.h | |||
| @@ -7,6 +7,13 @@ | |||
| 7 | 7 | ||
| 8 | #include <stdint.h> | 8 | #include <stdint.h> |
| 9 | 9 | ||
| 10 | /* | ||
| 11 | * RSEQ_SIG is used with the following reserved undefined instructions, which | ||
| 12 | * trap in user-space: | ||
| 13 | * | ||
| 14 | * x86-32: 0f b9 3d 53 30 05 53 ud1 0x53053053,%edi | ||
| 15 | * x86-64: 0f b9 3d 53 30 05 53 ud1 0x53053053(%rip),%edi | ||
| 16 | */ | ||
| 10 | #define RSEQ_SIG 0x53053053 | 17 | #define RSEQ_SIG 0x53053053 |
| 11 | 18 | ||
| 12 | /* | 19 | /* |
| @@ -88,8 +95,8 @@ do { \ | |||
| 88 | 95 | ||
| 89 | #define RSEQ_ASM_DEFINE_ABORT(label, teardown, abort_label) \ | 96 | #define RSEQ_ASM_DEFINE_ABORT(label, teardown, abort_label) \ |
| 90 | ".pushsection __rseq_failure, \"ax\"\n\t" \ | 97 | ".pushsection __rseq_failure, \"ax\"\n\t" \ |
| 91 | /* Disassembler-friendly signature: nopl <sig>(%rip). */\ | 98 | /* Disassembler-friendly signature: ud1 <sig>(%rip),%edi. */ \ |
| 92 | ".byte 0x0f, 0x1f, 0x05\n\t" \ | 99 | ".byte 0x0f, 0xb9, 0x3d\n\t" \ |
| 93 | ".long " __rseq_str(RSEQ_SIG) "\n\t" \ | 100 | ".long " __rseq_str(RSEQ_SIG) "\n\t" \ |
| 94 | __rseq_str(label) ":\n\t" \ | 101 | __rseq_str(label) ":\n\t" \ |
| 95 | teardown \ | 102 | teardown \ |
| @@ -609,8 +616,8 @@ do { \ | |||
| 609 | 616 | ||
| 610 | #define RSEQ_ASM_DEFINE_ABORT(label, teardown, abort_label) \ | 617 | #define RSEQ_ASM_DEFINE_ABORT(label, teardown, abort_label) \ |
| 611 | ".pushsection __rseq_failure, \"ax\"\n\t" \ | 618 | ".pushsection __rseq_failure, \"ax\"\n\t" \ |
| 612 | /* Disassembler-friendly signature: nopl <sig>. */ \ | 619 | /* Disassembler-friendly signature: ud1 <sig>,%edi. */ \ |
| 613 | ".byte 0x0f, 0x1f, 0x05\n\t" \ | 620 | ".byte 0x0f, 0xb9, 0x3d\n\t" \ |
| 614 | ".long " __rseq_str(RSEQ_SIG) "\n\t" \ | 621 | ".long " __rseq_str(RSEQ_SIG) "\n\t" \ |
| 615 | __rseq_str(label) ":\n\t" \ | 622 | __rseq_str(label) ":\n\t" \ |
| 616 | teardown \ | 623 | teardown \ |
