diff --git a/libavcodec/sh4/dsputil_sh4.c b/libavcodec/sh4/dsputil_sh4.c
index e7e2de6e19c4b112ab806e5d8c7538263c5199d1..96a33f8c5058553322f1421e3a308f70f9e7b09b 100644
--- a/libavcodec/sh4/dsputil_sh4.c
+++ b/libavcodec/sh4/dsputil_sh4.c
@@ -26,8 +26,6 @@
 static void memzero_align8(void *dst,size_t size)
 {
 #if defined(__SH4__) || defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__)
-        (char*)dst+=size;
-        size/=8*4;
         __asm__(
 #if defined(__SH4__)
         " fschg\n"  //single float mode
@@ -45,7 +43,7 @@ static void memzero_align8(void *dst,size_t size)
 #if defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__)
         " fschg" //back to single
 #endif
-        : : "r"(dst),"r"(size): "memory" );
+        : : "r"((char*)dst+size),"r"(size/32): "memory" );
 #else
         double *d = dst;
         size/=8*4;