On Fri, 2 Sep 2022 17:05:27 +0300 Konstantin Belousov
<kostik...@gmail.com> wrote:
> On Fri, Sep 02, 2022 at 03:02:31PM +0200, Tijl Coosemans wrote:
>> 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"?  
> 
> You are right, please fix.

Fixed in cfdc649e455b.

Reply via email to