Blackfin - read_time primitive

note this primitive currently uses a union to concatenate 2x32bit registers because of poor compiler support
around DImode and asm.

Originally committed as revision 9302 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Marc Hoffman 2007-06-13 11:09:07 +00:00
parent c9823f0577
commit f70c273902
1 changed files with 14 additions and 1 deletions

View File

@ -267,7 +267,7 @@ static inline int ff_get_fourcc(const char *s){
}\
}
#if defined(ARCH_X86) || defined(ARCH_POWERPC)
#if defined(ARCH_X86) || defined(ARCH_POWERPC) || defined(ARCH_BFIN)
#if defined(ARCH_X86_64)
static inline uint64_t read_time(void)
{
@ -286,6 +286,19 @@ static inline long long read_time(void)
);
return l;
}
#elif ARCH_BFIN
static inline uint64_t read_time(void)
{
union {
struct {
unsigned lo;
unsigned hi;
} p;
unsigned long long c;
} t;
asm volatile ("%0=cycles; %1=cycles2;" : "=d" (t.p.lo), "=d" (t.p.hi));
return t.c;
}
#else //FIXME check ppc64
static inline uint64_t read_time(void)
{