On Wed, 24 Aug 2022 19:25:12 GMT Konstantin Belousov <k...@freebsd.org>
wrote:
> The branch main has been updated by kib:
> 
> URL: 
> https://cgit.FreeBSD.org/src/commit/?id=e8b2980e4a126407e15d33ee8d987385c8321261
> 
> commit e8b2980e4a126407e15d33ee8d987385c8321261
> Author:     Konstantin Belousov <k...@freebsd.org>
> AuthorDate: 2022-08-18 04:07:29 +0000
> Commit:     Konstantin Belousov <k...@freebsd.org>
> CommitDate: 2022-08-24 19:12:05 +0000
> 
>     i386 doreti: stop saving/restoring %ecx around calls into C
>     
>     There is no reason to do this.  Instead just calculate it later.
>     
>     Reviewed by:    jhb
>     Tested by:      pho
>     Sponsored by:   The FreeBSD Foundation
>     MFC after:      1 week
>     Differential revision:  https://reviews.freebsd.org/D36302
> ---
>  sys/i386/i386/exception.s | 17 ++++++++---------
>  1 file changed, 8 insertions(+), 9 deletions(-)
> 
> diff --git a/sys/i386/i386/exception.s b/sys/i386/i386/exception.s
> index 5eef9c1d512c..8279a4602ebf 100644
> --- a/sys/i386/i386/exception.s
> +++ b/sys/i386/i386/exception.s
> @@ -518,22 +518,21 @@ doreti_exit:
>       je      doreti_iret_nmi
>       cmpl    $T_TRCTRAP, TF_TRAPNO(%esp)
>       je      doreti_iret_nmi
> -     movl    $TF_SZ, %ecx
>       testl   $PSL_VM,TF_EFLAGS(%esp)
> -     jz      1f                      /* PCB_VM86CALL is not set */
> -     addl    $VM86_STACK_SPACE, %ecx
> -     jmp     2f
> -1:   testl   $SEL_RPL_MASK, TF_CS(%esp)
> +     jnz     1f                      /* PCB_VM86CALL is not set */
> +     testl   $SEL_RPL_MASK, TF_CS(%esp)
>       jz      doreti_popl_fs
> -2:   movl    $handle_ibrs_exit,%eax
> -     pushl   %ecx                    /* preserve enough call-used regs */
> +1:   movl    $handle_ibrs_exit,%eax
>       call    *%eax
>       movl    mds_handler,%eax
>       call    *%eax
> -     popl    %ecx
>       movl    %esp, %esi
>       movl    PCPU(TRAMPSTK), %edx
> -     subl    %ecx, %edx
> +     movl    $TF_SZ, %ecx
> +     testl   $PSL_VM,TF_EFLAGS(%esp)
> +     jz      2f                      /* PCB_VM86CALL is not set */
> +     addl    $VM86_STACK_SPACE, %ecx
> +2:   subl    $TF_SZ, %edx

Shouldn't this be "subl %ecx, %edx"?

Reply via email to