diff options
author | Paul Mackerras <paulus@samba.org> | 2005-10-22 02:51:34 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-10-22 02:51:34 -0400 |
commit | 985990137e81ca9fd6561cd0f7d1a9695ec57d5a (patch) | |
tree | 7a67493285623a7356ba7065cada6728993d1a3b /arch/arm | |
parent | 834289447542b7ec55c0847486616d4d53ddf891 (diff) | |
parent | 63172cb3d5ef762dcb60a292bc7f016b85cf6e1f (diff) |
Merge changes from linux-2.6 by hand
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/kernel/armksyms.c | 4 | ||||
-rw-r--r-- | arch/arm/kernel/entry-common.S | 7 | ||||
-rw-r--r-- | arch/arm/kernel/vmlinux.lds.S | 15 | ||||
-rw-r--r-- | arch/arm/mach-integrator/impd1.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-l7200/core.c | 20 | ||||
-rw-r--r-- | arch/arm/mach-pxa/corgi_lcd.c | 20 | ||||
-rw-r--r-- | arch/arm/mach-pxa/generic.c | 25 | ||||
-rw-r--r-- | arch/arm/mach-pxa/spitz.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/clock.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/mach-anubis.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/mach-bast.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/mach-vr1000.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/s3c2410.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/s3c2440.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-s3c2410/time.c | 1 | ||||
-rw-r--r-- | arch/arm/mm/alignment.c | 44 | ||||
-rw-r--r-- | arch/arm/mm/proc-v6.S | 9 | ||||
-rw-r--r-- | arch/arm/nwfpe/fpa11.c | 5 | ||||
-rw-r--r-- | arch/arm/nwfpe/fpa11.h | 20 | ||||
-rw-r--r-- | arch/arm/nwfpe/fpa11_cprt.c | 3 | ||||
-rw-r--r-- | arch/arm/nwfpe/fpopcode.h | 6 | ||||
-rw-r--r-- | arch/arm/nwfpe/softfloat.h | 3 |
24 files changed, 155 insertions, 75 deletions
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 7779f2d1acad..299bc0468702 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -53,7 +53,7 @@ tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi | |||
53 | tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110 | 53 | tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110 |
54 | tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100 | 54 | tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100 |
55 | tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale | 55 | tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale |
56 | tune-$(CONFIG_CPU_V6) :=-mtune=strongarm | 56 | tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) |
57 | 57 | ||
58 | # Need -Uarm for gcc < 3.x | 58 | # Need -Uarm for gcc < 3.x |
59 | CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) | 59 | CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) |
diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c index 835d450797a1..7b17a87a3311 100644 --- a/arch/arm/kernel/armksyms.c +++ b/arch/arm/kernel/armksyms.c | |||
@@ -45,8 +45,8 @@ extern void fp_enter(void); | |||
45 | 45 | ||
46 | #define EXPORT_SYMBOL_ALIAS(sym,orig) \ | 46 | #define EXPORT_SYMBOL_ALIAS(sym,orig) \ |
47 | EXPORT_CRC_ALIAS(sym) \ | 47 | EXPORT_CRC_ALIAS(sym) \ |
48 | const struct kernel_symbol __ksymtab_##sym \ | 48 | static const struct kernel_symbol __ksymtab_##sym \ |
49 | __attribute__((section("__ksymtab"))) = \ | 49 | __attribute_used__ __attribute__((section("__ksymtab"))) = \ |
50 | { (unsigned long)&orig, #sym }; | 50 | { (unsigned long)&orig, #sym }; |
51 | 51 | ||
52 | /* | 52 | /* |
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index 81d450ac3fab..066597f4345a 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
@@ -106,15 +106,10 @@ ENTRY(ret_from_fork) | |||
106 | .endm | 106 | .endm |
107 | 107 | ||
108 | .Larm700bug: | 108 | .Larm700bug: |
109 | ldr r0, [sp, #S_PSR] @ Get calling cpsr | ||
110 | sub lr, lr, #4 | ||
111 | str lr, [r8] | ||
112 | msr spsr_cxsf, r0 | ||
113 | ldmia sp, {r0 - lr}^ @ Get calling r0 - lr | 109 | ldmia sp, {r0 - lr}^ @ Get calling r0 - lr |
114 | mov r0, r0 | 110 | mov r0, r0 |
115 | ldr lr, [sp, #S_PC] @ Get PC | ||
116 | add sp, sp, #S_FRAME_SIZE | 111 | add sp, sp, #S_FRAME_SIZE |
117 | movs pc, lr | 112 | subs pc, lr, #4 |
118 | #else | 113 | #else |
119 | .macro arm710_bug_check, instr, temp | 114 | .macro arm710_bug_check, instr, temp |
120 | .endm | 115 | .endm |
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 08e58ecd44be..0d5db5279c5c 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -89,13 +89,6 @@ SECTIONS | |||
89 | *(.got) /* Global offset table */ | 89 | *(.got) /* Global offset table */ |
90 | } | 90 | } |
91 | 91 | ||
92 | . = ALIGN(16); | ||
93 | __ex_table : { /* Exception table */ | ||
94 | __start___ex_table = .; | ||
95 | *(__ex_table) | ||
96 | __stop___ex_table = .; | ||
97 | } | ||
98 | |||
99 | RODATA | 92 | RODATA |
100 | 93 | ||
101 | _etext = .; /* End of text and rodata section */ | 94 | _etext = .; /* End of text and rodata section */ |
@@ -138,6 +131,14 @@ SECTIONS | |||
138 | *(.data.cacheline_aligned) | 131 | *(.data.cacheline_aligned) |
139 | 132 | ||
140 | /* | 133 | /* |
134 | * The exception fixup table (might need resorting at runtime) | ||
135 | */ | ||
136 | . = ALIGN(32); | ||
137 | __start___ex_table = .; | ||
138 | *(__ex_table) | ||
139 | __stop___ex_table = .; | ||
140 | |||
141 | /* | ||
141 | * and the usual data section | 142 | * and the usual data section |
142 | */ | 143 | */ |
143 | *(.data) | 144 | *(.data) |
diff --git a/arch/arm/mach-integrator/impd1.c b/arch/arm/mach-integrator/impd1.c index c3c2f17d030e..a1b153d1626c 100644 --- a/arch/arm/mach-integrator/impd1.c +++ b/arch/arm/mach-integrator/impd1.c | |||
@@ -67,7 +67,7 @@ static void impd1_setvco(struct clk *clk, struct icst525_vco vco) | |||
67 | } | 67 | } |
68 | writel(0, impd1->base + IMPD1_LOCK); | 68 | writel(0, impd1->base + IMPD1_LOCK); |
69 | 69 | ||
70 | #if DEBUG | 70 | #ifdef DEBUG |
71 | vco.v = val & 0x1ff; | 71 | vco.v = val & 0x1ff; |
72 | vco.r = (val >> 9) & 0x7f; | 72 | vco.r = (val >> 9) & 0x7f; |
73 | vco.s = (val >> 16) & 7; | 73 | vco.s = (val >> 16) & 7; |
@@ -427,17 +427,18 @@ static int impd1_probe(struct lm_device *dev) | |||
427 | return ret; | 427 | return ret; |
428 | } | 428 | } |
429 | 429 | ||
430 | static int impd1_remove_one(struct device *dev, void *data) | ||
431 | { | ||
432 | device_unregister(dev); | ||
433 | return 0; | ||
434 | } | ||
435 | |||
430 | static void impd1_remove(struct lm_device *dev) | 436 | static void impd1_remove(struct lm_device *dev) |
431 | { | 437 | { |
432 | struct impd1_module *impd1 = lm_get_drvdata(dev); | 438 | struct impd1_module *impd1 = lm_get_drvdata(dev); |
433 | struct list_head *l, *n; | ||
434 | int i; | 439 | int i; |
435 | 440 | ||
436 | list_for_each_safe(l, n, &dev->dev.children) { | 441 | device_for_each_child(&dev->dev, NULL, impd1_remove_one); |
437 | struct device *d = list_to_dev(l); | ||
438 | |||
439 | device_unregister(d); | ||
440 | } | ||
441 | 442 | ||
442 | for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) | 443 | for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) |
443 | clk_unregister(&impd1->vcos[i]); | 444 | clk_unregister(&impd1->vcos[i]); |
diff --git a/arch/arm/mach-l7200/core.c b/arch/arm/mach-l7200/core.c index 5fd8c9f97f9a..03ed742ae2be 100644 --- a/arch/arm/mach-l7200/core.c +++ b/arch/arm/mach-l7200/core.c | |||
@@ -7,11 +7,17 @@ | |||
7 | */ | 7 | */ |
8 | #include <linux/kernel.h> | 8 | #include <linux/kernel.h> |
9 | #include <linux/init.h> | 9 | #include <linux/init.h> |
10 | #include <linux/device.h> | ||
10 | 11 | ||
12 | #include <asm/types.h> | ||
13 | #include <asm/irq.h> | ||
14 | #include <asm/mach-types.h> | ||
11 | #include <asm/hardware.h> | 15 | #include <asm/hardware.h> |
12 | #include <asm/page.h> | 16 | #include <asm/page.h> |
13 | 17 | ||
18 | #include <asm/mach/arch.h> | ||
14 | #include <asm/mach/map.h> | 19 | #include <asm/mach/map.h> |
20 | #include <asm/mach/irq.h> | ||
15 | 21 | ||
16 | /* | 22 | /* |
17 | * IRQ base register | 23 | * IRQ base register |
@@ -47,6 +53,12 @@ static void l7200_unmask_irq(unsigned int irq) | |||
47 | { | 53 | { |
48 | IRQ_ENABLE = 1 << irq; | 54 | IRQ_ENABLE = 1 << irq; |
49 | } | 55 | } |
56 | |||
57 | static struct irqchip l7200_irq_chip = { | ||
58 | .ack = l7200_mask_irq, | ||
59 | .mask = l7200_mask_irq, | ||
60 | .unmask = l7200_unmask_irq | ||
61 | }; | ||
50 | 62 | ||
51 | static void __init l7200_init_irq(void) | 63 | static void __init l7200_init_irq(void) |
52 | { | 64 | { |
@@ -56,11 +68,9 @@ static void __init l7200_init_irq(void) | |||
56 | FIQ_ENABLECLEAR = 0xffffffff; /* clear all fast interrupt enables */ | 68 | FIQ_ENABLECLEAR = 0xffffffff; /* clear all fast interrupt enables */ |
57 | 69 | ||
58 | for (irq = 0; irq < NR_IRQS; irq++) { | 70 | for (irq = 0; irq < NR_IRQS; irq++) { |
59 | irq_desc[irq].valid = 1; | 71 | set_irq_chip(irq, &l7200_irq_chip); |
60 | irq_desc[irq].probe_ok = 1; | 72 | set_irq_flags(irq, IRQF_VALID); |
61 | irq_desc[irq].mask_ack = l7200_mask_irq; | 73 | set_irq_handler(irq, do_level_IRQ); |
62 | irq_desc[irq].mask = l7200_mask_irq; | ||
63 | irq_desc[irq].unmask = l7200_unmask_irq; | ||
64 | } | 74 | } |
65 | 75 | ||
66 | init_FIQ(); | 76 | init_FIQ(); |
diff --git a/arch/arm/mach-pxa/corgi_lcd.c b/arch/arm/mach-pxa/corgi_lcd.c index c02ef7c0f7ef..850538fadece 100644 --- a/arch/arm/mach-pxa/corgi_lcd.c +++ b/arch/arm/mach-pxa/corgi_lcd.c | |||
@@ -467,6 +467,7 @@ void corgi_put_hsync(void) | |||
467 | { | 467 | { |
468 | if (get_hsync_time) | 468 | if (get_hsync_time) |
469 | symbol_put(w100fb_get_hsynclen); | 469 | symbol_put(w100fb_get_hsynclen); |
470 | get_hsync_time = NULL; | ||
470 | } | 471 | } |
471 | 472 | ||
472 | void corgi_wait_hsync(void) | 473 | void corgi_wait_hsync(void) |
@@ -476,20 +477,37 @@ void corgi_wait_hsync(void) | |||
476 | #endif | 477 | #endif |
477 | 478 | ||
478 | #ifdef CONFIG_PXA_SHARP_Cxx00 | 479 | #ifdef CONFIG_PXA_SHARP_Cxx00 |
480 | static struct device *spitz_pxafb_dev; | ||
481 | |||
482 | static int is_pxafb_device(struct device * dev, void * data) | ||
483 | { | ||
484 | struct platform_device *pdev = container_of(dev, struct platform_device, dev); | ||
485 | |||
486 | return (strncmp(pdev->name, "pxa2xx-fb", 9) == 0); | ||
487 | } | ||
488 | |||
479 | unsigned long spitz_get_hsync_len(void) | 489 | unsigned long spitz_get_hsync_len(void) |
480 | { | 490 | { |
491 | if (!spitz_pxafb_dev) { | ||
492 | spitz_pxafb_dev = bus_find_device(&platform_bus_type, NULL, NULL, is_pxafb_device); | ||
493 | if (!spitz_pxafb_dev) | ||
494 | return 0; | ||
495 | } | ||
481 | if (!get_hsync_time) | 496 | if (!get_hsync_time) |
482 | get_hsync_time = symbol_get(pxafb_get_hsync_time); | 497 | get_hsync_time = symbol_get(pxafb_get_hsync_time); |
483 | if (!get_hsync_time) | 498 | if (!get_hsync_time) |
484 | return 0; | 499 | return 0; |
485 | 500 | ||
486 | return pxafb_get_hsync_time(&pxafb_device.dev); | 501 | return pxafb_get_hsync_time(spitz_pxafb_dev); |
487 | } | 502 | } |
488 | 503 | ||
489 | void spitz_put_hsync(void) | 504 | void spitz_put_hsync(void) |
490 | { | 505 | { |
506 | put_device(spitz_pxafb_dev); | ||
491 | if (get_hsync_time) | 507 | if (get_hsync_time) |
492 | symbol_put(pxafb_get_hsync_time); | 508 | symbol_put(pxafb_get_hsync_time); |
509 | spitz_pxafb_dev = NULL; | ||
510 | get_hsync_time = NULL; | ||
493 | } | 511 | } |
494 | 512 | ||
495 | void spitz_wait_hsync(void) | 513 | void spitz_wait_hsync(void) |
diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c index d0660a8c4b70..1d7677669a76 100644 --- a/arch/arm/mach-pxa/generic.c +++ b/arch/arm/mach-pxa/generic.c | |||
@@ -208,6 +208,11 @@ static struct platform_device pxafb_device = { | |||
208 | .resource = pxafb_resources, | 208 | .resource = pxafb_resources, |
209 | }; | 209 | }; |
210 | 210 | ||
211 | void __init set_pxa_fb_parent(struct device *parent_dev) | ||
212 | { | ||
213 | pxafb_device.dev.parent = parent_dev; | ||
214 | } | ||
215 | |||
211 | static struct platform_device ffuart_device = { | 216 | static struct platform_device ffuart_device = { |
212 | .name = "pxa2xx-uart", | 217 | .name = "pxa2xx-uart", |
213 | .id = 0, | 218 | .id = 0, |
@@ -245,6 +250,25 @@ void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info) | |||
245 | i2c_device.dev.platform_data = info; | 250 | i2c_device.dev.platform_data = info; |
246 | } | 251 | } |
247 | 252 | ||
253 | static struct resource i2s_resources[] = { | ||
254 | { | ||
255 | .start = 0x40400000, | ||
256 | .end = 0x40400083, | ||
257 | .flags = IORESOURCE_MEM, | ||
258 | }, { | ||
259 | .start = IRQ_I2S, | ||
260 | .end = IRQ_I2S, | ||
261 | .flags = IORESOURCE_IRQ, | ||
262 | }, | ||
263 | }; | ||
264 | |||
265 | static struct platform_device i2s_device = { | ||
266 | .name = "pxa2xx-i2s", | ||
267 | .id = -1, | ||
268 | .resource = i2c_resources, | ||
269 | .num_resources = ARRAY_SIZE(i2s_resources), | ||
270 | }; | ||
271 | |||
248 | static struct platform_device *devices[] __initdata = { | 272 | static struct platform_device *devices[] __initdata = { |
249 | &pxamci_device, | 273 | &pxamci_device, |
250 | &udc_device, | 274 | &udc_device, |
@@ -253,6 +277,7 @@ static struct platform_device *devices[] __initdata = { | |||
253 | &btuart_device, | 277 | &btuart_device, |
254 | &stuart_device, | 278 | &stuart_device, |
255 | &i2c_device, | 279 | &i2c_device, |
280 | &i2s_device, | ||
256 | }; | 281 | }; |
257 | 282 | ||
258 | static int __init pxa_init(void) | 283 | static int __init pxa_init(void) |
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 568afe3d6e1a..d0ab428c2d7d 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <asm/arch/irq.h> | 36 | #include <asm/arch/irq.h> |
37 | #include <asm/arch/mmc.h> | 37 | #include <asm/arch/mmc.h> |
38 | #include <asm/arch/udc.h> | 38 | #include <asm/arch/udc.h> |
39 | #include <asm/arch/ohci.h> | ||
40 | #include <asm/arch/pxafb.h> | 39 | #include <asm/arch/pxafb.h> |
41 | #include <asm/arch/akita.h> | 40 | #include <asm/arch/akita.h> |
42 | #include <asm/arch/spitz.h> | 41 | #include <asm/arch/spitz.h> |
@@ -304,7 +303,6 @@ static struct platform_device *devices[] __initdata = { | |||
304 | &spitzkbd_device, | 303 | &spitzkbd_device, |
305 | &spitzts_device, | 304 | &spitzts_device, |
306 | &spitzbl_device, | 305 | &spitzbl_device, |
307 | &spitzbattery_device, | ||
308 | }; | 306 | }; |
309 | 307 | ||
310 | static void __init common_init(void) | 308 | static void __init common_init(void) |
@@ -328,7 +326,7 @@ static void __init common_init(void) | |||
328 | 326 | ||
329 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 327 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
330 | pxa_set_mci_info(&spitz_mci_platform_data); | 328 | pxa_set_mci_info(&spitz_mci_platform_data); |
331 | pxafb_device.dev.parent = &spitzssp_device.dev; | 329 | set_pxa_fb_parent(&spitzssp_device.dev); |
332 | set_pxa_fb_info(&spitz_pxafb_info); | 330 | set_pxa_fb_info(&spitz_pxafb_info); |
333 | } | 331 | } |
334 | 332 | ||
diff --git a/arch/arm/mach-s3c2410/Kconfig b/arch/arm/mach-s3c2410/Kconfig index 06807c6ee68a..c796bcdd6158 100644 --- a/arch/arm/mach-s3c2410/Kconfig +++ b/arch/arm/mach-s3c2410/Kconfig | |||
@@ -12,6 +12,7 @@ config MACH_ANUBIS | |||
12 | config ARCH_BAST | 12 | config ARCH_BAST |
13 | bool "Simtec Electronics BAST (EB2410ITX)" | 13 | bool "Simtec Electronics BAST (EB2410ITX)" |
14 | select CPU_S3C2410 | 14 | select CPU_S3C2410 |
15 | select ISA | ||
15 | help | 16 | help |
16 | Say Y here if you are using the Simtec Electronics EB2410ITX | 17 | Say Y here if you are using the Simtec Electronics EB2410ITX |
17 | development board (also known as BAST) | 18 | development board (also known as BAST) |
diff --git a/arch/arm/mach-s3c2410/clock.c b/arch/arm/mach-s3c2410/clock.c index f59608268751..8b3d5dc35de5 100644 --- a/arch/arm/mach-s3c2410/clock.c +++ b/arch/arm/mach-s3c2410/clock.c | |||
@@ -98,7 +98,10 @@ struct clk *clk_get(struct device *dev, const char *id) | |||
98 | struct clk *clk = ERR_PTR(-ENOENT); | 98 | struct clk *clk = ERR_PTR(-ENOENT); |
99 | int idno; | 99 | int idno; |
100 | 100 | ||
101 | idno = (dev == NULL) ? -1 : to_platform_device(dev)->id; | 101 | if (dev == NULL || dev->bus != &platform_bus_type) |
102 | idno = -1; | ||
103 | else | ||
104 | idno = to_platform_device(dev)->id; | ||
102 | 105 | ||
103 | down(&clocks_sem); | 106 | down(&clocks_sem); |
104 | 107 | ||
diff --git a/arch/arm/mach-s3c2410/mach-anubis.c b/arch/arm/mach-s3c2410/mach-anubis.c index 7c05f27fe1d6..5ae80f4e3e67 100644 --- a/arch/arm/mach-s3c2410/mach-anubis.c +++ b/arch/arm/mach-s3c2410/mach-anubis.c | |||
@@ -125,7 +125,7 @@ static int external_map[] = { 2 }; | |||
125 | static int chip0_map[] = { 0 }; | 125 | static int chip0_map[] = { 0 }; |
126 | static int chip1_map[] = { 1 }; | 126 | static int chip1_map[] = { 1 }; |
127 | 127 | ||
128 | struct mtd_partition anubis_default_nand_part[] = { | 128 | static struct mtd_partition anubis_default_nand_part[] = { |
129 | [0] = { | 129 | [0] = { |
130 | .name = "Boot Agent", | 130 | .name = "Boot Agent", |
131 | .size = SZ_16K, | 131 | .size = SZ_16K, |
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c index ed1f07d7252f..7b51bfd0ba6d 100644 --- a/arch/arm/mach-s3c2410/mach-bast.c +++ b/arch/arm/mach-s3c2410/mach-bast.c | |||
@@ -230,7 +230,7 @@ static int chip0_map[] = { 1 }; | |||
230 | static int chip1_map[] = { 2 }; | 230 | static int chip1_map[] = { 2 }; |
231 | static int chip2_map[] = { 3 }; | 231 | static int chip2_map[] = { 3 }; |
232 | 232 | ||
233 | struct mtd_partition bast_default_nand_part[] = { | 233 | static struct mtd_partition bast_default_nand_part[] = { |
234 | [0] = { | 234 | [0] = { |
235 | .name = "Boot Agent", | 235 | .name = "Boot Agent", |
236 | .size = SZ_16K, | 236 | .size = SZ_16K, |
@@ -307,9 +307,9 @@ static void bast_nand_select(struct s3c2410_nand_set *set, int slot) | |||
307 | } | 307 | } |
308 | 308 | ||
309 | static struct s3c2410_platform_nand bast_nand_info = { | 309 | static struct s3c2410_platform_nand bast_nand_info = { |
310 | .tacls = 40, | 310 | .tacls = 30, |
311 | .twrph0 = 80, | 311 | .twrph0 = 60, |
312 | .twrph1 = 80, | 312 | .twrph1 = 60, |
313 | .nr_sets = ARRAY_SIZE(bast_nand_sets), | 313 | .nr_sets = ARRAY_SIZE(bast_nand_sets), |
314 | .sets = bast_nand_sets, | 314 | .sets = bast_nand_sets, |
315 | .select_chip = bast_nand_select, | 315 | .select_chip = bast_nand_select, |
@@ -340,7 +340,7 @@ static struct resource bast_dm9k_resource[] = { | |||
340 | * better IO routines can be written and tested | 340 | * better IO routines can be written and tested |
341 | */ | 341 | */ |
342 | 342 | ||
343 | struct dm9000_plat_data bast_dm9k_platdata = { | 343 | static struct dm9000_plat_data bast_dm9k_platdata = { |
344 | .flags = DM9000_PLATF_16BITONLY | 344 | .flags = DM9000_PLATF_16BITONLY |
345 | }; | 345 | }; |
346 | 346 | ||
diff --git a/arch/arm/mach-s3c2410/mach-vr1000.c b/arch/arm/mach-s3c2410/mach-vr1000.c index 663a7f98fc0b..46b259673c18 100644 --- a/arch/arm/mach-s3c2410/mach-vr1000.c +++ b/arch/arm/mach-s3c2410/mach-vr1000.c | |||
@@ -288,7 +288,7 @@ static struct resource vr1000_dm9k1_resource[] = { | |||
288 | * better IO routines can be written and tested | 288 | * better IO routines can be written and tested |
289 | */ | 289 | */ |
290 | 290 | ||
291 | struct dm9000_plat_data vr1000_dm9k_platdata = { | 291 | static struct dm9000_plat_data vr1000_dm9k_platdata = { |
292 | .flags = DM9000_PLATF_16BITONLY, | 292 | .flags = DM9000_PLATF_16BITONLY, |
293 | }; | 293 | }; |
294 | 294 | ||
diff --git a/arch/arm/mach-s3c2410/s3c2410.c b/arch/arm/mach-s3c2410/s3c2410.c index 0b88993dfd27..a8bf5ec82602 100644 --- a/arch/arm/mach-s3c2410/s3c2410.c +++ b/arch/arm/mach-s3c2410/s3c2410.c | |||
@@ -125,9 +125,6 @@ static struct platform_device *uart_devices[] __initdata = { | |||
125 | &s3c_uart2 | 125 | &s3c_uart2 |
126 | }; | 126 | }; |
127 | 127 | ||
128 | /* store our uart devices for the serial driver console */ | ||
129 | struct platform_device *s3c2410_uart_devices[3]; | ||
130 | |||
131 | static int s3c2410_uart_count = 0; | 128 | static int s3c2410_uart_count = 0; |
132 | 129 | ||
133 | /* uart registration process */ | 130 | /* uart registration process */ |
diff --git a/arch/arm/mach-s3c2410/s3c2440.c b/arch/arm/mach-s3c2410/s3c2440.c index d4c8281b55f6..833fa36bce05 100644 --- a/arch/arm/mach-s3c2410/s3c2440.c +++ b/arch/arm/mach-s3c2410/s3c2440.c | |||
@@ -151,7 +151,7 @@ void __init s3c2440_init_uarts(struct s3c2410_uartcfg *cfg, int no) | |||
151 | 151 | ||
152 | #ifdef CONFIG_PM | 152 | #ifdef CONFIG_PM |
153 | 153 | ||
154 | struct sleep_save s3c2440_sleep[] = { | 154 | static struct sleep_save s3c2440_sleep[] = { |
155 | SAVE_ITEM(S3C2440_DSC0), | 155 | SAVE_ITEM(S3C2440_DSC0), |
156 | SAVE_ITEM(S3C2440_DSC1), | 156 | SAVE_ITEM(S3C2440_DSC1), |
157 | SAVE_ITEM(S3C2440_GPJDAT), | 157 | SAVE_ITEM(S3C2440_GPJDAT), |
@@ -260,7 +260,7 @@ void __init s3c2440_init_clocks(int xtal) | |||
260 | * as a driver which may support both 2410 and 2440 may try and use it. | 260 | * as a driver which may support both 2410 and 2440 may try and use it. |
261 | */ | 261 | */ |
262 | 262 | ||
263 | int __init s3c2440_core_init(void) | 263 | static int __init s3c2440_core_init(void) |
264 | { | 264 | { |
265 | return sysdev_class_register(&s3c2440_sysclass); | 265 | return sysdev_class_register(&s3c2440_sysclass); |
266 | } | 266 | } |
diff --git a/arch/arm/mach-s3c2410/time.c b/arch/arm/mach-s3c2410/time.c index c0acfb2ad790..8a00e3c3cd08 100644 --- a/arch/arm/mach-s3c2410/time.c +++ b/arch/arm/mach-s3c2410/time.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <asm/hardware/clock.h> | 38 | #include <asm/hardware/clock.h> |
39 | 39 | ||
40 | #include "clock.h" | 40 | #include "clock.h" |
41 | #include "cpu.h" | ||
41 | 42 | ||
42 | static unsigned long timer_startval; | 43 | static unsigned long timer_startval; |
43 | static unsigned long timer_usec_ticks; | 44 | static unsigned long timer_usec_ticks; |
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index f35e69e9c65c..705c98921c37 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
@@ -111,7 +111,7 @@ proc_alignment_read(char *page, char **start, off_t off, int count, int *eof, | |||
111 | } | 111 | } |
112 | 112 | ||
113 | static int proc_alignment_write(struct file *file, const char __user *buffer, | 113 | static int proc_alignment_write(struct file *file, const char __user *buffer, |
114 | unsigned long count, void *data) | 114 | unsigned long count, void *data) |
115 | { | 115 | { |
116 | char mode; | 116 | char mode; |
117 | 117 | ||
@@ -119,7 +119,7 @@ static int proc_alignment_write(struct file *file, const char __user *buffer, | |||
119 | if (get_user(mode, buffer)) | 119 | if (get_user(mode, buffer)) |
120 | return -EFAULT; | 120 | return -EFAULT; |
121 | if (mode >= '0' && mode <= '5') | 121 | if (mode >= '0' && mode <= '5') |
122 | ai_usermode = mode - '0'; | 122 | ai_usermode = mode - '0'; |
123 | } | 123 | } |
124 | return count; | 124 | return count; |
125 | } | 125 | } |
@@ -262,7 +262,7 @@ union offset_union { | |||
262 | goto fault; \ | 262 | goto fault; \ |
263 | } while (0) | 263 | } while (0) |
264 | 264 | ||
265 | #define put32_unaligned_check(val,addr) \ | 265 | #define put32_unaligned_check(val,addr) \ |
266 | __put32_unaligned_check("strb", val, addr) | 266 | __put32_unaligned_check("strb", val, addr) |
267 | 267 | ||
268 | #define put32t_unaligned_check(val,addr) \ | 268 | #define put32t_unaligned_check(val,addr) \ |
@@ -306,19 +306,19 @@ do_alignment_ldrhstrh(unsigned long addr, unsigned long instr, struct pt_regs *r | |||
306 | return TYPE_LDST; | 306 | return TYPE_LDST; |
307 | 307 | ||
308 | user: | 308 | user: |
309 | if (LDST_L_BIT(instr)) { | 309 | if (LDST_L_BIT(instr)) { |
310 | unsigned long val; | 310 | unsigned long val; |
311 | get16t_unaligned_check(val, addr); | 311 | get16t_unaligned_check(val, addr); |
312 | 312 | ||
313 | /* signed half-word? */ | 313 | /* signed half-word? */ |
314 | if (instr & 0x40) | 314 | if (instr & 0x40) |
315 | val = (signed long)((signed short) val); | 315 | val = (signed long)((signed short) val); |
316 | 316 | ||
317 | regs->uregs[rd] = val; | 317 | regs->uregs[rd] = val; |
318 | } else | 318 | } else |
319 | put16t_unaligned_check(regs->uregs[rd], addr); | 319 | put16t_unaligned_check(regs->uregs[rd], addr); |
320 | 320 | ||
321 | return TYPE_LDST; | 321 | return TYPE_LDST; |
322 | 322 | ||
323 | fault: | 323 | fault: |
324 | return TYPE_FAULT; | 324 | return TYPE_FAULT; |
@@ -342,11 +342,11 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr, | |||
342 | unsigned long val; | 342 | unsigned long val; |
343 | get32_unaligned_check(val, addr); | 343 | get32_unaligned_check(val, addr); |
344 | regs->uregs[rd] = val; | 344 | regs->uregs[rd] = val; |
345 | get32_unaligned_check(val, addr+4); | 345 | get32_unaligned_check(val, addr + 4); |
346 | regs->uregs[rd+1] = val; | 346 | regs->uregs[rd + 1] = val; |
347 | } else { | 347 | } else { |
348 | put32_unaligned_check(regs->uregs[rd], addr); | 348 | put32_unaligned_check(regs->uregs[rd], addr); |
349 | put32_unaligned_check(regs->uregs[rd+1], addr+4); | 349 | put32_unaligned_check(regs->uregs[rd + 1], addr + 4); |
350 | } | 350 | } |
351 | 351 | ||
352 | return TYPE_LDST; | 352 | return TYPE_LDST; |
@@ -356,11 +356,11 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr, | |||
356 | unsigned long val; | 356 | unsigned long val; |
357 | get32t_unaligned_check(val, addr); | 357 | get32t_unaligned_check(val, addr); |
358 | regs->uregs[rd] = val; | 358 | regs->uregs[rd] = val; |
359 | get32t_unaligned_check(val, addr+4); | 359 | get32t_unaligned_check(val, addr + 4); |
360 | regs->uregs[rd+1] = val; | 360 | regs->uregs[rd + 1] = val; |
361 | } else { | 361 | } else { |
362 | put32t_unaligned_check(regs->uregs[rd], addr); | 362 | put32t_unaligned_check(regs->uregs[rd], addr); |
363 | put32t_unaligned_check(regs->uregs[rd+1], addr+4); | 363 | put32t_unaligned_check(regs->uregs[rd + 1], addr + 4); |
364 | } | 364 | } |
365 | 365 | ||
366 | return TYPE_LDST; | 366 | return TYPE_LDST; |
@@ -443,7 +443,7 @@ do_alignment_ldmstm(unsigned long addr, unsigned long instr, struct pt_regs *reg | |||
443 | if (LDST_P_EQ_U(instr)) /* U = P */ | 443 | if (LDST_P_EQ_U(instr)) /* U = P */ |
444 | eaddr += 4; | 444 | eaddr += 4; |
445 | 445 | ||
446 | /* | 446 | /* |
447 | * For alignment faults on the ARM922T/ARM920T the MMU makes | 447 | * For alignment faults on the ARM922T/ARM920T the MMU makes |
448 | * the FSR (and hence addr) equal to the updated base address | 448 | * the FSR (and hence addr) equal to the updated base address |
449 | * of the multiple access rather than the restored value. | 449 | * of the multiple access rather than the restored value. |
@@ -570,7 +570,7 @@ thumb2arm(u16 tinstr) | |||
570 | /* 6.5.1 Format 3: */ | 570 | /* 6.5.1 Format 3: */ |
571 | case 0x4800 >> 11: /* 7.1.28 LDR(3) */ | 571 | case 0x4800 >> 11: /* 7.1.28 LDR(3) */ |
572 | /* NOTE: This case is not technically possible. We're | 572 | /* NOTE: This case is not technically possible. We're |
573 | * loading 32-bit memory data via PC relative | 573 | * loading 32-bit memory data via PC relative |
574 | * addressing mode. So we can and should eliminate | 574 | * addressing mode. So we can and should eliminate |
575 | * this case. But I'll leave it here for now. | 575 | * this case. But I'll leave it here for now. |
576 | */ | 576 | */ |
@@ -642,7 +642,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
642 | 642 | ||
643 | if (fault) { | 643 | if (fault) { |
644 | type = TYPE_FAULT; | 644 | type = TYPE_FAULT; |
645 | goto bad_or_fault; | 645 | goto bad_or_fault; |
646 | } | 646 | } |
647 | 647 | ||
648 | if (user_mode(regs)) | 648 | if (user_mode(regs)) |
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index caf3b19b167f..9bb5fff406fb 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
@@ -55,7 +55,14 @@ ENTRY(cpu_v6_proc_init) | |||
55 | mov pc, lr | 55 | mov pc, lr |
56 | 56 | ||
57 | ENTRY(cpu_v6_proc_fin) | 57 | ENTRY(cpu_v6_proc_fin) |
58 | mov pc, lr | 58 | stmfd sp!, {lr} |
59 | cpsid if @ disable interrupts | ||
60 | bl v6_flush_kern_cache_all | ||
61 | mrc p15, 0, r0, c1, c0, 0 @ ctrl register | ||
62 | bic r0, r0, #0x1000 @ ...i............ | ||
63 | bic r0, r0, #0x0006 @ .............ca. | ||
64 | mcr p15, 0, r0, c1, c0, 0 @ disable caches | ||
65 | ldmfd sp!, {pc} | ||
59 | 66 | ||
60 | /* | 67 | /* |
61 | * cpu_v6_reset(loc) | 68 | * cpu_v6_reset(loc) |
diff --git a/arch/arm/nwfpe/fpa11.c b/arch/arm/nwfpe/fpa11.c index 7690f731ee87..7b3d74d73c80 100644 --- a/arch/arm/nwfpe/fpa11.c +++ b/arch/arm/nwfpe/fpa11.c | |||
@@ -31,11 +31,6 @@ | |||
31 | #include <linux/string.h> | 31 | #include <linux/string.h> |
32 | #include <asm/system.h> | 32 | #include <asm/system.h> |
33 | 33 | ||
34 | /* forward declarations */ | ||
35 | unsigned int EmulateCPDO(const unsigned int); | ||
36 | unsigned int EmulateCPDT(const unsigned int); | ||
37 | unsigned int EmulateCPRT(const unsigned int); | ||
38 | |||
39 | /* Reset the FPA11 chip. Called to initialize and reset the emulator. */ | 34 | /* Reset the FPA11 chip. Called to initialize and reset the emulator. */ |
40 | static void resetFPA11(void) | 35 | static void resetFPA11(void) |
41 | { | 36 | { |
diff --git a/arch/arm/nwfpe/fpa11.h b/arch/arm/nwfpe/fpa11.h index 93523ae4b7a1..9677ae8448e8 100644 --- a/arch/arm/nwfpe/fpa11.h +++ b/arch/arm/nwfpe/fpa11.h | |||
@@ -95,4 +95,24 @@ extern int8 SetRoundingMode(const unsigned int); | |||
95 | extern int8 SetRoundingPrecision(const unsigned int); | 95 | extern int8 SetRoundingPrecision(const unsigned int); |
96 | extern void nwfpe_init_fpa(union fp_state *fp); | 96 | extern void nwfpe_init_fpa(union fp_state *fp); |
97 | 97 | ||
98 | extern unsigned int EmulateAll(unsigned int opcode); | ||
99 | |||
100 | extern unsigned int EmulateCPDT(const unsigned int opcode); | ||
101 | extern unsigned int EmulateCPDO(const unsigned int opcode); | ||
102 | extern unsigned int EmulateCPRT(const unsigned int opcode); | ||
103 | |||
104 | /* fpa11_cpdt.c */ | ||
105 | extern unsigned int PerformLDF(const unsigned int opcode); | ||
106 | extern unsigned int PerformSTF(const unsigned int opcode); | ||
107 | extern unsigned int PerformLFM(const unsigned int opcode); | ||
108 | extern unsigned int PerformSFM(const unsigned int opcode); | ||
109 | |||
110 | /* single_cpdo.c */ | ||
111 | |||
112 | extern unsigned int SingleCPDO(struct roundingData *roundData, | ||
113 | const unsigned int opcode, FPREG * rFd); | ||
114 | /* double_cpdo.c */ | ||
115 | extern unsigned int DoubleCPDO(struct roundingData *roundData, | ||
116 | const unsigned int opcode, FPREG * rFd); | ||
117 | |||
98 | #endif | 118 | #endif |
diff --git a/arch/arm/nwfpe/fpa11_cprt.c b/arch/arm/nwfpe/fpa11_cprt.c index adf8d3000540..7c67023655e4 100644 --- a/arch/arm/nwfpe/fpa11_cprt.c +++ b/arch/arm/nwfpe/fpa11_cprt.c | |||
@@ -26,12 +26,11 @@ | |||
26 | #include "fpa11.inl" | 26 | #include "fpa11.inl" |
27 | #include "fpmodule.h" | 27 | #include "fpmodule.h" |
28 | #include "fpmodule.inl" | 28 | #include "fpmodule.inl" |
29 | #include "softfloat.h" | ||
29 | 30 | ||
30 | #ifdef CONFIG_FPE_NWFPE_XP | 31 | #ifdef CONFIG_FPE_NWFPE_XP |
31 | extern flag floatx80_is_nan(floatx80); | 32 | extern flag floatx80_is_nan(floatx80); |
32 | #endif | 33 | #endif |
33 | extern flag float64_is_nan(float64); | ||
34 | extern flag float32_is_nan(float32); | ||
35 | 34 | ||
36 | unsigned int PerformFLT(const unsigned int opcode); | 35 | unsigned int PerformFLT(const unsigned int opcode); |
37 | unsigned int PerformFIX(const unsigned int opcode); | 36 | unsigned int PerformFIX(const unsigned int opcode); |
diff --git a/arch/arm/nwfpe/fpopcode.h b/arch/arm/nwfpe/fpopcode.h index 1777e92a88e6..6528e081c83f 100644 --- a/arch/arm/nwfpe/fpopcode.h +++ b/arch/arm/nwfpe/fpopcode.h | |||
@@ -476,4 +476,10 @@ static inline unsigned int getDestinationSize(const unsigned int opcode) | |||
476 | return (nRc); | 476 | return (nRc); |
477 | } | 477 | } |
478 | 478 | ||
479 | extern unsigned int checkCondition(const unsigned int opcode, | ||
480 | const unsigned int ccodes); | ||
481 | |||
482 | extern const float64 float64Constant[]; | ||
483 | extern const float32 float32Constant[]; | ||
484 | |||
479 | #endif | 485 | #endif |
diff --git a/arch/arm/nwfpe/softfloat.h b/arch/arm/nwfpe/softfloat.h index 1c8799b9ee4d..14151700b6b2 100644 --- a/arch/arm/nwfpe/softfloat.h +++ b/arch/arm/nwfpe/softfloat.h | |||
@@ -265,4 +265,7 @@ static inline flag float64_lt_nocheck(float64 a, float64 b) | |||
265 | return (a != b) && (aSign ^ (a < b)); | 265 | return (a != b) && (aSign ^ (a < b)); |
266 | } | 266 | } |
267 | 267 | ||
268 | extern flag float32_is_nan( float32 a ); | ||
269 | extern flag float64_is_nan( float64 a ); | ||
270 | |||
268 | #endif | 271 | #endif |