summaryrefslogtreecommitdiff
path: root/nuttx/arch/arm/src
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2013-01-07 23:50:25 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2013-01-07 23:50:25 +0000
commit6b609c486fe76cb17eb432060ac527375da1dc5f (patch)
tree3bea4aa7ff962865f6bdc0ffb6180833485a5662 /nuttx/arch/arm/src
parent21f2738e02dd053cd9a9d3760e32b1c15677264c (diff)
downloadpx4-nuttx-6b609c486fe76cb17eb432060ac527375da1dc5f.tar.gz
px4-nuttx-6b609c486fe76cb17eb432060ac527375da1dc5f.tar.bz2
px4-nuttx-6b609c486fe76cb17eb432060ac527375da1dc5f.zip
Fixed ARM vfork; re-enabled vfork OS test
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5490 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/arm/src')
-rw-r--r--nuttx/arch/arm/src/arm/vfork.S3
-rw-r--r--nuttx/arch/arm/src/armv7-m/vfork.S3
-rw-r--r--nuttx/arch/arm/src/common/up_vfork.c2
3 files changed, 5 insertions, 3 deletions
diff --git a/nuttx/arch/arm/src/arm/vfork.S b/nuttx/arch/arm/src/arm/vfork.S
index b498fd7f7..226d9f7de 100644
--- a/nuttx/arch/arm/src/arm/vfork.S
+++ b/nuttx/arch/arm/src/arm/vfork.S
@@ -102,7 +102,7 @@
vfork:
/* Create a stack frame */
- mov r0, sp /* Save the value of the stack frame on entry */
+ mov r0, sp /* Save the value of the stack on entry */
sub sp, sp, #VFORK_SIZEOF /* Allocate the structure on the stack */
/* Save the volatile registers */
@@ -128,6 +128,7 @@ vfork:
/* Release the stack data and return the value returned by up_vfork */
+ ldr lr, [sp, #VFORK_LR_OFFSET]
add sp, sp, #VFORK_SIZEOF
mov pc, lr
.size vfork, .-vfork
diff --git a/nuttx/arch/arm/src/armv7-m/vfork.S b/nuttx/arch/arm/src/armv7-m/vfork.S
index 0d9e144cd..386fca33c 100644
--- a/nuttx/arch/arm/src/armv7-m/vfork.S
+++ b/nuttx/arch/arm/src/armv7-m/vfork.S
@@ -105,7 +105,7 @@
vfork:
/* Create a stack frame */
- mov r0, sp /* Save the value of the stack frame on entry */
+ mov r0, sp /* Save the value of the stack on entry */
sub sp, sp, #VFORK_SIZEOF /* Allocate the structure on the stack */
/* Save the volatile registers */
@@ -131,6 +131,7 @@ vfork:
/* Release the stack data and return the value returned by up_vfork */
+ ldr lr, [sp, #VFORK_LR_OFFSET]
add sp, sp, #VFORK_SIZEOF
bx lr
.size vfork, .-vfork
diff --git a/nuttx/arch/arm/src/common/up_vfork.c b/nuttx/arch/arm/src/common/up_vfork.c
index 3da602679..5349378bc 100644
--- a/nuttx/arch/arm/src/common/up_vfork.c
+++ b/nuttx/arch/arm/src/common/up_vfork.c
@@ -124,7 +124,7 @@
*
****************************************************************************/
-pid_t up_vfork(struct vfork_s *context)
+pid_t up_vfork(const struct vfork_s *context)
{
_TCB *parent = (FAR _TCB *)g_readytorun.head;
_TCB *child;