platform: msm_shared: replace memcpy in critical places

Rpm message ram memory should be read in multiples of 4bytes,
hence replaced the memcpy library function with other function
to copy 4bytes at a time.

Change-Id: I0674256a72d4dee7be95e69a822ead9584ed3e2f
diff --git a/platform/msm_shared/rpm-glink.c b/platform/msm_shared/rpm-glink.c
index 2635cd1..f564480 100644
--- a/platform/msm_shared/rpm-glink.c
+++ b/platform/msm_shared/rpm-glink.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2016 The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -59,6 +59,19 @@
 
 extern glink_err_type glink_wait_link_down(glink_handle_type handle);
 
+static void rpmdatacpy(uint32_t * dst, uint32_t *src, uint32_t size)
+{
+	if(size%4)
+		ASSERT(0);
+	size = size/4;
+
+	while (size >0)
+	{
+		*dst++ = *src++;
+		size--;
+	}
+}
+
 glink_err_type rpm_glink_send_data(uint32_t *data, uint32_t len, msg_type type)
 {
 	rpm_req req;
@@ -198,7 +211,7 @@
 		return_buffer = vprovider(buffer, offset, &return_size);
 		if(return_buffer)
 		{
-			memcpy(rx_buffer+offset,return_buffer, return_size);
+			rpmdatacpy((uint32_t *)(rx_buffer + offset),(uint32_t *)return_buffer, return_size);
 			offset += return_size;
 		}
 	} while(return_buffer);
@@ -241,7 +254,7 @@
 		return_buffer = vprovider(buffer, offset, &return_size);
 		if(return_buffer)
 		{
-			memcpy(rx_buffer+offset,return_buffer, return_size);
+			rpmdatacpy((uint32_t *)(rx_buffer + offset),(uint32_t *)return_buffer, return_size);
 			offset += return_size;
 		}
 	} while(return_buffer);