From 59b64ff686cef2a87e9552658b2c8d2531f87176 Mon Sep 17 00:00:00 2001 From: Alexander Monakov Date: Tue, 11 Aug 2020 21:11:16 +0300 Subject: setjmp: optimize x86 longjmp epilogues --- src/setjmp/i386/longjmp.s | 6 ++---- src/setjmp/x32/longjmp.s | 6 ++---- src/setjmp/x86_64/longjmp.s | 6 ++---- 3 files changed, 6 insertions(+), 12 deletions(-) (limited to 'src/setjmp') diff --git a/src/setjmp/i386/longjmp.s b/src/setjmp/i386/longjmp.s index 772d28dd..b429f135 100644 --- a/src/setjmp/i386/longjmp.s +++ b/src/setjmp/i386/longjmp.s @@ -14,7 +14,5 @@ longjmp: mov 4(%edx),%esi mov 8(%edx),%edi mov 12(%edx),%ebp - mov 16(%edx),%ecx - mov %ecx,%esp - mov 20(%edx),%ecx - jmp *%ecx + mov 16(%edx),%esp + jmp *20(%edx) diff --git a/src/setjmp/x32/longjmp.s b/src/setjmp/x32/longjmp.s index e709acad..bb88afa1 100644 --- a/src/setjmp/x32/longjmp.s +++ b/src/setjmp/x32/longjmp.s @@ -16,7 +16,5 @@ longjmp: mov 24(%rdi),%r13 mov 32(%rdi),%r14 mov 40(%rdi),%r15 - mov 48(%rdi),%rdx /* this ends up being the stack pointer */ - mov %rdx,%rsp - mov 56(%rdi),%rdx /* this is the instruction pointer */ - jmp *%rdx /* goto saved address without altering rsp */ + mov 48(%rdi),%rsp + jmp *56(%rdi) /* goto saved address without altering rsp */ diff --git a/src/setjmp/x86_64/longjmp.s b/src/setjmp/x86_64/longjmp.s index e709acad..bb88afa1 100644 --- a/src/setjmp/x86_64/longjmp.s +++ b/src/setjmp/x86_64/longjmp.s @@ -16,7 +16,5 @@ longjmp: mov 24(%rdi),%r13 mov 32(%rdi),%r14 mov 40(%rdi),%r15 - mov 48(%rdi),%rdx /* this ends up being the stack pointer */ - mov %rdx,%rsp - mov 56(%rdi),%rdx /* this is the instruction pointer */ - jmp *%rdx /* goto saved address without altering rsp */ + mov 48(%rdi),%rsp + jmp *56(%rdi) /* goto saved address without altering rsp */ -- cgit 1.4.1