summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2015-01-29 06:36:53 -0600
committerGregory Nutt <gnutt@nuttx.org>2015-01-29 06:36:53 -0600
commita5925b1adc04b34e10ef332875770997ac312998 (patch)
treef81cbe09b782a2cc38aaed2b636df713d16d736d /nuttx
parentede54f3eb5e95c150eca6aa26292953589116600 (diff)
downloadpx4-nuttx-a5925b1adc04b34e10ef332875770997ac312998.tar.gz
px4-nuttx-a5925b1adc04b34e10ef332875770997ac312998.tar.bz2
px4-nuttx-a5925b1adc04b34e10ef332875770997ac312998.zip
ARM assembly language memcpy.S was not returning a value in R0 it is required to do. From David Sidrane
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/arch/arm/src/armv7-a/arm_memcpy.S15
-rw-r--r--nuttx/arch/arm/src/armv7-m/up_memcpy.S15
2 files changed, 30 insertions, 0 deletions
diff --git a/nuttx/arch/arm/src/armv7-a/arm_memcpy.S b/nuttx/arch/arm/src/armv7-a/arm_memcpy.S
index 84da4942b..713359d09 100644
--- a/nuttx/arch/arm/src/armv7-a/arm_memcpy.S
+++ b/nuttx/arch/arm/src/armv7-a/arm_memcpy.S
@@ -143,11 +143,26 @@ MEM_LongCopyTable:
* Input Parameters:
* r0 = destination, r1 = source, r2 = length
*
+ * Returned Value:
+ * r0 = destination r1-r3 burned
+ *
************************************************************************************/
+ .align 4
.thumb_func
+
memcpy:
push {r14}
+ push {r0}
+ bl _do_memcpy
+ pop {r0}
+ pop {pc}
+
+ .align 4
+
+ .thumb_func
+_do_memcpy:
+ push {r14}
/* This allows the inner workings to "assume" a minimum amount of bytes */
/* Quickly check for very short copies */
diff --git a/nuttx/arch/arm/src/armv7-m/up_memcpy.S b/nuttx/arch/arm/src/armv7-m/up_memcpy.S
index ea267f78f..84877b040 100644
--- a/nuttx/arch/arm/src/armv7-m/up_memcpy.S
+++ b/nuttx/arch/arm/src/armv7-m/up_memcpy.S
@@ -142,11 +142,26 @@ MEM_LongCopyTable:
* Input Parameters:
* r0 = destination, r1 = source, r2 = length
*
+ * Returned Value:
+ * r0 = destination r1-r3 burned
+ *
************************************************************************************/
+ .align 4
.thumb_func
+
memcpy:
push {r14}
+ push {r0}
+ bl _do_memcpy
+ pop {r0}
+ pop {pc}
+
+ .align 4
+
+ .thumb_func
+_do_memcpy:
+ push {r14}
/* This allows the inner workings to "assume" a minimum amount of bytes */
/* Quickly check for very short copies */