Skip to content

Commit

Permalink
ARM: 6868/1: Preserve the VFP state during fork
Browse files Browse the repository at this point in the history
VFP registers d16-d31 are callee saved registers and must be preserved
during function calls, including fork(). The VFP configuration should
also be preserved. The patch copies the full VFP state to the child
process.

Reported-by: Paul Wright <paul.wright@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Catalin Marinas authored and Russell King committed Apr 10, 2011
1 parent 2e82669 commit c98c097
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions arch/arm/vfp/vfpmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,14 @@ static void vfp_thread_exit(struct thread_info *thread)
put_cpu();
}

static void vfp_thread_copy(struct thread_info *thread)
{
struct thread_info *parent = current_thread_info();

vfp_sync_hwstate(parent);
thread->vfpstate = parent->vfpstate;
}

/*
* When this function is called with the following 'cmd's, the following
* is true while this function is being run:
Expand Down Expand Up @@ -148,6 +156,10 @@ static int vfp_notifier(struct notifier_block *self, unsigned long cmd, void *v)
case THREAD_NOTIFY_EXIT:
vfp_thread_exit(thread);
break;

case THREAD_NOTIFY_COPY:
vfp_thread_copy(thread);
break;
}

return NOTIFY_DONE;
Expand Down

0 comments on commit c98c097

Please sign in to comment.