Re: quick question on 64-bit values with 32-bit inline assembly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In message: <20080122200751.GA2672@xxxxxxxxxxxxxx>
            Ralf Baechle <ralf@xxxxxxxxxxxxxx> writes:
: On Tue, Jan 22, 2008 at 12:55:45PM -0600, Chris Friesen wrote:
: 
: >>> gethrtime(void)
: >>> {
: >>>   unsigned long long result;
: >>>
: >>>   asm volatile ("rdhwr %0,$31" : "=r" (result));
: >
: >> Ah, Cavium.
: >
: > Yes indeed.  Any peculiarities that we should be watching out for? Previous 
: > mailing list threads would be great.
: 
: Cavium so far received little coverage on this list - but seems you're
: about to start this.  The reason why I was able to identify Cavium is that
: afaics only Cavium is the only 64-bit CPU to implement a 64-bit timer in
: hardware register $31.
: 
: The definition of rdhwr is generic and I think if anybody has considered
: this specific interaction of ABI and processor architecture then it was
: probably found not to implement such a special read because it is messy
: in more than one way.

When 64-bit operations are enabled, you get all 64-bits.  When they
aren't, only the lower 32-bits of the counter are provided (with sign
extension).  So when operating in 32-bit mode, saving the upper 32
bits are not necessary (or even possible).

Warner


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux