aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/kernel/ecard.c2
-rw-r--r--arch/arm/kernel/setup.c2
-rw-r--r--arch/arm/kernel/smp.c2
-rw-r--r--arch/arm/kernel/sys_arm.c4
-rw-r--r--arch/arm/kernel/time.c12
-rw-r--r--arch/arm/mach-omap1/board-fsample.c8
-rw-r--r--arch/arm/mach-omap1/board-h2.c11
-rw-r--r--arch/arm/mach-omap1/board-h3.c11
-rw-r--r--arch/arm/mach-omap1/board-innovator.c8
-rw-r--r--arch/arm/mach-omap1/board-nokia770.c8
-rw-r--r--arch/arm/mach-omap1/board-osk.c8
-rw-r--r--arch/arm/mach-omap1/board-perseus2.c9
-rw-r--r--arch/arm/mach-omap2/board-h4.c1
-rw-r--r--arch/arm/mach-pnx4008/clock.c11
-rw-r--r--arch/arm/mm/fault.c4
-rw-r--r--arch/arm/vfp/vfpsingle.c2
16 files changed, 64 insertions, 39 deletions
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c
index eca248d9eba4..3e14b1348c0b 100644
--- a/arch/arm/kernel/ecard.c
+++ b/arch/arm/kernel/ecard.c
@@ -295,7 +295,7 @@ ecard_task(void * unused)
295 */ 295 */
296static void ecard_call(struct ecard_request *req) 296static void ecard_call(struct ecard_request *req)
297{ 297{
298 DECLARE_COMPLETION(completion); 298 DECLARE_COMPLETION_ONSTACK(completion);
299 299
300 req->complete = &completion; 300 req->complete = &completion;
301 301
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index 0a722e77c143..6bbd93dd186a 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -348,7 +348,7 @@ static void __init setup_processor(void)
348 cpu_name, processor_id, (int)processor_id & 15, 348 cpu_name, processor_id, (int)processor_id & 15,
349 proc_arch[cpu_architecture()], cr_alignment); 349 proc_arch[cpu_architecture()], cr_alignment);
350 350
351 sprintf(system_utsname.machine, "%s%c", list->arch_name, ENDIANNESS); 351 sprintf(init_utsname()->machine, "%s%c", list->arch_name, ENDIANNESS);
352 sprintf(elf_platform, "%s%c", list->elf_name, ENDIANNESS); 352 sprintf(elf_platform, "%s%c", list->elf_name, ENDIANNESS);
353 elf_hwcap = list->elf_hwcap; 353 elf_hwcap = list->elf_hwcap;
354#ifndef CONFIG_ARM_THUMB 354#ifndef CONFIG_ARM_THUMB
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index 68e9634d260a..421329f5e18e 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -36,7 +36,9 @@
36 * The online bitmask indicates that the CPU is up and running. 36 * The online bitmask indicates that the CPU is up and running.
37 */ 37 */
38cpumask_t cpu_possible_map; 38cpumask_t cpu_possible_map;
39EXPORT_SYMBOL(cpu_possible_map);
39cpumask_t cpu_online_map; 40cpumask_t cpu_online_map;
41EXPORT_SYMBOL(cpu_online_map);
40 42
41/* 43/*
42 * as from 2.5, kernels no longer have an init_tasks structure 44 * as from 2.5, kernels no longer have an init_tasks structure
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c
index 8170af471439..00c18d35913c 100644
--- a/arch/arm/kernel/sys_arm.c
+++ b/arch/arm/kernel/sys_arm.c
@@ -279,7 +279,7 @@ out:
279 return error; 279 return error;
280} 280}
281 281
282long execve(const char *filename, char **argv, char **envp) 282int kernel_execve(const char *filename, char *const argv[], char *const envp[])
283{ 283{
284 struct pt_regs regs; 284 struct pt_regs regs;
285 int ret; 285 int ret;
@@ -317,7 +317,7 @@ long execve(const char *filename, char **argv, char **envp)
317 out: 317 out:
318 return ret; 318 return ret;
319} 319}
320EXPORT_SYMBOL(execve); 320EXPORT_SYMBOL(kernel_execve);
321 321
322/* 322/*
323 * Since loff_t is a 64 bit type we avoid a lot of ABI hastle 323 * Since loff_t is a 64 bit type we avoid a lot of ABI hastle
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index d4dceb5f06e9..b030320b17c7 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -37,8 +37,6 @@
37 */ 37 */
38struct sys_timer *system_timer; 38struct sys_timer *system_timer;
39 39
40extern unsigned long wall_jiffies;
41
42/* this needs a better home */ 40/* this needs a better home */
43DEFINE_SPINLOCK(rtc_lock); 41DEFINE_SPINLOCK(rtc_lock);
44 42
@@ -237,16 +235,11 @@ void do_gettimeofday(struct timeval *tv)
237{ 235{
238 unsigned long flags; 236 unsigned long flags;
239 unsigned long seq; 237 unsigned long seq;
240 unsigned long usec, sec, lost; 238 unsigned long usec, sec;
241 239
242 do { 240 do {
243 seq = read_seqbegin_irqsave(&xtime_lock, flags); 241 seq = read_seqbegin_irqsave(&xtime_lock, flags);
244 usec = system_timer->offset(); 242 usec = system_timer->offset();
245
246 lost = jiffies - wall_jiffies;
247 if (lost)
248 usec += lost * USECS_PER_JIFFY;
249
250 sec = xtime.tv_sec; 243 sec = xtime.tv_sec;
251 usec += xtime.tv_nsec / 1000; 244 usec += xtime.tv_nsec / 1000;
252 } while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); 245 } while (read_seqretry_irqrestore(&xtime_lock, seq, flags));
@@ -279,7 +272,6 @@ int do_settimeofday(struct timespec *tv)
279 * done, and then undo it! 272 * done, and then undo it!
280 */ 273 */
281 nsec -= system_timer->offset() * NSEC_PER_USEC; 274 nsec -= system_timer->offset() * NSEC_PER_USEC;
282 nsec -= (jiffies - wall_jiffies) * TICK_NSEC;
283 275
284 wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); 276 wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec);
285 wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); 277 wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec);
@@ -337,7 +329,7 @@ void timer_tick(struct pt_regs *regs)
337 profile_tick(CPU_PROFILING, regs); 329 profile_tick(CPU_PROFILING, regs);
338 do_leds(); 330 do_leds();
339 do_set_rtc(); 331 do_set_rtc();
340 do_timer(regs); 332 do_timer(1);
341#ifndef CONFIG_SMP 333#ifndef CONFIG_SMP
342 update_process_times(user_mode(regs)); 334 update_process_times(user_mode(regs));
343#endif 335#endif
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c
index c753a3c5aadd..62e42c7a628e 100644
--- a/arch/arm/mach-omap1/board-fsample.c
+++ b/arch/arm/mach-omap1/board-fsample.c
@@ -172,9 +172,11 @@ static struct resource kp_resources[] = {
172}; 172};
173 173
174static struct omap_kp_platform_data kp_data = { 174static struct omap_kp_platform_data kp_data = {
175 .rows = 8, 175 .rows = 8,
176 .cols = 8, 176 .cols = 8,
177 .keymap = fsample_keymap, 177 .keymap = fsample_keymap,
178 .keymapsize = ARRAY_SIZE(fsample_keymap),
179 .delay = 4,
178}; 180};
179 181
180static struct platform_device kp_device = { 182static struct platform_device kp_device = {
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c
index cd3a06dfc0a8..6e113078f7ab 100644
--- a/arch/arm/mach-omap1/board-h2.c
+++ b/arch/arm/mach-omap1/board-h2.c
@@ -167,10 +167,13 @@ static struct resource h2_kp_resources[] = {
167}; 167};
168 168
169static struct omap_kp_platform_data h2_kp_data = { 169static struct omap_kp_platform_data h2_kp_data = {
170 .rows = 8, 170 .rows = 8,
171 .cols = 8, 171 .cols = 8,
172 .keymap = h2_keymap, 172 .keymap = h2_keymap,
173 .rep = 1, 173 .keymapsize = ARRAY_SIZE(h2_keymap),
174 .rep = 1,
175 .delay = 9,
176 .dbounce = 1,
174}; 177};
175 178
176static struct platform_device h2_kp_device = { 179static struct platform_device h2_kp_device = {
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c
index 7b206116cd03..f225a083dee1 100644
--- a/arch/arm/mach-omap1/board-h3.c
+++ b/arch/arm/mach-omap1/board-h3.c
@@ -247,10 +247,13 @@ static struct resource h3_kp_resources[] = {
247}; 247};
248 248
249static struct omap_kp_platform_data h3_kp_data = { 249static struct omap_kp_platform_data h3_kp_data = {
250 .rows = 8, 250 .rows = 8,
251 .cols = 8, 251 .cols = 8,
252 .keymap = h3_keymap, 252 .keymap = h3_keymap,
253 .rep = 1, 253 .keymapsize = ARRAY_SIZE(h3_keymap),
254 .rep = 1,
255 .delay = 9,
256 .dbounce = 1,
254}; 257};
255 258
256static struct platform_device h3_kp_device = { 259static struct platform_device h3_kp_device = {
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c
index 4cbc62db5b5d..cb00530ad279 100644
--- a/arch/arm/mach-omap1/board-innovator.c
+++ b/arch/arm/mach-omap1/board-innovator.c
@@ -159,9 +159,11 @@ static struct resource innovator_kp_resources[] = {
159}; 159};
160 160
161static struct omap_kp_platform_data innovator_kp_data = { 161static struct omap_kp_platform_data innovator_kp_data = {
162 .rows = 8, 162 .rows = 8,
163 .cols = 8, 163 .cols = 8,
164 .keymap = innovator_keymap, 164 .keymap = innovator_keymap,
165 .keymapsize = ARRAY_SIZE(innovator_keymap),
166 .delay = 4,
165}; 167};
166 168
167static struct platform_device innovator_kp_device = { 169static struct platform_device innovator_kp_device = {
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c
index 02b980d77b12..dbc555d209ff 100644
--- a/arch/arm/mach-omap1/board-nokia770.c
+++ b/arch/arm/mach-omap1/board-nokia770.c
@@ -71,9 +71,11 @@ static struct resource nokia770_kp_resources[] = {
71}; 71};
72 72
73static struct omap_kp_platform_data nokia770_kp_data = { 73static struct omap_kp_platform_data nokia770_kp_data = {
74 .rows = 8, 74 .rows = 8,
75 .cols = 8, 75 .cols = 8,
76 .keymap = nokia770_keymap 76 .keymap = nokia770_keymap,
77 .keymapsize = ARRAY_SIZE(nokia770_keymap)
78 .delay = 4,
77}; 79};
78 80
79static struct platform_device nokia770_kp_device = { 81static struct platform_device nokia770_kp_device = {
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
index b742261c97ad..6b05647a6c01 100644
--- a/arch/arm/mach-omap1/board-osk.c
+++ b/arch/arm/mach-omap1/board-osk.c
@@ -266,9 +266,11 @@ static const int osk_keymap[] = {
266}; 266};
267 267
268static struct omap_kp_platform_data osk_kp_data = { 268static struct omap_kp_platform_data osk_kp_data = {
269 .rows = 8, 269 .rows = 8,
270 .cols = 8, 270 .cols = 8,
271 .keymap = (int *) osk_keymap, 271 .keymap = (int *) osk_keymap,
272 .keymapsize = ARRAY_SIZE(osk_keymap),
273 .delay = 9,
272}; 274};
273 275
274static struct resource osk5912_kp_resources[] = { 276static struct resource osk5912_kp_resources[] = {
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c
index 64b45d8ae357..fa4be962df67 100644
--- a/arch/arm/mach-omap1/board-perseus2.c
+++ b/arch/arm/mach-omap1/board-perseus2.c
@@ -171,9 +171,12 @@ static struct resource kp_resources[] = {
171}; 171};
172 172
173static struct omap_kp_platform_data kp_data = { 173static struct omap_kp_platform_data kp_data = {
174 .rows = 8, 174 .rows = 8,
175 .cols = 8, 175 .cols = 8,
176 .keymap = p2_keymap, 176 .keymap = p2_keymap,
177 .keymapsize = ARRAY_SIZE(p2_keymap),
178 .delay = 4,
179 .dbounce = 1,
177}; 180};
178 181
179static struct platform_device kp_device = { 182static struct platform_device kp_device = {
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c
index 4933fce766c8..996aeda1285d 100644
--- a/arch/arm/mach-omap2/board-h4.c
+++ b/arch/arm/mach-omap2/board-h4.c
@@ -245,6 +245,7 @@ static struct omap_kp_platform_data h4_kp_data = {
245 .rows = 6, 245 .rows = 6,
246 .cols = 7, 246 .cols = 7,
247 .keymap = h4_keymap, 247 .keymap = h4_keymap,
248 .keymapsize = ARRAY_SIZE(h4_keymap),
248 .rep = 1, 249 .rep = 1,
249 .row_gpios = row_gpios, 250 .row_gpios = row_gpios,
250 .col_gpios = col_gpios, 251 .col_gpios = col_gpios,
diff --git a/arch/arm/mach-pnx4008/clock.c b/arch/arm/mach-pnx4008/clock.c
index f582ed2ec43c..daa8d3d98eff 100644
--- a/arch/arm/mach-pnx4008/clock.c
+++ b/arch/arm/mach-pnx4008/clock.c
@@ -735,6 +735,16 @@ static struct clk uart6_ck = {
735 .enable_reg = UARTCLKCTRL_REG, 735 .enable_reg = UARTCLKCTRL_REG,
736}; 736};
737 737
738static struct clk wdt_ck = {
739 .name = "wdt_ck",
740 .parent = &per_ck,
741 .flags = NEEDS_INITIALIZATION,
742 .round_rate = &on_off_round_rate,
743 .set_rate = &on_off_set_rate,
744 .enable_shift = 0,
745 .enable_reg = TIMCLKCTRL_REG,
746};
747
738/* These clocks are visible outside this module 748/* These clocks are visible outside this module
739 * and can be initialized 749 * and can be initialized
740 */ 750 */
@@ -765,6 +775,7 @@ static struct clk *onchip_clks[] = {
765 &uart4_ck, 775 &uart4_ck,
766 &uart5_ck, 776 &uart5_ck,
767 &uart6_ck, 777 &uart6_ck,
778 &wdt_ck,
768}; 779};
769 780
770static int local_clk_enable(struct clk *clk) 781static int local_clk_enable(struct clk *clk)
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index f0943d160ffe..5e658a874498 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -171,7 +171,7 @@ good_area:
171 if (fsr & (1 << 11)) /* write? */ 171 if (fsr & (1 << 11)) /* write? */
172 mask = VM_WRITE; 172 mask = VM_WRITE;
173 else 173 else
174 mask = VM_READ|VM_EXEC; 174 mask = VM_READ|VM_EXEC|VM_WRITE;
175 175
176 fault = VM_FAULT_BADACCESS; 176 fault = VM_FAULT_BADACCESS;
177 if (!(vma->vm_flags & mask)) 177 if (!(vma->vm_flags & mask))
@@ -198,7 +198,7 @@ survive:
198 return fault; 198 return fault;
199 } 199 }
200 200
201 if (tsk->pid != 1) 201 if (!is_init(tsk))
202 goto out; 202 goto out;
203 203
204 /* 204 /*
diff --git a/arch/arm/vfp/vfpsingle.c b/arch/arm/vfp/vfpsingle.c
index ab5e9503bae5..0221ba3bc799 100644
--- a/arch/arm/vfp/vfpsingle.c
+++ b/arch/arm/vfp/vfpsingle.c
@@ -198,8 +198,10 @@ u32 vfp_single_normaliseround(int sd, struct vfp_single *vs, u32 fpscr, u32 exce
198 vfp_single_dump("pack: final", vs); 198 vfp_single_dump("pack: final", vs);
199 { 199 {
200 s32 d = vfp_single_pack(vs); 200 s32 d = vfp_single_pack(vs);
201#ifdef DEBUG
201 pr_debug("VFP: %s: d(s%d)=%08x exceptions=%08x\n", func, 202 pr_debug("VFP: %s: d(s%d)=%08x exceptions=%08x\n", func,
202 sd, d, exceptions); 203 sd, d, exceptions);
204#endif
203 vfp_put_float(d, sd); 205 vfp_put_float(d, sd);
204 } 206 }
205 207