base: Simple mem func

Reduce code size of MPU kernel_mem* functions

This patch reduces code size of kernel_mem* functions in the MARS
kernel implementation by using vector operations. It assumes 16-bytes
boundary alignment and size.

Signed-off-by: Kazunori Asayama <asayama@sm.sony.co.jp>
Signed-off-by: Yuji Mano <yuji.mano@am.sony.com>
diff --git a/base/src/mpu/kernel/kernel.c b/base/src/mpu/kernel/kernel.c
index 3abec65..8ed045d 100644
--- a/base/src/mpu/kernel/kernel.c
+++ b/base/src/mpu/kernel/kernel.c
@@ -77,12 +77,12 @@
 
 static int kernel_memcmp(const void *s1, const void *s2, int size)
 {
-	const unsigned char *ptr_1 = (const unsigned char *)s1;
-	const unsigned char *ptr_2 = (const unsigned char *)s2;
-	const unsigned char *ptr_e = ptr_1 + size;
+	__vector const int *vptr_1 = (__vector const int *)s1;
+	__vector const int *vptr_2 = (__vector const int *)s2;
+	__vector const int *vptr_e = (__vector const int *)(s1 + size);
 
-	while (ptr_1 < ptr_e)
-		if (*ptr_1++ != *ptr_2++)
+	while (vptr_1 < vptr_e)
+		if (!(*vptr_1++ == *vptr_2++))
 			return 1;
 
 	return 0;
@@ -90,12 +90,12 @@
 
 static void kernel_memcpy(void *dst, const void *src, int size)
 {
-	unsigned char *ptr_1 = (unsigned char *)dst;
-	const unsigned char *ptr_2 = (const unsigned char *)src;
-	const unsigned char *ptr_e = ptr_1 + size;
+	__vector const int *vptr_src = (__vector const int *)src;
+	__vector int *vptr_dst = (__vector int *)dst;
+	__vector int *vptr_end = (__vector int *)(dst + size);
 
-	while (ptr_1 < ptr_e)
-		*ptr_1++ = *ptr_2++;
+	while (vptr_dst < vptr_end)
+		*vptr_dst++ = *vptr_src++;
 }
 
 static uint32_t get_ticks(void)