Mercurial > libavcodec.hg
changeset 8178:7180ba559f56 libavcodec
SH4: fix memzero_align8()
author | mru |
---|---|
date | Thu, 20 Nov 2008 09:21:52 +0000 |
parents | 484c83d8e9a8 |
children | 883feb4edb65 |
files | sh4/dsputil_sh4.c |
diffstat | 1 files changed, 8 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/sh4/dsputil_sh4.c Thu Nov 20 09:21:50 2008 +0000 +++ b/sh4/dsputil_sh4.c Thu Nov 20 09:21:52 2008 +0000 @@ -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 @@ " 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)