diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2012-05-03 05:02:57 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2012-05-05 07:00:24 -0400 |
commit | c39f52a9edc5e0687cbb54c08bcd78cf7fe26b62 (patch) | |
tree | 0308d789adc477be502381353555dbf3fd61b13d | |
parent | cf5e6def83fabdf10a05dc5a5981eda1672cb79c (diff) |
parisc: Use generic init_task
Same code, except: The alignment of init_thread_union is handled via
the linker script, so no point to have it with the data structure. The
extra asm(".data") looks like a leftover from an asm to C conversion
and is pointless.
Use the generic version.
Move the page table data to parisc/mm/init.c and get rid of
parisc/../init_task.c
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: James E.J. Bottomley <jejb@parisc-linux.org>
Link: http://lkml.kernel.org/r/20120503085035.150896946@linutronix.de
-rw-r--r-- | arch/parisc/Kconfig | 1 | ||||
-rw-r--r-- | arch/parisc/kernel/init_task.c | 70 | ||||
-rw-r--r-- | arch/parisc/mm/init.c | 12 |
3 files changed, 13 insertions, 70 deletions
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index ddb8b24b823d..4c6ca0de90cc 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig | |||
@@ -18,6 +18,7 @@ config PARISC | |||
18 | select IRQ_PER_CPU | 18 | select IRQ_PER_CPU |
19 | select ARCH_HAVE_NMI_SAFE_CMPXCHG | 19 | select ARCH_HAVE_NMI_SAFE_CMPXCHG |
20 | select GENERIC_SMP_IDLE_THREAD | 20 | select GENERIC_SMP_IDLE_THREAD |
21 | select HAVE_GENERIC_INIT_TASK | ||
21 | 22 | ||
22 | help | 23 | help |
23 | The PA-RISC microprocessor is designed by Hewlett-Packard and used | 24 | The PA-RISC microprocessor is designed by Hewlett-Packard and used |
diff --git a/arch/parisc/kernel/init_task.c b/arch/parisc/kernel/init_task.c deleted file mode 100644 index 4a91e433416f..000000000000 --- a/arch/parisc/kernel/init_task.c +++ /dev/null | |||
@@ -1,70 +0,0 @@ | |||
1 | /* | ||
2 | * Static declaration of "init" task data structure. | ||
3 | * | ||
4 | * Copyright (C) 2000 Paul Bame <bame at parisc-linux.org> | ||
5 | * Copyright (C) 2000-2001 John Marvin <jsm at parisc-linux.org> | ||
6 | * Copyright (C) 2001 Helge Deller <deller @ parisc-linux.org> | ||
7 | * Copyright (C) 2002 Matthew Wilcox <willy with parisc-linux.org> | ||
8 | * | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License as published by | ||
12 | * the Free Software Foundation; either version 2 of the License, or | ||
13 | * (at your option) any later version. | ||
14 | * | ||
15 | * This program is distributed in the hope that it will be useful, | ||
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
18 | * GNU General Public License for more details. | ||
19 | * | ||
20 | * You should have received a copy of the GNU General Public License | ||
21 | * along with this program; if not, write to the Free Software | ||
22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
23 | */ | ||
24 | |||
25 | #include <linux/mm.h> | ||
26 | #include <linux/fs.h> | ||
27 | #include <linux/module.h> | ||
28 | #include <linux/sched.h> | ||
29 | #include <linux/init.h> | ||
30 | #include <linux/init_task.h> | ||
31 | #include <linux/mqueue.h> | ||
32 | |||
33 | #include <asm/uaccess.h> | ||
34 | #include <asm/pgtable.h> | ||
35 | #include <asm/pgalloc.h> | ||
36 | |||
37 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | ||
38 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | ||
39 | /* | ||
40 | * Initial task structure. | ||
41 | * | ||
42 | * We need to make sure that this is 16384-byte aligned due to the | ||
43 | * way process stacks are handled. This is done by having a special | ||
44 | * "init_task" linker map entry.. | ||
45 | */ | ||
46 | union thread_union init_thread_union __init_task_data | ||
47 | __attribute__((aligned(128))) = | ||
48 | { INIT_THREAD_INFO(init_task) }; | ||
49 | |||
50 | #if PT_NLEVELS == 3 | ||
51 | /* NOTE: This layout exactly conforms to the hybrid L2/L3 page table layout | ||
52 | * with the first pmd adjacent to the pgd and below it. gcc doesn't actually | ||
53 | * guarantee that global objects will be laid out in memory in the same order | ||
54 | * as the order of declaration, so put these in different sections and use | ||
55 | * the linker script to order them. */ | ||
56 | pmd_t pmd0[PTRS_PER_PMD] __attribute__ ((__section__ (".data..vm0.pmd"), aligned(PAGE_SIZE))); | ||
57 | #endif | ||
58 | |||
59 | pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__ ((__section__ (".data..vm0.pgd"), aligned(PAGE_SIZE))); | ||
60 | pte_t pg0[PT_INITIAL * PTRS_PER_PTE] __attribute__ ((__section__ (".data..vm0.pte"), aligned(PAGE_SIZE))); | ||
61 | |||
62 | /* | ||
63 | * Initial task structure. | ||
64 | * | ||
65 | * All other task structs will be allocated on slabs in fork.c | ||
66 | */ | ||
67 | EXPORT_SYMBOL(init_task); | ||
68 | |||
69 | __asm__(".data"); | ||
70 | struct task_struct init_task = INIT_TASK(init_task); | ||
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c index 82f364e209fc..3ac462de53a4 100644 --- a/arch/parisc/mm/init.c +++ b/arch/parisc/mm/init.c | |||
@@ -33,6 +33,18 @@ | |||
33 | 33 | ||
34 | extern int data_start; | 34 | extern int data_start; |
35 | 35 | ||
36 | #if PT_NLEVELS == 3 | ||
37 | /* NOTE: This layout exactly conforms to the hybrid L2/L3 page table layout | ||
38 | * with the first pmd adjacent to the pgd and below it. gcc doesn't actually | ||
39 | * guarantee that global objects will be laid out in memory in the same order | ||
40 | * as the order of declaration, so put these in different sections and use | ||
41 | * the linker script to order them. */ | ||
42 | pmd_t pmd0[PTRS_PER_PMD] __attribute__ ((__section__ (".data..vm0.pmd"), aligned(PAGE_SIZE))); | ||
43 | #endif | ||
44 | |||
45 | pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__ ((__section__ (".data..vm0.pgd"), aligned(PAGE_SIZE))); | ||
46 | pte_t pg0[PT_INITIAL * PTRS_PER_PTE] __attribute__ ((__section__ (".data..vm0.pte"), aligned(PAGE_SIZE))); | ||
47 | |||
36 | #ifdef CONFIG_DISCONTIGMEM | 48 | #ifdef CONFIG_DISCONTIGMEM |
37 | struct node_map_data node_data[MAX_NUMNODES] __read_mostly; | 49 | struct node_map_data node_data[MAX_NUMNODES] __read_mostly; |
38 | unsigned char pfnnid_map[PFNNID_MAP_MAX] __read_mostly; | 50 | unsigned char pfnnid_map[PFNNID_MAP_MAX] __read_mostly; |