diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /arch/m68knommu | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'arch/m68knommu')
-rw-r--r-- | arch/m68knommu/Kconfig | 7 | ||||
-rw-r--r-- | arch/m68knommu/Makefile | 2 | ||||
-rw-r--r-- | arch/m68knommu/kernel/dma.c | 1 | ||||
-rw-r--r-- | arch/m68knommu/kernel/entry.S | 2 | ||||
-rw-r--r-- | arch/m68knommu/kernel/process.c | 11 | ||||
-rw-r--r-- | arch/m68knommu/kernel/ptrace.c | 97 | ||||
-rw-r--r-- | arch/m68knommu/kernel/setup.c | 92 | ||||
-rw-r--r-- | arch/m68knommu/kernel/sys_m68k.c | 206 | ||||
-rw-r--r-- | arch/m68knommu/kernel/syscalltable.S | 10 | ||||
-rw-r--r-- | arch/m68knommu/kernel/vmlinux.lds.S | 47 | ||||
-rw-r--r-- | arch/m68knommu/mm/init.c | 2 | ||||
-rw-r--r-- | arch/m68knommu/mm/kmap.c | 1 | ||||
-rw-r--r-- | arch/m68knommu/mm/memory.c | 2 | ||||
-rw-r--r-- | arch/m68knommu/platform/523x/gpio.c | 5 | ||||
-rw-r--r-- | arch/m68knommu/platform/527x/gpio.c | 6 | ||||
-rw-r--r-- | arch/m68knommu/platform/528x/gpio.c | 2 | ||||
-rw-r--r-- | arch/m68knommu/platform/68360/ints.c | 1 | ||||
-rw-r--r-- | arch/m68knommu/platform/coldfire/clk.c | 7 | ||||
-rw-r--r-- | arch/m68knommu/platform/coldfire/head.S | 10 | ||||
-rw-r--r-- | arch/m68knommu/platform/coldfire/pit.c | 1 |
20 files changed, 209 insertions, 303 deletions
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index e2201b90aa22..064f5913db1a 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig | |||
@@ -533,6 +533,13 @@ config AVNET | |||
533 | default y | 533 | default y |
534 | depends on (AVNET5282) | 534 | depends on (AVNET5282) |
535 | 535 | ||
536 | config UBOOT | ||
537 | bool "Support for U-Boot command line parameters" | ||
538 | help | ||
539 | If you say Y here kernel will try to collect command | ||
540 | line parameters from the initial u-boot stack. | ||
541 | default n | ||
542 | |||
536 | config 4KSTACKS | 543 | config 4KSTACKS |
537 | bool "Use 4Kb for kernel stacks instead of 8Kb" | 544 | bool "Use 4Kb for kernel stacks instead of 8Kb" |
538 | default y | 545 | default y |
diff --git a/arch/m68knommu/Makefile b/arch/m68knommu/Makefile index ce404bc9ccbd..14042574ac21 100644 --- a/arch/m68knommu/Makefile +++ b/arch/m68knommu/Makefile | |||
@@ -94,7 +94,7 @@ cflags-$(CONFIG_M520x) := $(call cc-option,-mcpu=5208,-m5200) | |||
94 | cflags-$(CONFIG_M523x) := $(call cc-option,-mcpu=523x,-m5307) | 94 | cflags-$(CONFIG_M523x) := $(call cc-option,-mcpu=523x,-m5307) |
95 | cflags-$(CONFIG_M5249) := $(call cc-option,-mcpu=5249,-m5200) | 95 | cflags-$(CONFIG_M5249) := $(call cc-option,-mcpu=5249,-m5200) |
96 | cflags-$(CONFIG_M5271) := $(call cc-option,-mcpu=5271,-m5307) | 96 | cflags-$(CONFIG_M5271) := $(call cc-option,-mcpu=5271,-m5307) |
97 | cflags-$(CONFIG_M5272) := $(call cc-option,-mcpu=5271,-m5200) | 97 | cflags-$(CONFIG_M5272) := $(call cc-option,-mcpu=5272,-m5307) |
98 | cflags-$(CONFIG_M5275) := $(call cc-option,-mcpu=5275,-m5307) | 98 | cflags-$(CONFIG_M5275) := $(call cc-option,-mcpu=5275,-m5307) |
99 | cflags-$(CONFIG_M528x) := $(call cc-option,-m528x,-m5307) | 99 | cflags-$(CONFIG_M528x) := $(call cc-option,-m528x,-m5307) |
100 | cflags-$(CONFIG_M5307) := $(call cc-option,-m5307,-m5200) | 100 | cflags-$(CONFIG_M5307) := $(call cc-option,-m5307,-m5200) |
diff --git a/arch/m68knommu/kernel/dma.c b/arch/m68knommu/kernel/dma.c index aaf38bbbb6cd..fc61541aeb71 100644 --- a/arch/m68knommu/kernel/dma.c +++ b/arch/m68knommu/kernel/dma.c | |||
@@ -6,6 +6,7 @@ | |||
6 | */ | 6 | */ |
7 | 7 | ||
8 | #include <linux/types.h> | 8 | #include <linux/types.h> |
9 | #include <linux/gfp.h> | ||
9 | #include <linux/mm.h> | 10 | #include <linux/mm.h> |
10 | #include <linux/device.h> | 11 | #include <linux/device.h> |
11 | #include <linux/dma-mapping.h> | 12 | #include <linux/dma-mapping.h> |
diff --git a/arch/m68knommu/kernel/entry.S b/arch/m68knommu/kernel/entry.S index 56043ade3941..aff6f57ef8b5 100644 --- a/arch/m68knommu/kernel/entry.S +++ b/arch/m68knommu/kernel/entry.S | |||
@@ -145,6 +145,6 @@ ENTRY(ret_from_user_signal) | |||
145 | trap #0 | 145 | trap #0 |
146 | 146 | ||
147 | ENTRY(ret_from_user_rt_signal) | 147 | ENTRY(ret_from_user_rt_signal) |
148 | move #__NR_rt_sigreturn,%d0 | 148 | movel #__NR_rt_sigreturn,%d0 |
149 | trap #0 | 149 | trap #0 |
150 | 150 | ||
diff --git a/arch/m68knommu/kernel/process.c b/arch/m68knommu/kernel/process.c index 8f8f4abab2ff..6aa66134b433 100644 --- a/arch/m68knommu/kernel/process.c +++ b/arch/m68knommu/kernel/process.c | |||
@@ -23,11 +23,11 @@ | |||
23 | #include <linux/stddef.h> | 23 | #include <linux/stddef.h> |
24 | #include <linux/unistd.h> | 24 | #include <linux/unistd.h> |
25 | #include <linux/ptrace.h> | 25 | #include <linux/ptrace.h> |
26 | #include <linux/slab.h> | ||
27 | #include <linux/user.h> | 26 | #include <linux/user.h> |
28 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
29 | #include <linux/reboot.h> | 28 | #include <linux/reboot.h> |
30 | #include <linux/fs.h> | 29 | #include <linux/fs.h> |
30 | #include <linux/slab.h> | ||
31 | 31 | ||
32 | #include <asm/uaccess.h> | 32 | #include <asm/uaccess.h> |
33 | #include <asm/system.h> | 33 | #include <asm/system.h> |
@@ -221,6 +221,10 @@ int copy_thread(unsigned long clone_flags, | |||
221 | 221 | ||
222 | p->thread.usp = usp; | 222 | p->thread.usp = usp; |
223 | p->thread.ksp = (unsigned long)childstack; | 223 | p->thread.ksp = (unsigned long)childstack; |
224 | |||
225 | if (clone_flags & CLONE_SETTLS) | ||
226 | task_thread_info(p)->tp_value = regs->d5; | ||
227 | |||
224 | /* | 228 | /* |
225 | * Must save the current SFC/DFC value, NOT the value when | 229 | * Must save the current SFC/DFC value, NOT the value when |
226 | * the parent was last descheduled - RGH 10-08-96 | 230 | * the parent was last descheduled - RGH 10-08-96 |
@@ -352,15 +356,12 @@ asmlinkage int sys_execve(char *name, char **argv, char **envp) | |||
352 | char * filename; | 356 | char * filename; |
353 | struct pt_regs *regs = (struct pt_regs *) &name; | 357 | struct pt_regs *regs = (struct pt_regs *) &name; |
354 | 358 | ||
355 | lock_kernel(); | ||
356 | filename = getname(name); | 359 | filename = getname(name); |
357 | error = PTR_ERR(filename); | 360 | error = PTR_ERR(filename); |
358 | if (IS_ERR(filename)) | 361 | if (IS_ERR(filename)) |
359 | goto out; | 362 | return error; |
360 | error = do_execve(filename, argv, envp, regs); | 363 | error = do_execve(filename, argv, envp, regs); |
361 | putname(filename); | 364 | putname(filename); |
362 | out: | ||
363 | unlock_kernel(); | ||
364 | return error; | 365 | return error; |
365 | } | 366 | } |
366 | 367 | ||
diff --git a/arch/m68knommu/kernel/ptrace.c b/arch/m68knommu/kernel/ptrace.c index ef70ca070ce2..f6be1248d216 100644 --- a/arch/m68knommu/kernel/ptrace.c +++ b/arch/m68knommu/kernel/ptrace.c | |||
@@ -86,6 +86,20 @@ static inline int put_reg(struct task_struct *task, int regno, | |||
86 | return 0; | 86 | return 0; |
87 | } | 87 | } |
88 | 88 | ||
89 | void user_enable_single_step(struct task_struct *task) | ||
90 | { | ||
91 | unsigned long srflags; | ||
92 | srflags = get_reg(task, PT_SR) | (TRACE_BITS << 16); | ||
93 | put_reg(task, PT_SR, srflags); | ||
94 | } | ||
95 | |||
96 | void user_disable_single_step(struct task_struct *task) | ||
97 | { | ||
98 | unsigned long srflags; | ||
99 | srflags = get_reg(task, PT_SR) & ~(TRACE_BITS << 16); | ||
100 | put_reg(task, PT_SR, srflags); | ||
101 | } | ||
102 | |||
89 | /* | 103 | /* |
90 | * Called by kernel/ptrace.c when detaching.. | 104 | * Called by kernel/ptrace.c when detaching.. |
91 | * | 105 | * |
@@ -93,10 +107,8 @@ static inline int put_reg(struct task_struct *task, int regno, | |||
93 | */ | 107 | */ |
94 | void ptrace_disable(struct task_struct *child) | 108 | void ptrace_disable(struct task_struct *child) |
95 | { | 109 | { |
96 | unsigned long tmp; | ||
97 | /* make sure the single step bit is not set. */ | 110 | /* make sure the single step bit is not set. */ |
98 | tmp = get_reg(child, PT_SR) & ~(TRACE_BITS << 16); | 111 | user_disable_single_step(child); |
99 | put_reg(child, PT_SR, tmp); | ||
100 | } | 112 | } |
101 | 113 | ||
102 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 114 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) |
@@ -104,12 +116,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
104 | int ret; | 116 | int ret; |
105 | 117 | ||
106 | switch (request) { | 118 | switch (request) { |
107 | /* when I and D space are separate, these will need to be fixed. */ | ||
108 | case PTRACE_PEEKTEXT: /* read word at location addr. */ | ||
109 | case PTRACE_PEEKDATA: | ||
110 | ret = generic_ptrace_peekdata(child, addr, data); | ||
111 | break; | ||
112 | |||
113 | /* read the word at location addr in the USER area. */ | 119 | /* read the word at location addr in the USER area. */ |
114 | case PTRACE_PEEKUSR: { | 120 | case PTRACE_PEEKUSR: { |
115 | unsigned long tmp; | 121 | unsigned long tmp; |
@@ -148,12 +154,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
148 | break; | 154 | break; |
149 | } | 155 | } |
150 | 156 | ||
151 | /* when I and D space are separate, this will have to be fixed. */ | ||
152 | case PTRACE_POKETEXT: /* write the word at location addr. */ | ||
153 | case PTRACE_POKEDATA: | ||
154 | ret = generic_ptrace_pokedata(child, addr, data); | ||
155 | break; | ||
156 | |||
157 | case PTRACE_POKEUSR: /* write the word at location addr in the USER area */ | 157 | case PTRACE_POKEUSR: /* write the word at location addr in the USER area */ |
158 | ret = -EIO; | 158 | ret = -EIO; |
159 | if ((addr & 3) || addr < 0 || | 159 | if ((addr & 3) || addr < 0 || |
@@ -190,66 +190,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
190 | } | 190 | } |
191 | break; | 191 | break; |
192 | 192 | ||
193 | case PTRACE_SYSCALL: /* continue and stop at next (return from) syscall */ | ||
194 | case PTRACE_CONT: { /* restart after signal. */ | ||
195 | long tmp; | ||
196 | |||
197 | ret = -EIO; | ||
198 | if (!valid_signal(data)) | ||
199 | break; | ||
200 | if (request == PTRACE_SYSCALL) | ||
201 | set_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | ||
202 | else | ||
203 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | ||
204 | child->exit_code = data; | ||
205 | /* make sure the single step bit is not set. */ | ||
206 | tmp = get_reg(child, PT_SR) & ~(TRACE_BITS << 16); | ||
207 | put_reg(child, PT_SR, tmp); | ||
208 | wake_up_process(child); | ||
209 | ret = 0; | ||
210 | break; | ||
211 | } | ||
212 | |||
213 | /* | ||
214 | * make the child exit. Best I can do is send it a sigkill. | ||
215 | * perhaps it should be put in the status that it wants to | ||
216 | * exit. | ||
217 | */ | ||
218 | case PTRACE_KILL: { | ||
219 | long tmp; | ||
220 | |||
221 | ret = 0; | ||
222 | if (child->exit_state == EXIT_ZOMBIE) /* already dead */ | ||
223 | break; | ||
224 | child->exit_code = SIGKILL; | ||
225 | /* make sure the single step bit is not set. */ | ||
226 | tmp = get_reg(child, PT_SR) & ~(TRACE_BITS << 16); | ||
227 | put_reg(child, PT_SR, tmp); | ||
228 | wake_up_process(child); | ||
229 | break; | ||
230 | } | ||
231 | |||
232 | case PTRACE_SINGLESTEP: { /* set the trap flag. */ | ||
233 | long tmp; | ||
234 | |||
235 | ret = -EIO; | ||
236 | if (!valid_signal(data)) | ||
237 | break; | ||
238 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | ||
239 | tmp = get_reg(child, PT_SR) | (TRACE_BITS << 16); | ||
240 | put_reg(child, PT_SR, tmp); | ||
241 | |||
242 | child->exit_code = data; | ||
243 | /* give it a chance to run. */ | ||
244 | wake_up_process(child); | ||
245 | ret = 0; | ||
246 | break; | ||
247 | } | ||
248 | |||
249 | case PTRACE_DETACH: /* detach a process that was attached. */ | ||
250 | ret = ptrace_detach(child, data); | ||
251 | break; | ||
252 | |||
253 | case PTRACE_GETREGS: { /* Get all gp regs from the child. */ | 193 | case PTRACE_GETREGS: { /* Get all gp regs from the child. */ |
254 | int i; | 194 | int i; |
255 | unsigned long tmp; | 195 | unsigned long tmp; |
@@ -307,8 +247,13 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
307 | } | 247 | } |
308 | #endif | 248 | #endif |
309 | 249 | ||
250 | case PTRACE_GET_THREAD_AREA: | ||
251 | ret = put_user(task_thread_info(child)->tp_value, | ||
252 | (unsigned long __user *)data); | ||
253 | break; | ||
254 | |||
310 | default: | 255 | default: |
311 | ret = -EIO; | 256 | ret = ptrace_request(child, request, addr, data); |
312 | break; | 257 | break; |
313 | } | 258 | } |
314 | return ret; | 259 | return ret; |
diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c index 5c2bb3eeaaa2..ba92b90d5fbc 100644 --- a/arch/m68knommu/kernel/setup.c +++ b/arch/m68knommu/kernel/setup.c | |||
@@ -29,6 +29,8 @@ | |||
29 | #include <linux/bootmem.h> | 29 | #include <linux/bootmem.h> |
30 | #include <linux/seq_file.h> | 30 | #include <linux/seq_file.h> |
31 | #include <linux/init.h> | 31 | #include <linux/init.h> |
32 | #include <linux/initrd.h> | ||
33 | #include <linux/root_dev.h> | ||
32 | 34 | ||
33 | #include <asm/setup.h> | 35 | #include <asm/setup.h> |
34 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
@@ -52,7 +54,6 @@ void (*mach_reset)(void); | |||
52 | void (*mach_halt)(void); | 54 | void (*mach_halt)(void); |
53 | void (*mach_power_off)(void); | 55 | void (*mach_power_off)(void); |
54 | 56 | ||
55 | |||
56 | #ifdef CONFIG_M68000 | 57 | #ifdef CONFIG_M68000 |
57 | #define CPU "MC68000" | 58 | #define CPU "MC68000" |
58 | #endif | 59 | #endif |
@@ -111,6 +112,69 @@ void (*mach_power_off)(void); | |||
111 | extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; | 112 | extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; |
112 | extern int _ramstart, _ramend; | 113 | extern int _ramstart, _ramend; |
113 | 114 | ||
115 | #if defined(CONFIG_UBOOT) | ||
116 | /* | ||
117 | * parse_uboot_commandline | ||
118 | * | ||
119 | * Copies u-boot commandline arguments and store them in the proper linux | ||
120 | * variables. | ||
121 | * | ||
122 | * Assumes: | ||
123 | * _init_sp global contains the address in the stack pointer when the | ||
124 | * kernel starts (see head.S::_start) | ||
125 | * | ||
126 | * U-Boot calling convention: | ||
127 | * (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end); | ||
128 | * | ||
129 | * _init_sp can be parsed as such | ||
130 | * | ||
131 | * _init_sp+00 = u-boot cmd after jsr into kernel (skip) | ||
132 | * _init_sp+04 = &kernel board_info (residual data) | ||
133 | * _init_sp+08 = &initrd_start | ||
134 | * _init_sp+12 = &initrd_end | ||
135 | * _init_sp+16 = &cmd_start | ||
136 | * _init_sp+20 = &cmd_end | ||
137 | * | ||
138 | * This also assumes that the memory locations pointed to are still | ||
139 | * unmodified. U-boot places them near the end of external SDRAM. | ||
140 | * | ||
141 | * Argument(s): | ||
142 | * commandp = the linux commandline arg container to fill. | ||
143 | * size = the sizeof commandp. | ||
144 | * | ||
145 | * Returns: | ||
146 | */ | ||
147 | void parse_uboot_commandline(char *commandp, int size) | ||
148 | { | ||
149 | extern unsigned long _init_sp; | ||
150 | unsigned long *sp; | ||
151 | unsigned long uboot_kbd; | ||
152 | unsigned long uboot_initrd_start, uboot_initrd_end; | ||
153 | unsigned long uboot_cmd_start, uboot_cmd_end; | ||
154 | |||
155 | |||
156 | sp = (unsigned long *)_init_sp; | ||
157 | uboot_kbd = sp[1]; | ||
158 | uboot_initrd_start = sp[2]; | ||
159 | uboot_initrd_end = sp[3]; | ||
160 | uboot_cmd_start = sp[4]; | ||
161 | uboot_cmd_end = sp[5]; | ||
162 | |||
163 | if (uboot_cmd_start && uboot_cmd_end) | ||
164 | strncpy(commandp, (const char *)uboot_cmd_start, size); | ||
165 | #if defined(CONFIG_BLK_DEV_INITRD) | ||
166 | if (uboot_initrd_start && uboot_initrd_end && | ||
167 | (uboot_initrd_end > uboot_initrd_start)) { | ||
168 | initrd_start = uboot_initrd_start; | ||
169 | initrd_end = uboot_initrd_end; | ||
170 | ROOT_DEV = Root_RAM0; | ||
171 | printk(KERN_INFO "initrd at 0x%lx:0x%lx\n", | ||
172 | initrd_start, initrd_end); | ||
173 | } | ||
174 | #endif /* if defined(CONFIG_BLK_DEV_INITRD) */ | ||
175 | } | ||
176 | #endif /* #if defined(CONFIG_UBOOT) */ | ||
177 | |||
114 | void __init setup_arch(char **cmdline_p) | 178 | void __init setup_arch(char **cmdline_p) |
115 | { | 179 | { |
116 | int bootmap_size; | 180 | int bootmap_size; |
@@ -128,7 +192,24 @@ void __init setup_arch(char **cmdline_p) | |||
128 | #if defined(CONFIG_BOOTPARAM) | 192 | #if defined(CONFIG_BOOTPARAM) |
129 | strncpy(&command_line[0], CONFIG_BOOTPARAM_STRING, sizeof(command_line)); | 193 | strncpy(&command_line[0], CONFIG_BOOTPARAM_STRING, sizeof(command_line)); |
130 | command_line[sizeof(command_line) - 1] = 0; | 194 | command_line[sizeof(command_line) - 1] = 0; |
131 | #endif | 195 | #endif /* CONFIG_BOOTPARAM */ |
196 | |||
197 | #if defined(CONFIG_UBOOT) | ||
198 | /* CONFIG_UBOOT and CONFIG_BOOTPARAM defined, concatenate cmdline */ | ||
199 | #if defined(CONFIG_BOOTPARAM) | ||
200 | /* Add the whitespace separator */ | ||
201 | command_line[strlen(CONFIG_BOOTPARAM_STRING)] = ' '; | ||
202 | /* Parse uboot command line into the rest of the buffer */ | ||
203 | parse_uboot_commandline( | ||
204 | &command_line[(strlen(CONFIG_BOOTPARAM_STRING)+1)], | ||
205 | (sizeof(command_line) - | ||
206 | (strlen(CONFIG_BOOTPARAM_STRING)+1))); | ||
207 | /* Only CONFIG_UBOOT defined, create cmdline */ | ||
208 | #else | ||
209 | parse_uboot_commandline(&command_line[0], sizeof(command_line)); | ||
210 | #endif /* CONFIG_BOOTPARAM */ | ||
211 | command_line[sizeof(command_line) - 1] = 0; | ||
212 | #endif /* CONFIG_UBOOT */ | ||
132 | 213 | ||
133 | printk(KERN_INFO "\x0F\r\n\nuClinux/" CPU "\n"); | 214 | printk(KERN_INFO "\x0F\r\n\nuClinux/" CPU "\n"); |
134 | 215 | ||
@@ -204,6 +285,13 @@ void __init setup_arch(char **cmdline_p) | |||
204 | free_bootmem(memory_start, memory_end - memory_start); | 285 | free_bootmem(memory_start, memory_end - memory_start); |
205 | reserve_bootmem(memory_start, bootmap_size, BOOTMEM_DEFAULT); | 286 | reserve_bootmem(memory_start, bootmap_size, BOOTMEM_DEFAULT); |
206 | 287 | ||
288 | #if defined(CONFIG_UBOOT) && defined(CONFIG_BLK_DEV_INITRD) | ||
289 | if ((initrd_start > 0) && (initrd_start < initrd_end) && | ||
290 | (initrd_end < memory_end)) | ||
291 | reserve_bootmem(initrd_start, initrd_end - initrd_start, | ||
292 | BOOTMEM_DEFAULT); | ||
293 | #endif /* if defined(CONFIG_BLK_DEV_INITRD) */ | ||
294 | |||
207 | /* | 295 | /* |
208 | * Get kmalloc into gear. | 296 | * Get kmalloc into gear. |
209 | */ | 297 | */ |
diff --git a/arch/m68knommu/kernel/sys_m68k.c b/arch/m68knommu/kernel/sys_m68k.c index efdd090778a3..d65e9c4c930c 100644 --- a/arch/m68knommu/kernel/sys_m68k.c +++ b/arch/m68knommu/kernel/sys_m68k.c | |||
@@ -27,176 +27,6 @@ | |||
27 | #include <asm/cacheflush.h> | 27 | #include <asm/cacheflush.h> |
28 | #include <asm/unistd.h> | 28 | #include <asm/unistd.h> |
29 | 29 | ||
30 | /* common code for old and new mmaps */ | ||
31 | static inline long do_mmap2( | ||
32 | unsigned long addr, unsigned long len, | ||
33 | unsigned long prot, unsigned long flags, | ||
34 | unsigned long fd, unsigned long pgoff) | ||
35 | { | ||
36 | int error = -EBADF; | ||
37 | struct file * file = NULL; | ||
38 | |||
39 | flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); | ||
40 | if (!(flags & MAP_ANONYMOUS)) { | ||
41 | file = fget(fd); | ||
42 | if (!file) | ||
43 | goto out; | ||
44 | } | ||
45 | |||
46 | down_write(¤t->mm->mmap_sem); | ||
47 | error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); | ||
48 | up_write(¤t->mm->mmap_sem); | ||
49 | |||
50 | if (file) | ||
51 | fput(file); | ||
52 | out: | ||
53 | return error; | ||
54 | } | ||
55 | |||
56 | asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, | ||
57 | unsigned long prot, unsigned long flags, | ||
58 | unsigned long fd, unsigned long pgoff) | ||
59 | { | ||
60 | return do_mmap2(addr, len, prot, flags, fd, pgoff); | ||
61 | } | ||
62 | |||
63 | /* | ||
64 | * Perform the select(nd, in, out, ex, tv) and mmap() system | ||
65 | * calls. Linux/m68k cloned Linux/i386, which didn't use to be able to | ||
66 | * handle more than 4 system call parameters, so these system calls | ||
67 | * used a memory block for parameter passing.. | ||
68 | */ | ||
69 | |||
70 | struct mmap_arg_struct { | ||
71 | unsigned long addr; | ||
72 | unsigned long len; | ||
73 | unsigned long prot; | ||
74 | unsigned long flags; | ||
75 | unsigned long fd; | ||
76 | unsigned long offset; | ||
77 | }; | ||
78 | |||
79 | asmlinkage int old_mmap(struct mmap_arg_struct *arg) | ||
80 | { | ||
81 | struct mmap_arg_struct a; | ||
82 | int error = -EFAULT; | ||
83 | |||
84 | if (copy_from_user(&a, arg, sizeof(a))) | ||
85 | goto out; | ||
86 | |||
87 | error = -EINVAL; | ||
88 | if (a.offset & ~PAGE_MASK) | ||
89 | goto out; | ||
90 | |||
91 | a.flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); | ||
92 | |||
93 | error = do_mmap2(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT); | ||
94 | out: | ||
95 | return error; | ||
96 | } | ||
97 | |||
98 | struct sel_arg_struct { | ||
99 | unsigned long n; | ||
100 | fd_set *inp, *outp, *exp; | ||
101 | struct timeval *tvp; | ||
102 | }; | ||
103 | |||
104 | asmlinkage int old_select(struct sel_arg_struct *arg) | ||
105 | { | ||
106 | struct sel_arg_struct a; | ||
107 | |||
108 | if (copy_from_user(&a, arg, sizeof(a))) | ||
109 | return -EFAULT; | ||
110 | /* sys_select() does the appropriate kernel locking */ | ||
111 | return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp); | ||
112 | } | ||
113 | |||
114 | /* | ||
115 | * sys_ipc() is the de-multiplexer for the SysV IPC calls.. | ||
116 | * | ||
117 | * This is really horribly ugly. | ||
118 | */ | ||
119 | asmlinkage int sys_ipc (uint call, int first, int second, | ||
120 | int third, void *ptr, long fifth) | ||
121 | { | ||
122 | int version, ret; | ||
123 | |||
124 | version = call >> 16; /* hack for backward compatibility */ | ||
125 | call &= 0xffff; | ||
126 | |||
127 | if (call <= SEMCTL) | ||
128 | switch (call) { | ||
129 | case SEMOP: | ||
130 | return sys_semop (first, (struct sembuf *)ptr, second); | ||
131 | case SEMGET: | ||
132 | return sys_semget (first, second, third); | ||
133 | case SEMCTL: { | ||
134 | union semun fourth; | ||
135 | if (!ptr) | ||
136 | return -EINVAL; | ||
137 | if (get_user(fourth.__pad, (void **) ptr)) | ||
138 | return -EFAULT; | ||
139 | return sys_semctl (first, second, third, fourth); | ||
140 | } | ||
141 | default: | ||
142 | return -EINVAL; | ||
143 | } | ||
144 | if (call <= MSGCTL) | ||
145 | switch (call) { | ||
146 | case MSGSND: | ||
147 | return sys_msgsnd (first, (struct msgbuf *) ptr, | ||
148 | second, third); | ||
149 | case MSGRCV: | ||
150 | switch (version) { | ||
151 | case 0: { | ||
152 | struct ipc_kludge tmp; | ||
153 | if (!ptr) | ||
154 | return -EINVAL; | ||
155 | if (copy_from_user (&tmp, | ||
156 | (struct ipc_kludge *)ptr, | ||
157 | sizeof (tmp))) | ||
158 | return -EFAULT; | ||
159 | return sys_msgrcv (first, tmp.msgp, second, | ||
160 | tmp.msgtyp, third); | ||
161 | } | ||
162 | default: | ||
163 | return sys_msgrcv (first, | ||
164 | (struct msgbuf *) ptr, | ||
165 | second, fifth, third); | ||
166 | } | ||
167 | case MSGGET: | ||
168 | return sys_msgget ((key_t) first, second); | ||
169 | case MSGCTL: | ||
170 | return sys_msgctl (first, second, | ||
171 | (struct msqid_ds *) ptr); | ||
172 | default: | ||
173 | return -EINVAL; | ||
174 | } | ||
175 | if (call <= SHMCTL) | ||
176 | switch (call) { | ||
177 | case SHMAT: | ||
178 | switch (version) { | ||
179 | default: { | ||
180 | ulong raddr; | ||
181 | ret = do_shmat (first, ptr, second, &raddr); | ||
182 | if (ret) | ||
183 | return ret; | ||
184 | return put_user (raddr, (ulong __user *) third); | ||
185 | } | ||
186 | } | ||
187 | case SHMDT: | ||
188 | return sys_shmdt (ptr); | ||
189 | case SHMGET: | ||
190 | return sys_shmget (first, second, third); | ||
191 | case SHMCTL: | ||
192 | return sys_shmctl (first, second, ptr); | ||
193 | default: | ||
194 | return -ENOSYS; | ||
195 | } | ||
196 | |||
197 | return -EINVAL; | ||
198 | } | ||
199 | |||
200 | /* sys_cacheflush -- flush (part of) the processor cache. */ | 30 | /* sys_cacheflush -- flush (part of) the processor cache. */ |
201 | asmlinkage int | 31 | asmlinkage int |
202 | sys_cacheflush (unsigned long addr, int scope, int cache, unsigned long len) | 32 | sys_cacheflush (unsigned long addr, int scope, int cache, unsigned long len) |
@@ -224,3 +54,39 @@ int kernel_execve(const char *filename, char *const argv[], char *const envp[]) | |||
224 | : "d" (__a), "d" (__b), "d" (__c)); | 54 | : "d" (__a), "d" (__b), "d" (__c)); |
225 | return __res; | 55 | return __res; |
226 | } | 56 | } |
57 | |||
58 | asmlinkage unsigned long sys_get_thread_area(void) | ||
59 | { | ||
60 | return current_thread_info()->tp_value; | ||
61 | } | ||
62 | |||
63 | asmlinkage int sys_set_thread_area(unsigned long tp) | ||
64 | { | ||
65 | current_thread_info()->tp_value = tp; | ||
66 | return 0; | ||
67 | } | ||
68 | |||
69 | /* This syscall gets its arguments in A0 (mem), D2 (oldval) and | ||
70 | D1 (newval). */ | ||
71 | asmlinkage int | ||
72 | sys_atomic_cmpxchg_32(unsigned long newval, int oldval, int d3, int d4, int d5, | ||
73 | unsigned long __user * mem) | ||
74 | { | ||
75 | struct mm_struct *mm = current->mm; | ||
76 | unsigned long mem_value; | ||
77 | |||
78 | down_read(&mm->mmap_sem); | ||
79 | |||
80 | mem_value = *mem; | ||
81 | if (mem_value == oldval) | ||
82 | *mem = newval; | ||
83 | |||
84 | up_read(&mm->mmap_sem); | ||
85 | return mem_value; | ||
86 | } | ||
87 | |||
88 | asmlinkage int sys_atomic_barrier(void) | ||
89 | { | ||
90 | /* no code needed for uniprocs */ | ||
91 | return 0; | ||
92 | } | ||
diff --git a/arch/m68knommu/kernel/syscalltable.S b/arch/m68knommu/kernel/syscalltable.S index 23535cc415ae..b30b3eb197a5 100644 --- a/arch/m68knommu/kernel/syscalltable.S +++ b/arch/m68knommu/kernel/syscalltable.S | |||
@@ -100,7 +100,7 @@ ENTRY(sys_call_table) | |||
100 | .long sys_settimeofday | 100 | .long sys_settimeofday |
101 | .long sys_getgroups16 /* 80 */ | 101 | .long sys_getgroups16 /* 80 */ |
102 | .long sys_setgroups16 | 102 | .long sys_setgroups16 |
103 | .long old_select | 103 | .long sys_old_select |
104 | .long sys_symlink | 104 | .long sys_symlink |
105 | .long sys_lstat | 105 | .long sys_lstat |
106 | .long sys_readlink /* 85 */ | 106 | .long sys_readlink /* 85 */ |
@@ -108,7 +108,7 @@ ENTRY(sys_call_table) | |||
108 | .long sys_ni_syscall /* sys_swapon */ | 108 | .long sys_ni_syscall /* sys_swapon */ |
109 | .long sys_reboot | 109 | .long sys_reboot |
110 | .long sys_old_readdir | 110 | .long sys_old_readdir |
111 | .long old_mmap /* 90 */ | 111 | .long sys_old_mmap /* 90 */ |
112 | .long sys_munmap | 112 | .long sys_munmap |
113 | .long sys_truncate | 113 | .long sys_truncate |
114 | .long sys_ftruncate | 114 | .long sys_ftruncate |
@@ -210,7 +210,7 @@ ENTRY(sys_call_table) | |||
210 | .long sys_ni_syscall /* streams2 */ | 210 | .long sys_ni_syscall /* streams2 */ |
211 | .long sys_vfork /* 190 */ | 211 | .long sys_vfork /* 190 */ |
212 | .long sys_getrlimit | 212 | .long sys_getrlimit |
213 | .long sys_mmap2 | 213 | .long sys_mmap_pgoff |
214 | .long sys_truncate64 | 214 | .long sys_truncate64 |
215 | .long sys_ftruncate64 | 215 | .long sys_ftruncate64 |
216 | .long sys_stat64 /* 195 */ | 216 | .long sys_stat64 /* 195 */ |
@@ -351,6 +351,10 @@ ENTRY(sys_call_table) | |||
351 | .long sys_pwritev /* 330 */ | 351 | .long sys_pwritev /* 330 */ |
352 | .long sys_rt_tgsigqueueinfo | 352 | .long sys_rt_tgsigqueueinfo |
353 | .long sys_perf_event_open | 353 | .long sys_perf_event_open |
354 | .long sys_get_thread_area | ||
355 | .long sys_set_thread_area | ||
356 | .long sys_atomic_cmpxchg_32 /* 335 */ | ||
357 | .long sys_atomic_barrier | ||
354 | 358 | ||
355 | .rept NR_syscalls-(.-sys_call_table)/4 | 359 | .rept NR_syscalls-(.-sys_call_table)/4 |
356 | .long sys_ni_syscall | 360 | .long sys_ni_syscall |
diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index 2736a5e309c0..9f1784f586b9 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S | |||
@@ -8,6 +8,8 @@ | |||
8 | */ | 8 | */ |
9 | 9 | ||
10 | #include <asm-generic/vmlinux.lds.h> | 10 | #include <asm-generic/vmlinux.lds.h> |
11 | #include <asm/page.h> | ||
12 | #include <asm/thread_info.h> | ||
11 | 13 | ||
12 | #if defined(CONFIG_RAMKERNEL) | 14 | #if defined(CONFIG_RAMKERNEL) |
13 | #define RAM_START CONFIG_KERNELBASE | 15 | #define RAM_START CONFIG_KERNELBASE |
@@ -15,7 +17,7 @@ | |||
15 | #define TEXT ram | 17 | #define TEXT ram |
16 | #define DATA ram | 18 | #define DATA ram |
17 | #define INIT ram | 19 | #define INIT ram |
18 | #define BSS ram | 20 | #define BSSS ram |
19 | #endif | 21 | #endif |
20 | #if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL) | 22 | #if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL) |
21 | #define RAM_START CONFIG_RAMBASE | 23 | #define RAM_START CONFIG_RAMBASE |
@@ -27,7 +29,7 @@ | |||
27 | #define TEXT rom | 29 | #define TEXT rom |
28 | #define DATA ram | 30 | #define DATA ram |
29 | #define INIT ram | 31 | #define INIT ram |
30 | #define BSS ram | 32 | #define BSSS ram |
31 | #endif | 33 | #endif |
32 | 34 | ||
33 | #ifndef DATA_ADDR | 35 | #ifndef DATA_ADDR |
@@ -147,40 +149,19 @@ SECTIONS { | |||
147 | . = ALIGN(4); | 149 | . = ALIGN(4); |
148 | _sdata = . ; | 150 | _sdata = . ; |
149 | DATA_DATA | 151 | DATA_DATA |
150 | . = ALIGN(32); | 152 | CACHELINE_ALIGNED_DATA(32) |
151 | *(.data.cacheline_aligned) | 153 | INIT_TASK_DATA(THREAD_SIZE) |
152 | . = ALIGN(8192) ; | ||
153 | *(.data.init_task) | ||
154 | _edata = . ; | 154 | _edata = . ; |
155 | } > DATA | 155 | } > DATA |
156 | 156 | ||
157 | .init : { | 157 | .init.text : { |
158 | . = ALIGN(4096); | 158 | . = ALIGN(PAGE_SIZE); |
159 | __init_begin = .; | 159 | __init_begin = .; |
160 | _sinittext = .; | 160 | } > INIT |
161 | INIT_TEXT | 161 | INIT_TEXT_SECTION(PAGE_SIZE) > INIT |
162 | _einittext = .; | 162 | INIT_DATA_SECTION(16) > INIT |
163 | INIT_DATA | 163 | .init.data : { |
164 | . = ALIGN(16); | 164 | . = ALIGN(PAGE_SIZE); |
165 | __setup_start = .; | ||
166 | *(.init.setup) | ||
167 | __setup_end = .; | ||
168 | __initcall_start = .; | ||
169 | INITCALLS | ||
170 | __initcall_end = .; | ||
171 | __con_initcall_start = .; | ||
172 | *(.con_initcall.init) | ||
173 | __con_initcall_end = .; | ||
174 | __security_initcall_start = .; | ||
175 | *(.security_initcall.init) | ||
176 | __security_initcall_end = .; | ||
177 | #ifdef CONFIG_BLK_DEV_INITRD | ||
178 | . = ALIGN(4); | ||
179 | __initramfs_start = .; | ||
180 | *(.init.ramfs) | ||
181 | __initramfs_end = .; | ||
182 | #endif | ||
183 | . = ALIGN(4096); | ||
184 | __init_end = .; | 165 | __init_end = .; |
185 | } > INIT | 166 | } > INIT |
186 | 167 | ||
@@ -192,7 +173,7 @@ SECTIONS { | |||
192 | . = ALIGN(4) ; | 173 | . = ALIGN(4) ; |
193 | _ebss = . ; | 174 | _ebss = . ; |
194 | _end = . ; | 175 | _end = . ; |
195 | } > BSS | 176 | } > BSSS |
196 | 177 | ||
197 | DISCARDS | 178 | DISCARDS |
198 | } | 179 | } |
diff --git a/arch/m68knommu/mm/init.c b/arch/m68knommu/mm/init.c index f3236d0b522d..8a6653f56bd8 100644 --- a/arch/m68knommu/mm/init.c +++ b/arch/m68knommu/mm/init.c | |||
@@ -29,7 +29,7 @@ | |||
29 | #include <linux/highmem.h> | 29 | #include <linux/highmem.h> |
30 | #include <linux/pagemap.h> | 30 | #include <linux/pagemap.h> |
31 | #include <linux/bootmem.h> | 31 | #include <linux/bootmem.h> |
32 | #include <linux/slab.h> | 32 | #include <linux/gfp.h> |
33 | 33 | ||
34 | #include <asm/setup.h> | 34 | #include <asm/setup.h> |
35 | #include <asm/segment.h> | 35 | #include <asm/segment.h> |
diff --git a/arch/m68knommu/mm/kmap.c b/arch/m68knommu/mm/kmap.c index bc32f38843f0..902c1dfda9e5 100644 --- a/arch/m68knommu/mm/kmap.c +++ b/arch/m68knommu/mm/kmap.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
10 | #include <linux/string.h> | 10 | #include <linux/string.h> |
11 | #include <linux/types.h> | 11 | #include <linux/types.h> |
12 | #include <linux/slab.h> | ||
13 | #include <linux/vmalloc.h> | 12 | #include <linux/vmalloc.h> |
14 | 13 | ||
15 | #include <asm/setup.h> | 14 | #include <asm/setup.h> |
diff --git a/arch/m68knommu/mm/memory.c b/arch/m68knommu/mm/memory.c index f93b88b51f9f..8f7949e786d4 100644 --- a/arch/m68knommu/mm/memory.c +++ b/arch/m68knommu/mm/memory.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/string.h> | 16 | #include <linux/string.h> |
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | #include <linux/slab.h> | ||
19 | 18 | ||
20 | #include <asm/segment.h> | 19 | #include <asm/segment.h> |
21 | #include <asm/page.h> | 20 | #include <asm/page.h> |
@@ -24,7 +23,6 @@ | |||
24 | 23 | ||
25 | /* | 24 | /* |
26 | * Map some physical address range into the kernel address space. | 25 | * Map some physical address range into the kernel address space. |
27 | * The code is copied and adapted from map_chunk(). | ||
28 | */ | 26 | */ |
29 | 27 | ||
30 | unsigned long kernel_map(unsigned long paddr, unsigned long size, | 28 | unsigned long kernel_map(unsigned long paddr, unsigned long size, |
diff --git a/arch/m68knommu/platform/523x/gpio.c b/arch/m68knommu/platform/523x/gpio.c index f02840d54d3c..a8842dc27839 100644 --- a/arch/m68knommu/platform/523x/gpio.c +++ b/arch/m68knommu/platform/523x/gpio.c | |||
@@ -30,7 +30,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { | |||
30 | .direction_output = mcf_gpio_direction_output, | 30 | .direction_output = mcf_gpio_direction_output, |
31 | .get = mcf_gpio_get_value, | 31 | .get = mcf_gpio_get_value, |
32 | .set = mcf_gpio_set_value, | 32 | .set = mcf_gpio_set_value, |
33 | .ngpio = 8, | 33 | .base = 1, |
34 | .ngpio = 7, | ||
34 | }, | 35 | }, |
35 | .pddr = MCFEPORT_EPDDR, | 36 | .pddr = MCFEPORT_EPDDR, |
36 | .podr = MCFEPORT_EPDR, | 37 | .podr = MCFEPORT_EPDR, |
@@ -244,7 +245,7 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { | |||
244 | .get = mcf_gpio_get_value, | 245 | .get = mcf_gpio_get_value, |
245 | .set = mcf_gpio_set_value_fast, | 246 | .set = mcf_gpio_set_value_fast, |
246 | .base = 96, | 247 | .base = 96, |
247 | .ngpio = 4, | 248 | .ngpio = 8, |
248 | }, | 249 | }, |
249 | .pddr = MCFGPIO_PDDR_TIMER, | 250 | .pddr = MCFGPIO_PDDR_TIMER, |
250 | .podr = MCFGPIO_PODR_TIMER, | 251 | .podr = MCFGPIO_PODR_TIMER, |
diff --git a/arch/m68knommu/platform/527x/gpio.c b/arch/m68knommu/platform/527x/gpio.c index 1028142851ac..0b56e19db0f8 100644 --- a/arch/m68knommu/platform/527x/gpio.c +++ b/arch/m68knommu/platform/527x/gpio.c | |||
@@ -31,7 +31,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { | |||
31 | .direction_output = mcf_gpio_direction_output, | 31 | .direction_output = mcf_gpio_direction_output, |
32 | .get = mcf_gpio_get_value, | 32 | .get = mcf_gpio_get_value, |
33 | .set = mcf_gpio_set_value, | 33 | .set = mcf_gpio_set_value, |
34 | .ngpio = 8, | 34 | .base = 1, |
35 | .ngpio = 7, | ||
35 | }, | 36 | }, |
36 | .pddr = MCFEPORT_EPDDR, | 37 | .pddr = MCFEPORT_EPDDR, |
37 | .podr = MCFEPORT_EPDR, | 38 | .podr = MCFEPORT_EPDR, |
@@ -263,7 +264,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { | |||
263 | .direction_output = mcf_gpio_direction_output, | 264 | .direction_output = mcf_gpio_direction_output, |
264 | .get = mcf_gpio_get_value, | 265 | .get = mcf_gpio_get_value, |
265 | .set = mcf_gpio_set_value, | 266 | .set = mcf_gpio_set_value, |
266 | .ngpio = 8, | 267 | .base = 1, |
268 | .ngpio = 7, | ||
267 | }, | 269 | }, |
268 | .pddr = MCFEPORT_EPDDR, | 270 | .pddr = MCFEPORT_EPDDR, |
269 | .podr = MCFEPORT_EPDR, | 271 | .podr = MCFEPORT_EPDR, |
diff --git a/arch/m68knommu/platform/528x/gpio.c b/arch/m68knommu/platform/528x/gpio.c index ec593950696a..eedaf0adbcd7 100644 --- a/arch/m68knommu/platform/528x/gpio.c +++ b/arch/m68knommu/platform/528x/gpio.c | |||
@@ -31,7 +31,7 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { | |||
31 | .get = mcf_gpio_get_value, | 31 | .get = mcf_gpio_get_value, |
32 | .set = mcf_gpio_set_value, | 32 | .set = mcf_gpio_set_value, |
33 | .base = 1, | 33 | .base = 1, |
34 | .ngpio = 8, | 34 | .ngpio = 7, |
35 | }, | 35 | }, |
36 | .pddr = MCFEPORT_EPDDR, | 36 | .pddr = MCFEPORT_EPDDR, |
37 | .podr = MCFEPORT_EPDR, | 37 | .podr = MCFEPORT_EPDR, |
diff --git a/arch/m68knommu/platform/68360/ints.c b/arch/m68knommu/platform/68360/ints.c index 1143f77caca4..6f22970d8c20 100644 --- a/arch/m68knommu/platform/68360/ints.c +++ b/arch/m68knommu/platform/68360/ints.c | |||
@@ -107,7 +107,6 @@ void init_IRQ(void) | |||
107 | _ramvec[vba+CPMVEC_PIO_PC7] = inthandler; /* pio - pc7 */ | 107 | _ramvec[vba+CPMVEC_PIO_PC7] = inthandler; /* pio - pc7 */ |
108 | _ramvec[vba+CPMVEC_PIO_PC6] = inthandler; /* pio - pc6 */ | 108 | _ramvec[vba+CPMVEC_PIO_PC6] = inthandler; /* pio - pc6 */ |
109 | _ramvec[vba+CPMVEC_TIMER3] = inthandler; /* timer 3 */ | 109 | _ramvec[vba+CPMVEC_TIMER3] = inthandler; /* timer 3 */ |
110 | _ramvec[vba+CPMVEC_RISCTIMER] = inthandler; /* reserved */ | ||
111 | _ramvec[vba+CPMVEC_PIO_PC5] = inthandler; /* pio - pc5 */ | 110 | _ramvec[vba+CPMVEC_PIO_PC5] = inthandler; /* pio - pc5 */ |
112 | _ramvec[vba+CPMVEC_PIO_PC4] = inthandler; /* pio - pc4 */ | 111 | _ramvec[vba+CPMVEC_PIO_PC4] = inthandler; /* pio - pc4 */ |
113 | _ramvec[vba+CPMVEC_RESERVED2] = inthandler; /* reserved */ | 112 | _ramvec[vba+CPMVEC_RESERVED2] = inthandler; /* reserved */ |
diff --git a/arch/m68knommu/platform/coldfire/clk.c b/arch/m68knommu/platform/coldfire/clk.c index 7cdbf445b28f..9f1260c5e2ad 100644 --- a/arch/m68knommu/platform/coldfire/clk.c +++ b/arch/m68knommu/platform/coldfire/clk.c | |||
@@ -9,6 +9,7 @@ | |||
9 | /***************************************************************************/ | 9 | /***************************************************************************/ |
10 | 10 | ||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/module.h> | ||
12 | #include <linux/clk.h> | 13 | #include <linux/clk.h> |
13 | #include <asm/coldfire.h> | 14 | #include <asm/coldfire.h> |
14 | 15 | ||
@@ -18,23 +19,27 @@ struct clk *clk_get(struct device *dev, const char *id) | |||
18 | { | 19 | { |
19 | return NULL; | 20 | return NULL; |
20 | } | 21 | } |
22 | EXPORT_SYMBOL(clk_get); | ||
21 | 23 | ||
22 | int clk_enable(struct clk *clk) | 24 | int clk_enable(struct clk *clk) |
23 | { | 25 | { |
24 | return 0; | 26 | return 0; |
25 | } | 27 | } |
28 | EXPORT_SYMBOL(clk_enable); | ||
26 | 29 | ||
27 | void clk_disable(struct clk *clk) | 30 | void clk_disable(struct clk *clk) |
28 | { | 31 | { |
29 | } | 32 | } |
33 | EXPORT_SYMBOL(clk_disable); | ||
30 | 34 | ||
31 | void clk_put(struct clk *clk) | 35 | void clk_put(struct clk *clk) |
32 | { | 36 | { |
33 | } | 37 | } |
38 | EXPORT_SYMBOL(clk_put); | ||
34 | 39 | ||
35 | unsigned long clk_get_rate(struct clk *clk) | 40 | unsigned long clk_get_rate(struct clk *clk) |
36 | { | 41 | { |
37 | return MCF_CLK; | 42 | return MCF_CLK; |
38 | } | 43 | } |
39 | 44 | EXPORT_SYMBOL(clk_get_rate); | |
40 | /***************************************************************************/ | 45 | /***************************************************************************/ |
diff --git a/arch/m68knommu/platform/coldfire/head.S b/arch/m68knommu/platform/coldfire/head.S index 2b0d73c0cc32..4b91aa24eb00 100644 --- a/arch/m68knommu/platform/coldfire/head.S +++ b/arch/m68knommu/platform/coldfire/head.S | |||
@@ -106,6 +106,9 @@ | |||
106 | .global _ramvec | 106 | .global _ramvec |
107 | .global _ramstart | 107 | .global _ramstart |
108 | .global _ramend | 108 | .global _ramend |
109 | #if defined(CONFIG_UBOOT) | ||
110 | .global _init_sp | ||
111 | #endif | ||
109 | 112 | ||
110 | /*****************************************************************************/ | 113 | /*****************************************************************************/ |
111 | 114 | ||
@@ -124,6 +127,10 @@ _ramstart: | |||
124 | .long 0 | 127 | .long 0 |
125 | _ramend: | 128 | _ramend: |
126 | .long 0 | 129 | .long 0 |
130 | #if defined(CONFIG_UBOOT) | ||
131 | _init_sp: | ||
132 | .long 0 | ||
133 | #endif | ||
127 | 134 | ||
128 | /*****************************************************************************/ | 135 | /*****************************************************************************/ |
129 | 136 | ||
@@ -137,6 +144,9 @@ __HEAD | |||
137 | _start: | 144 | _start: |
138 | nop /* filler */ | 145 | nop /* filler */ |
139 | movew #0x2700, %sr /* no interrupts */ | 146 | movew #0x2700, %sr /* no interrupts */ |
147 | #if defined(CONFIG_UBOOT) | ||
148 | movel %sp,_init_sp /* save initial stack pointer */ | ||
149 | #endif | ||
140 | 150 | ||
141 | /* | 151 | /* |
142 | * Do any platform or board specific setup now. Most boards | 152 | * Do any platform or board specific setup now. Most boards |
diff --git a/arch/m68knommu/platform/coldfire/pit.c b/arch/m68knommu/platform/coldfire/pit.c index d8720ee34510..aebea19abd78 100644 --- a/arch/m68knommu/platform/coldfire/pit.c +++ b/arch/m68knommu/platform/coldfire/pit.c | |||
@@ -146,7 +146,6 @@ static struct clocksource pit_clk = { | |||
146 | .read = pit_read_clk, | 146 | .read = pit_read_clk, |
147 | .shift = 20, | 147 | .shift = 20, |
148 | .mask = CLOCKSOURCE_MASK(32), | 148 | .mask = CLOCKSOURCE_MASK(32), |
149 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
150 | }; | 149 | }; |
151 | 150 | ||
152 | /***************************************************************************/ | 151 | /***************************************************************************/ |