Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Apr 2011 14:06:09 -0400
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        src-committers@FreeBSD.org
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org
Subject:   Re: svn commit: r220632 - head/sys/x86/x86
Message-ID:  <201104141406.12183.jkim@FreeBSD.org>
In-Reply-To: <201104141708.p3EH8Nbt041472@svn.freebsd.org>
References:  <201104141708.p3EH8Nbt041472@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 14 April 2011 01:08 pm, Jung-uk Kim wrote:
> Author: jkim
> Date: Thu Apr 14 17:08:23 2011
> New Revision: 220632
> URL: http://svn.freebsd.org/changeset/base/220632
>
> Log:
>   Use newly added rdtsc32() for the timecounter_get_t method.

It only seems to make big difference in amd64, probably because 
rdtsc() is implemented differently in inline asm.

tsc_get_timecount (before):
        pushq   %rbp
        movq    %rsp, %rbp
        rdtsc
        mov     %eax, %eax
        salq    $32, %rdx
        leave
        orq     %rax, %rdx
        movl    %edx, %eax
        ret

tsc_get_timecount (after):
        pushq   %rbp
        movq    %rsp, %rbp
        rdtsc
        leave
        ret

Similar problem was also observed when it is inlined.

BTW, clang does not have this issue. :-)

Jung-uk Kim



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201104141406.12183.jkim>