Browse Source

SH4: fix memzero_align8()

Originally committed as revision 15888 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Måns Rullgård 17 years ago
parent
commit
c260b59603
1 changed files with 8 additions and 7 deletions
  1. +8
    -7
      libavcodec/sh4/dsputil_sh4.c

+ 8
- 7
libavcodec/sh4/dsputil_sh4.c View File

@@ -22,13 +22,15 @@

#include "libavcodec/avcodec.h"
#include "libavcodec/dsputil.h"
#include "sh4.h"

static void memzero_align8(void *dst,size_t size)
{
__asm__(
#if defined(__SH4__)
" fschg\n" //single float mode
#endif
int fpscr;
fp_single_enter(fpscr);
dst = (char *)dst + size;
size /= 32;
__asm__ volatile (
" fldi0 fr0\n"
" fldi0 fr1\n"
" fschg\n" // double
@@ -39,10 +41,9 @@ static void memzero_align8(void *dst,size_t size)
" fmov dr0,@-%0\n"
" bf.s 1b\n"
" fmov dr0,@-%0\n"
#if defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__)
" fschg" //back to single
#endif
: : "r"((char*)dst+size),"r"(size/32): "memory" );
: "+r"(dst),"+r"(size) :: "memory" );
fp_single_leave(fpscr);
}

static void clear_blocks_sh4(DCTELEM *blocks)


Loading…
Cancel
Save