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

Måns Rullgård mans
Fri Sep 10 11:46:45 CEST 2010


Michael Kostylev <michael.kostylev at gmail.com> writes:

> On Fri Sep 10 09:47:34 2010
> M?ns Rullg?rd wrote:
>
>>>>>>> if the only issue left is the sometimes unneeded stx instruction
>>>>>>> then i approve the patch with this. If there are other issues they
>>>>>>> of course have to be fixed first
>>>>>>
>>>>>>Apparently the ifdef test in the patch is not reliable.
>>>>>
>>>>> Redone.
>>>>>
>>>>> Michael
>>>>>
>>>>> +#ifndef AVUTIL_SPARC_TIMER_H
>>>>> +#define AVUTIL_SPARC_TIMER_H
>>>>> +
>>>>> +#if defined(__arch64__) || defined(__sparc_v9__)
>>>>
>>>>I'm still not convinced this is right:
>>>
>>> There is an issue with -m32 on Solaris.
>>
>>I don't understand.
>
> As mentioned, __sparc_v9__ is never defined there.

That does not make __sparc_v9__ alone a sufficient condition for using
64-bit registers.

>>>>$ sparc-unknown-linux-gnu-gcc -m32 -mcpu=v9 -mno-v8plus -dM -E -xc /dev/null | grep -E 'arch|sparc'
>>>>#define sparc 1
>>>>#define __sparc__ 1
>>>>#define __sparc 1
>>>>#define __sparc_v9__ 1
>>>
>>> This is as right as xor rax,rax in an i386 binary built with -march=core2.
>>
>>Yes, that instruction would be invalid there.  In a pure 32-bit
>>environment, you can't use the high half of 64-bit registers, even if
>>they are physically present.  Consider what happens on a context switch.
>
> An ancient kernel will not preserve the sse registers as well. Anyway, there
> is no such problem on Sparc. Anything else?

A 32-bit kernel on Sparc will only preserve the low 32 bits of the
registers.  How could it possibly do otherwise?  Or is such a system
impossible for some reason?

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list