Commit b28017f57f1ec16ab515e99d863bf9f33ea0d737

Authored by Sam Ravnborg
Committed by David S. Miller
1 parent 757498c63e

sparc: unify kernel/init_task

A closer inspection revealed that these two files had identical
functionality - but the implementation of it differed slightly.

Base it on the sparc version as it was the best.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 5 changed files with 30 additions and 65 deletions Side-by-side Diff

... ... @@ -68,7 +68,7 @@
68 68 endif
69 69  
70 70 head-y := arch/sparc/kernel/head_$(BITS).o
71   -head-y += arch/sparc/kernel/init_task_$(BITS).o
  71 +head-y += arch/sparc/kernel/init_task.o
72 72  
73 73 core-y += arch/sparc/kernel/
74 74 core-y += arch/sparc/mm/ arch/sparc/math-emu/
arch/sparc/kernel/Makefile
... ... @@ -6,7 +6,7 @@
6 6 ccflags-y := -Werror
7 7  
8 8 extra-y := head_$(BITS).o
9   -extra-y += init_task_$(BITS).o
  9 +extra-y += init_task.o
10 10 extra-y += vmlinux.lds
11 11  
12 12 obj-$(CONFIG_SPARC32) += entry.o wof.o wuf.o
arch/sparc/kernel/init_task.c
  1 +#include <linux/mm.h>
  2 +#include <linux/fs.h>
  3 +#include <linux/module.h>
  4 +#include <linux/sched.h>
  5 +#include <linux/init_task.h>
  6 +#include <linux/mqueue.h>
  7 +
  8 +#include <asm/pgtable.h>
  9 +#include <asm/uaccess.h>
  10 +
  11 +static struct fs_struct init_fs = INIT_FS;
  12 +static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
  13 +static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
  14 +struct mm_struct init_mm = INIT_MM(init_mm);
  15 +struct task_struct init_task = INIT_TASK(init_task);
  16 +
  17 +EXPORT_SYMBOL(init_mm);
  18 +EXPORT_SYMBOL(init_task);
  19 +
  20 +/* .text section in head.S is aligned at 8k boundary and this gets linked
  21 + * right after that so that the init_thread_union is aligned properly as well.
  22 + * If this is not aligned on a 8k boundry, then you should change code
  23 + * in etrap.S which assumes it.
  24 + */
  25 +union thread_union init_thread_union
  26 + __attribute__((section (".text\"\n\t#")))
  27 + __attribute__((aligned (THREAD_SIZE)))
  28 + = { INIT_THREAD_INFO(init_task) };
arch/sparc/kernel/init_task_32.c
1   -#include <linux/mm.h>
2   -#include <linux/fs.h>
3   -#include <linux/module.h>
4   -#include <linux/sched.h>
5   -#include <linux/init_task.h>
6   -#include <linux/mqueue.h>
7   -
8   -#include <asm/pgtable.h>
9   -#include <asm/uaccess.h>
10   -
11   -static struct fs_struct init_fs = INIT_FS;
12   -static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
13   -static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
14   -struct mm_struct init_mm = INIT_MM(init_mm);
15   -struct task_struct init_task = INIT_TASK(init_task);
16   -
17   -EXPORT_SYMBOL(init_mm);
18   -EXPORT_SYMBOL(init_task);
19   -
20   -/* .text section in head.S is aligned at 8k boundary and this gets linked
21   - * right after that so that the init_thread_union is aligned properly as well.
22   - * If this is not aligned on a 8k boundry, then you should change code
23   - * in etrap.S which assumes it.
24   - */
25   -union thread_union init_thread_union
26   - __attribute__((section (".text\"\n\t#")))
27   - __attribute__((aligned (THREAD_SIZE)))
28   - = { INIT_THREAD_INFO(init_task) };
arch/sparc/kernel/init_task_64.c
1   -#include <linux/mm.h>
2   -#include <linux/fs.h>
3   -#include <linux/module.h>
4   -#include <linux/sched.h>
5   -#include <linux/init_task.h>
6   -#include <linux/mqueue.h>
7   -
8   -#include <asm/pgtable.h>
9   -#include <asm/uaccess.h>
10   -#include <asm/processor.h>
11   -
12   -static struct fs_struct init_fs = INIT_FS;
13   -static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
14   -static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
15   -struct mm_struct init_mm = INIT_MM(init_mm);
16   -
17   -EXPORT_SYMBOL(init_mm);
18   -
19   -/* .text section in head.S is aligned at 2 page boundary and this gets linked
20   - * right after that so that the init_thread_union is aligned properly as well.
21   - * We really don't need this special alignment like the Intel does, but
22   - * I do it anyways for completeness.
23   - */
24   -__asm__ (".text");
25   -union thread_union init_thread_union = { INIT_THREAD_INFO(init_task) };
26   -
27   -/*
28   - * Initial task structure.
29   - *
30   - * All other task structs will be allocated on slabs in fork.c
31   - */
32   -EXPORT_SYMBOL(init_task);
33   -
34   -__asm__(".data");
35   -struct task_struct init_task = INIT_TASK(init_task);