[ARM] start_thread fixup for nommu mode
This patch supports start_thread in nommu mode which requires the base index register. Signed-off-by: Hyok S. Choi <hyok.choi@samsung.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
946d4935fc
commit
e72b04756f
1 changed files with 7 additions and 0 deletions
|
@ -49,6 +49,12 @@ struct thread_struct {
|
||||||
|
|
||||||
#define INIT_THREAD { }
|
#define INIT_THREAD { }
|
||||||
|
|
||||||
|
#ifdef CONFIG_MMU
|
||||||
|
#define nommu_start_thread(regs) do { } while (0)
|
||||||
|
#else
|
||||||
|
#define nommu_start_thread(regs) regs->ARM_r10 = current->mm->start_data
|
||||||
|
#endif
|
||||||
|
|
||||||
#define start_thread(regs,pc,sp) \
|
#define start_thread(regs,pc,sp) \
|
||||||
({ \
|
({ \
|
||||||
unsigned long *stack = (unsigned long *)sp; \
|
unsigned long *stack = (unsigned long *)sp; \
|
||||||
|
@ -65,6 +71,7 @@ struct thread_struct {
|
||||||
regs->ARM_r2 = stack[2]; /* r2 (envp) */ \
|
regs->ARM_r2 = stack[2]; /* r2 (envp) */ \
|
||||||
regs->ARM_r1 = stack[1]; /* r1 (argv) */ \
|
regs->ARM_r1 = stack[1]; /* r1 (argv) */ \
|
||||||
regs->ARM_r0 = stack[0]; /* r0 (argc) */ \
|
regs->ARM_r0 = stack[0]; /* r0 (argc) */ \
|
||||||
|
nommu_start_thread(regs); \
|
||||||
})
|
})
|
||||||
|
|
||||||
/* Forward declaration, a strange C thing */
|
/* Forward declaration, a strange C thing */
|
||||||
|
|
Loading…
Reference in a new issue