Skip to content

Commit

Permalink
microblaze: Add TLS support to sys_clone
Browse files Browse the repository at this point in the history
Formerly unused Args 4/5 now load parent tid / child tid so the brid to
do_fork can pick up TLS from r10. Arg 3 still unused

There is also necessary to fix old glibc which do not setup r9/r10 (arg 4/5).
Simple clearing them is fine.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Signed-off-by: David Holsgrove <david.holsgrove@petalogix.com>
Signed-off-by: Michal Simek <monstr@monstr.eu>
  • Loading branch information
Edgar E. Iglesias authored and Michal Simek committed May 25, 2012
1 parent d65987a commit 8d95e12
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions arch/microblaze/kernel/entry.S
Original file line number Diff line number Diff line change
@@ -493,10 +493,11 @@ C_ENTRY(sys_clone):
bnei r6, 1f; /* See if child SP arg (arg 1) is 0. */
lwi r6, r1, PT_R1; /* If so, use paret's stack ptr */
1: addik r7, r1, 0; /* Arg 2: parent context */
add r8, r0, r0; /* Arg 3: (unused) */
add r9, r0, r0; /* Arg 4: (unused) */
lwi r9, r1, PT_R8; /* parent tid. */
lwi r10, r1, PT_R9; /* child tid. */
/* do_fork will pick up TLS from regs->r10. */
brid do_fork /* Do real work (tail-call) */
add r10, r0, r0; /* Arg 5: (unused) */
add r8, r0, r0; /* Arg 3: (unused) */

C_ENTRY(sys_execve):
brid microblaze_execve; /* Do real work (tail-call).*/

0 comments on commit 8d95e12

Please sign in to comment.