From: Mathieu Desnoyers Date: Wed, 2 Nov 2016 21:55:48 +0000 (-0600) Subject: rseq: do not set back rseq_cs to 0 X-Git-Url: http://git.efficios.com/?p=lttng-ust.git;a=commitdiff_plain;h=6b31d6698e018b0a6b5154af662f673f795d3688 rseq: do not set back rseq_cs to 0 Now done lazily by the kernel. Signed-off-by: Mathieu Desnoyers --- diff --git a/libringbuffer/rseq-arm.h b/libringbuffer/rseq-arm.h index 656b87ef..d4731c96 100644 --- a/libringbuffer/rseq-arm.h +++ b/libringbuffer/rseq-arm.h @@ -28,11 +28,6 @@ /* * The __rseq_table section can be used by debuggers to better handle * single-stepping through the restartable critical sections. - * - * Load the immediate value 0 into register r1 right after the ldr - * instruction to improve instruction-level parallelism: load the - * constant while the processor is stalled waiting for the load to - * complete, which is required by the following comparison and branch. */ #define RSEQ_FINISH_ASM(_target_final, _to_write_final, _start_value, \ @@ -53,7 +48,6 @@ do { \ "str r0, [%[rseq_cs]]\n\t" \ RSEQ_INJECT_ASM(2) \ "ldr r0, %[current_event_counter]\n\t" \ - "mov r1, #0\n\t" \ "cmp %[start_event_counter], r0\n\t" \ "bne 5f\n\t" \ RSEQ_INJECT_ASM(3) \ @@ -61,15 +55,12 @@ do { \ _final_store \ "2:\n\t" \ RSEQ_INJECT_ASM(5) \ - "str r1, [%[rseq_cs]]\n\t" \ _teardown \ "b 4f\n\t" \ ".balign 32\n\t" \ "3:\n\t" \ ".word 1b, 0x0, 2b, 0x0, 5f, 0x0, 0x0, 0x0\n\t" \ "5:\n\t" \ - "mov r1, #0\n\t" \ - "str r1, [%[rseq_cs]]\n\t" \ _teardown \ "b %l[failure]\n\t" \ "4:\n\t" \ @@ -80,7 +71,7 @@ do { \ _spec_input \ _final_input \ RSEQ_INJECT_INPUT \ - : "r0", "r1", "memory", "cc" \ + : "r0", "memory", "cc" \ _extra_clobber \ RSEQ_INJECT_CLOBBER \ : _failure \ diff --git a/libringbuffer/rseq-ppc.h b/libringbuffer/rseq-ppc.h index ac3c1862..5737b1af 100644 --- a/libringbuffer/rseq-ppc.h +++ b/libringbuffer/rseq-ppc.h @@ -66,13 +66,9 @@ _final_store \ "2:\n\t" \ RSEQ_INJECT_ASM(5) \ - "li %%r17, 0\n\t" \ - "std %%r17, 0(%[rseq_cs])\n\t" \ _teardown \ "b 5f\n\t" \ "4:\n\t" \ - "li %%r17, 0\n\t" \ - "std %%r17, 0(%[rseq_cs])\n\t" \ _teardown \ "b %l[failure]\n\t" \ "5:\n\t" \ @@ -172,13 +168,9 @@ _final_store \ "2:\n\t" \ RSEQ_INJECT_ASM(5) \ - "li %%r17, 0\n\t" \ - "stw %%r17, 0(%[rseq_cs])\n\t" \ _teardown \ "b 5f\n\t" \ "4:\n\t" \ - "li %%r17, 0\n\t" \ - "std %%r17, 0(%[rseq_cs])\n\t" \ _teardown \ "b %l[failure]\n\t" \ "5:\n\t" \ diff --git a/libringbuffer/rseq-x86.h b/libringbuffer/rseq-x86.h index 556f4544..0831b9c1 100644 --- a/libringbuffer/rseq-x86.h +++ b/libringbuffer/rseq-x86.h @@ -56,11 +56,9 @@ do { \ _final_store \ "2:\n\t" \ RSEQ_INJECT_ASM(5) \ - "movq $0, %[rseq_cs]\n\t" \ _teardown \ ".pushsection __rseq_failure, \"a\"\n\t" \ "4:\n\t" \ - "movq $0, %[rseq_cs]\n\t" \ _teardown \ "jmp %l[failure]\n\t" \ ".popsection\n\t" \ @@ -174,11 +172,9 @@ do { \ _final_store \ "2:\n\t" \ RSEQ_INJECT_ASM(5) \ - "movl $0, %[rseq_cs]\n\t" \ _teardown \ ".pushsection __rseq_failure, \"a\"\n\t" \ "4:\n\t" \ - "movl $0, %[rseq_cs]\n\t" \ _teardown \ "jmp %l[failure]\n\t" \ ".popsection\n\t" \