microblaze: Fix sys_clone syscall
commit570e3e236efdf5bb4a023ecc3601dad9273a011e
authorMichal Simek <monstr@monstr.eu>
Fri, 4 Jun 2010 11:06:27 +0000 (4 13:06 +0200)
committerMichal Simek <monstr@monstr.eu>
Wed, 4 Aug 2010 08:22:32 +0000 (4 10:22 +0200)
tree3f5d51d66dfca708a39b568f00384195936285a6
parent79aac889037027bebf7fcfc4cf9f2eb25f4f8075
microblaze: Fix sys_clone syscall

sys_clone syscall ignored args which this patch mapped to args
which are passing from glibc.

Here is the origin problem description.

"I ran the static libgcc tests (very few of them are there, they are
mostly dynamically linked) and some of  them fail with an assertion in
fork() system call (tid != pid), I looked at the microblaze/entry.S
file and it looks suspicious (ignores arguments 3-5)"

Arg mapping should be:
glibc ARCH_FORK(...) -> do_fork(...)
r5 -> r5   (clone_flags)
r6  -> r6 (stack_start, use parent->stack if NULL)
pt_regs -> r7 (pt_regs)
r7 -> r8 (stack_size)
r8 -> r9 (parent_tidptr)
r9 -> r10 (child_tidptr)

Signed-off-by: John Williams <john.williams@petalogix.com>
Signed-off-by: Michal Simek <monstr@monstr.eu>
arch/microblaze/kernel/entry.S