FRV: Fix the new-style kernel_thread() stuff
authorDavid Howells <dhowells@redhat.com>
Fri, 2 Nov 2012 13:20:43 +0000 (13:20 +0000)
committerDavid Howells <dhowells@redhat.com>
Fri, 2 Nov 2012 13:20:43 +0000 (13:20 +0000)
commite7aa51b2e52274b13be3209e2787d1b2ce9624fd
tree43498c88cd786e17c7545a574152c986ab756c12
parent1ee6f5669a7eaba0e2f4e0dd0599b56eb8a9a090
FRV: Fix the new-style kernel_thread() stuff

The kernel_thread() changes for FRV don't work, and FRV fails to boot,
starting with:

commit 02ce496f152df87be081a64796498942c433a2fd
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue Sep 18 22:18:51 2012 -0400
Subject: frv: split ret_from_fork, simplify kernel_thread() a lot

The problem is that the userspace registers are completely cleared when a
kernel thread is created and all subsequent user threads are then copied from
that.  Unfortunately, however, the TBR and PSR registers are restored from the
pt_regs and the values they should be set to are clobbered by the memset.

Instead, copy across the old user registers as normal, and then merely alter
GR8 and GR9 in it if we're going to execute a kernel thread.

Signed-off-by: David Howells <dhowells@redhat.com>
arch/frv/kernel/process.c