* If you suspect bug in this function, compare it with this simple
         * memmove implementation.
         */
-       fb_memmove((char *)dst + ((dst_idx & (bits - 1))) / 8,
-                  (char *)src + ((src_idx & (bits - 1))) / 8, n / 8);
+       memmove((char *)dst + ((dst_idx & (bits - 1))) / 8,
+               (char *)src + ((src_idx & (bits - 1))) / 8, n / 8);
        return;
 #endif
 
         * If you suspect bug in this function, compare it with this simple
         * memmove implementation.
         */
-       fb_memmove((char *)dst + ((dst_idx & (bits - 1))) / 8,
-                  (char *)src + ((src_idx & (bits - 1))) / 8, n / 8);
+       memmove((char *)dst + ((dst_idx & (bits - 1))) / 8,
+               (char *)src + ((src_idx & (bits - 1))) / 8, n / 8);
        return;
 #endif
 
                                d0 = d0 << left | d1 >> right;
                        }
                        d0 = fb_rev_pixels_in_long(d0, bswapmask);
-                       FB_WRITEL(comp(d0, FB_READL(dst), first), dst);
+                       if (!first)
+                               FB_WRITEL(d0, dst);
+                       else
+                               FB_WRITEL(comp(d0, FB_READL(dst), first), dst);
                        d0 = d1;
                        dst--;
                        n -= dst_idx+1;