|
@@ -114,7 +114,7 @@ void *memmove(void *v_dst, const void *v_src, __kernel_size_t c)
|
|
|
case 0x1: /* Unaligned - Off by 1 */
|
|
|
/* Word align the source */
|
|
|
i_src = (const void *) (((unsigned)src + 4) & ~3);
|
|
|
-
|
|
|
+#ifndef __MICROBLAZEEL__
|
|
|
/* Load the holding buffer */
|
|
|
buf_hold = *--i_src >> 24;
|
|
|
|
|
@@ -123,7 +123,16 @@ void *memmove(void *v_dst, const void *v_src, __kernel_size_t c)
|
|
|
*--i_dst = buf_hold << 8 | value;
|
|
|
buf_hold = value >> 24;
|
|
|
}
|
|
|
+#else
|
|
|
+ /* Load the holding buffer */
|
|
|
+ buf_hold = (*--i_src & 0xFF) << 24;
|
|
|
|
|
|
+ for (; c >= 4; c -= 4) {
|
|
|
+ value = *--i_src;
|
|
|
+ *--i_dst = buf_hold | ((value & 0xFFFFFF00)>>8);
|
|
|
+ buf_hold = (value & 0xFF) << 24;
|
|
|
+ }
|
|
|
+#endif
|
|
|
/* Realign the source */
|
|
|
src = (const void *)i_src;
|
|
|
src += 1;
|
|
@@ -131,7 +140,7 @@ void *memmove(void *v_dst, const void *v_src, __kernel_size_t c)
|
|
|
case 0x2: /* Unaligned - Off by 2 */
|
|
|
/* Word align the source */
|
|
|
i_src = (const void *) (((unsigned)src + 4) & ~3);
|
|
|
-
|
|
|
+#ifndef __MICROBLAZEEL__
|
|
|
/* Load the holding buffer */
|
|
|
buf_hold = *--i_src >> 16;
|
|
|
|
|
@@ -140,7 +149,16 @@ void *memmove(void *v_dst, const void *v_src, __kernel_size_t c)
|
|
|
*--i_dst = buf_hold << 16 | value;
|
|
|
buf_hold = value >> 16;
|
|
|
}
|
|
|
+#else
|
|
|
+ /* Load the holding buffer */
|
|
|
+ buf_hold = (*--i_src & 0xFFFF) << 16;
|
|
|
|
|
|
+ for (; c >= 4; c -= 4) {
|
|
|
+ value = *--i_src;
|
|
|
+ *--i_dst = buf_hold | ((value & 0xFFFF0000)>>16);
|
|
|
+ buf_hold = (value & 0xFFFF) << 16;
|
|
|
+ }
|
|
|
+#endif
|
|
|
/* Realign the source */
|
|
|
src = (const void *)i_src;
|
|
|
src += 2;
|
|
@@ -148,7 +166,7 @@ void *memmove(void *v_dst, const void *v_src, __kernel_size_t c)
|
|
|
case 0x3: /* Unaligned - Off by 3 */
|
|
|
/* Word align the source */
|
|
|
i_src = (const void *) (((unsigned)src + 4) & ~3);
|
|
|
-
|
|
|
+#ifndef __MICROBLAZEEL__
|
|
|
/* Load the holding buffer */
|
|
|
buf_hold = *--i_src >> 8;
|
|
|
|
|
@@ -157,7 +175,16 @@ void *memmove(void *v_dst, const void *v_src, __kernel_size_t c)
|
|
|
*--i_dst = buf_hold << 24 | value;
|
|
|
buf_hold = value >> 8;
|
|
|
}
|
|
|
+#else
|
|
|
+ /* Load the holding buffer */
|
|
|
+ buf_hold = (*--i_src & 0xFFFFFF) << 8;
|
|
|
|
|
|
+ for (; c >= 4; c -= 4) {
|
|
|
+ value = *--i_src;
|
|
|
+ *--i_dst = buf_hold | ((value & 0xFF000000)>> 24);
|
|
|
+ buf_hold = (value & 0xFFFFFF) << 8;;
|
|
|
+ }
|
|
|
+#endif
|
|
|
/* Realign the source */
|
|
|
src = (const void *)i_src;
|
|
|
src += 3;
|