aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/s390/kernel/process.c2
-rw-r--r--include/asm-s390/processor.h14
2 files changed, 3 insertions, 13 deletions
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index cc7c4ba0774d..96492cf2d491 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -270,14 +270,12 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
270 save_fp_regs(&current->thread.fp_regs); 270 save_fp_regs(&current->thread.fp_regs);
271 memcpy(&p->thread.fp_regs, &current->thread.fp_regs, 271 memcpy(&p->thread.fp_regs, &current->thread.fp_regs,
272 sizeof(s390_fp_regs)); 272 sizeof(s390_fp_regs));
273 p->thread.user_seg = __pa((unsigned long) p->mm->pgd) | _SEGMENT_TABLE;
274 /* Set a new TLS ? */ 273 /* Set a new TLS ? */
275 if (clone_flags & CLONE_SETTLS) 274 if (clone_flags & CLONE_SETTLS)
276 p->thread.acrs[0] = regs->gprs[6]; 275 p->thread.acrs[0] = regs->gprs[6];
277#else /* CONFIG_64BIT */ 276#else /* CONFIG_64BIT */
278 /* Save the fpu registers to new thread structure. */ 277 /* Save the fpu registers to new thread structure. */
279 save_fp_regs(&p->thread.fp_regs); 278 save_fp_regs(&p->thread.fp_regs);
280 p->thread.user_seg = __pa((unsigned long) p->mm->pgd) | _REGION_TABLE;
281 /* Set a new TLS ? */ 279 /* Set a new TLS ? */
282 if (clone_flags & CLONE_SETTLS) { 280 if (clone_flags & CLONE_SETTLS) {
283 if (test_thread_flag(TIF_31BIT)) { 281 if (test_thread_flag(TIF_31BIT)) {
diff --git a/include/asm-s390/processor.h b/include/asm-s390/processor.h
index 3b972d4c6b29..81efccc63942 100644
--- a/include/asm-s390/processor.h
+++ b/include/asm-s390/processor.h
@@ -93,7 +93,6 @@ struct thread_struct {
93 s390_fp_regs fp_regs; 93 s390_fp_regs fp_regs;
94 unsigned int acrs[NUM_ACRS]; 94 unsigned int acrs[NUM_ACRS];
95 unsigned long ksp; /* kernel stack pointer */ 95 unsigned long ksp; /* kernel stack pointer */
96 unsigned long user_seg; /* HSTD */
97 mm_segment_t mm_segment; 96 mm_segment_t mm_segment;
98 unsigned long prot_addr; /* address of protection-excep. */ 97 unsigned long prot_addr; /* address of protection-excep. */
99 unsigned int error_code; /* error-code of last prog-excep. */ 98 unsigned int error_code; /* error-code of last prog-excep. */
@@ -134,16 +133,9 @@ struct stack_frame {
134# define __SWAPPER_PG_DIR __pa(&swapper_pg_dir[0]) + _REGION_TABLE 133# define __SWAPPER_PG_DIR __pa(&swapper_pg_dir[0]) + _REGION_TABLE
135#endif /* __s390x__ */ 134#endif /* __s390x__ */
136 135
137#define INIT_THREAD {{0,{{0},{0},{0},{0},{0},{0},{0},{0},{0},{0}, \ 136#define INIT_THREAD { \
138 {0},{0},{0},{0},{0},{0}}}, \ 137 .ksp = sizeof(init_stack) + (unsigned long) &init_stack, \
139 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \ 138}
140 sizeof(init_stack) + (unsigned long) &init_stack, \
141 __SWAPPER_PG_DIR, \
142 {0}, \
143 0,0,0, \
144 (per_struct) {{{{0,}}},0,0,0,0,{{0,}}}, \
145 0, 0 \
146}
147 139
148/* 140/*
149 * Do necessary setup to start up a new thread. 141 * Do necessary setup to start up a new thread.