[FFmpeg-devel] [PATCH] read_time() for SPARC

Michael Kostylev michael.kostylev
Wed Sep 8 10:41:16 CEST 2010


On Wed Sep  8 07:51:21 2010
M?ns Rullg?rd wrote:

>>>> The attached patch provides access to a 63-bit tick counter which is
>>>> available on the v9 cpus in the manner compatible with the v8+ abi.
>>>>
>>>> +#ifndef AVUTIL_SPARC_TIMER_H
>>>> +#define AVUTIL_SPARC_TIMER_H
>>>> +
>>>> +#ifdef __sparc_v9__
>>>> +
>>>> +#include <stdint.h>
>>>> +
>>>> +#define AV_READ_TIME read_time
>>>> +
>>>> +static inline uint64_t read_time(void)
>>>> +{
>>>> +    uint64_t tc;
>>>> +    __asm__ volatile("rd %%tick,%%g1\n\t"
>>>> +                     "stx %%g1,%0\n\t"
>>>> +                     : "=m" (tc) :: "g1");
>>>> +    return tc;
>>>> +}
>>>
>>>Why can't you read the counter directly to whatever register 'tc'
>>>lives in?
>>
>> That will not work with v8+, tc will be filled with the least significant
>> 32 bits.
>
>Why?

The rd instruction uses only register operands and the r constraint is considered
32-bit (the rest bits are filled by the compiler). I see no register constraint
which would be 64-bit with v9 and v8+.

Michael



More information about the ffmpeg-devel mailing list