diff options
-rw-r--r-- | MAINTAINERS | 2 | ||||
-rw-r--r-- | arch/score/include/asm/page.h | 3 | ||||
-rw-r--r-- | arch/score/include/asm/thread_info.h | 15 | ||||
-rw-r--r-- | arch/score/kernel/vmlinux.lds.S | 77 |
4 files changed, 21 insertions, 76 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index d8973ca86f2a..ed6cd99a57ba 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -4465,7 +4465,7 @@ SCORE ARCHITECTURE | |||
4465 | P: Chen Liqin | 4465 | P: Chen Liqin |
4466 | M: liqin.chen@sunplusct.com | 4466 | M: liqin.chen@sunplusct.com |
4467 | P: Lennox Wu | 4467 | P: Lennox Wu |
4468 | M: lennox.wu@sunplusct.com | 4468 | M: lennox.wu@gmail.com |
4469 | W: http://www.sunplusct.com | 4469 | W: http://www.sunplusct.com |
4470 | S: Supported | 4470 | S: Supported |
4471 | 4471 | ||
diff --git a/arch/score/include/asm/page.h b/arch/score/include/asm/page.h index ee5821042fcc..d92a5a2d36d4 100644 --- a/arch/score/include/asm/page.h +++ b/arch/score/include/asm/page.h | |||
@@ -2,10 +2,11 @@ | |||
2 | #define _ASM_SCORE_PAGE_H | 2 | #define _ASM_SCORE_PAGE_H |
3 | 3 | ||
4 | #include <linux/pfn.h> | 4 | #include <linux/pfn.h> |
5 | #include <linux/const.h> | ||
5 | 6 | ||
6 | /* PAGE_SHIFT determines the page size */ | 7 | /* PAGE_SHIFT determines the page size */ |
7 | #define PAGE_SHIFT (12) | 8 | #define PAGE_SHIFT (12) |
8 | #define PAGE_SIZE (1UL << PAGE_SHIFT) | 9 | #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) |
9 | #define PAGE_MASK (~(PAGE_SIZE-1)) | 10 | #define PAGE_MASK (~(PAGE_SIZE-1)) |
10 | 11 | ||
11 | #ifdef __KERNEL__ | 12 | #ifdef __KERNEL__ |
diff --git a/arch/score/include/asm/thread_info.h b/arch/score/include/asm/thread_info.h index 3a1122885528..55939992c27d 100644 --- a/arch/score/include/asm/thread_info.h +++ b/arch/score/include/asm/thread_info.h | |||
@@ -7,6 +7,15 @@ | |||
7 | #define KU_USER 0x08 | 7 | #define KU_USER 0x08 |
8 | #define KU_KERN 0x00 | 8 | #define KU_KERN 0x00 |
9 | 9 | ||
10 | #include <asm/page.h> | ||
11 | #include <linux/const.h> | ||
12 | |||
13 | /* thread information allocation */ | ||
14 | #define THREAD_SIZE_ORDER (1) | ||
15 | #define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER) | ||
16 | #define THREAD_MASK (THREAD_SIZE - _AC(1,UL)) | ||
17 | #define __HAVE_ARCH_THREAD_INFO_ALLOCATOR | ||
18 | |||
10 | #ifndef __ASSEMBLY__ | 19 | #ifndef __ASSEMBLY__ |
11 | 20 | ||
12 | #include <asm/processor.h> | 21 | #include <asm/processor.h> |
@@ -62,12 +71,6 @@ struct thread_info { | |||
62 | register struct thread_info *__current_thread_info __asm__("r28"); | 71 | register struct thread_info *__current_thread_info __asm__("r28"); |
63 | #define current_thread_info() __current_thread_info | 72 | #define current_thread_info() __current_thread_info |
64 | 73 | ||
65 | /* thread information allocation */ | ||
66 | #define THREAD_SIZE_ORDER (1) | ||
67 | #define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER) | ||
68 | #define THREAD_MASK (THREAD_SIZE - 1UL) | ||
69 | #define __HAVE_ARCH_THREAD_INFO_ALLOCATOR | ||
70 | |||
71 | #define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL) | 74 | #define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL) |
72 | #define free_thread_info(info) kfree(info) | 75 | #define free_thread_info(info) kfree(info) |
73 | 76 | ||
diff --git a/arch/score/kernel/vmlinux.lds.S b/arch/score/kernel/vmlinux.lds.S index f85569831d5c..eebcbaa4e978 100644 --- a/arch/score/kernel/vmlinux.lds.S +++ b/arch/score/kernel/vmlinux.lds.S | |||
@@ -24,6 +24,8 @@ | |||
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include <asm-generic/vmlinux.lds.h> | 26 | #include <asm-generic/vmlinux.lds.h> |
27 | #include <asm/thread_info.h> | ||
28 | #include <asm/page.h> | ||
27 | 29 | ||
28 | OUTPUT_ARCH(score) | 30 | OUTPUT_ARCH(score) |
29 | ENTRY(_stext) | 31 | ENTRY(_stext) |
@@ -49,21 +51,9 @@ SECTIONS | |||
49 | . = ALIGN(16); | 51 | . = ALIGN(16); |
50 | RODATA | 52 | RODATA |
51 | 53 | ||
52 | /* Exception table */ | 54 | EXCEPTION_TABLE(16) |
53 | . = ALIGN(16); | ||
54 | __ex_table : { | ||
55 | __start___ex_table = .; | ||
56 | *(__ex_table) | ||
57 | __stop___ex_table = .; | ||
58 | } | ||
59 | 55 | ||
60 | /* writeable */ | 56 | RW_DATA_SECTION(32, PAGE_SIZE, THREAD_SIZE) |
61 | .data ALIGN (4096): { | ||
62 | *(.data.init_task) | ||
63 | |||
64 | DATA_DATA | ||
65 | CONSTRUCTORS | ||
66 | } | ||
67 | 57 | ||
68 | /* We want the small data sections together, so single-instruction offsets | 58 | /* We want the small data sections together, so single-instruction offsets |
69 | can access them all, and initialized data all before uninitialized, so | 59 | can access them all, and initialized data all before uninitialized, so |
@@ -72,45 +62,14 @@ SECTIONS | |||
72 | .sdata : { | 62 | .sdata : { |
73 | *(.sdata) | 63 | *(.sdata) |
74 | } | 64 | } |
75 | |||
76 | . = ALIGN(32); | ||
77 | .data.cacheline_aligned : { | ||
78 | *(.data.cacheline_aligned) | ||
79 | } | ||
80 | _edata = .; /* End of data section */ | 65 | _edata = .; /* End of data section */ |
81 | 66 | ||
82 | /* will be freed after init */ | 67 | /* will be freed after init */ |
83 | . = ALIGN(4096); /* Init code and data */ | 68 | . = ALIGN(PAGE_SIZE); /* Init code and data */ |
84 | __init_begin = .; | 69 | __init_begin = .; |
85 | 70 | ||
86 | . = ALIGN(4096); | 71 | INIT_TEXT_SECTION(PAGE_SIZE) |
87 | .init.text : { | 72 | INIT_DATA_SECTION(16) |
88 | _sinittext = .; | ||
89 | INIT_TEXT | ||
90 | _einittext = .; | ||
91 | } | ||
92 | .init.data : { | ||
93 | INIT_DATA | ||
94 | } | ||
95 | . = ALIGN(16); | ||
96 | .init.setup : { | ||
97 | __setup_start = .; | ||
98 | *(.init.setup) | ||
99 | __setup_end = .; | ||
100 | } | ||
101 | |||
102 | .initcall.init : { | ||
103 | __initcall_start = .; | ||
104 | INITCALLS | ||
105 | __initcall_end = .; | ||
106 | } | ||
107 | |||
108 | .con_initcall.init : { | ||
109 | __con_initcall_start = .; | ||
110 | *(.con_initcall.init) | ||
111 | __con_initcall_end = .; | ||
112 | } | ||
113 | SECURITY_INIT | ||
114 | 73 | ||
115 | /* .exit.text is discarded at runtime, not link time, to deal with | 74 | /* .exit.text is discarded at runtime, not link time, to deal with |
116 | * references from .rodata | 75 | * references from .rodata |
@@ -121,28 +80,10 @@ SECTIONS | |||
121 | .exit.data : { | 80 | .exit.data : { |
122 | EXIT_DATA | 81 | EXIT_DATA |
123 | } | 82 | } |
124 | #if defined(CONFIG_BLK_DEV_INITRD) | 83 | . = ALIGN(PAGE_SIZE); |
125 | .init.ramfs ALIGN(4096): { | ||
126 | __initramfs_start = .; | ||
127 | *(.init.ramfs) | ||
128 | __initramfs_end = .; | ||
129 | . = ALIGN(4); | ||
130 | LONG(0); | ||
131 | } | ||
132 | #endif | ||
133 | . = ALIGN(4096); | ||
134 | __init_end = .; | 84 | __init_end = .; |
135 | /* freed after init ends here */ | 85 | /* freed after init ends here */ |
136 | 86 | ||
137 | __bss_start = .; /* BSS */ | 87 | BSS_SECTION(0, 0, 0) |
138 | .sbss : { | ||
139 | *(.sbss) | ||
140 | *(.scommon) | ||
141 | } | ||
142 | .bss : { | ||
143 | *(.bss) | ||
144 | *(COMMON) | ||
145 | } | ||
146 | __bss_stop = .; | ||
147 | _end = .; | 88 | _end = .; |
148 | } | 89 | } |