diff options
Diffstat (limited to 'arch')
171 files changed, 2345 insertions, 2357 deletions
diff --git a/arch/alpha/include/asm/spinlock.h b/arch/alpha/include/asm/spinlock.h index aeeb125f6851..e38fb95cb335 100644 --- a/arch/alpha/include/asm/spinlock.h +++ b/arch/alpha/include/asm/spinlock.h | |||
@@ -166,6 +166,9 @@ static inline void __raw_write_unlock(raw_rwlock_t * lock) | |||
166 | lock->lock = 0; | 166 | lock->lock = 0; |
167 | } | 167 | } |
168 | 168 | ||
169 | #define __raw_read_lock_flags(lock, flags) __raw_read_lock(lock) | ||
170 | #define __raw_write_lock_flags(lock, flags) __raw_write_lock(lock) | ||
171 | |||
169 | #define _raw_spin_relax(lock) cpu_relax() | 172 | #define _raw_spin_relax(lock) cpu_relax() |
170 | #define _raw_read_relax(lock) cpu_relax() | 173 | #define _raw_read_relax(lock) cpu_relax() |
171 | #define _raw_write_relax(lock) cpu_relax() | 174 | #define _raw_write_relax(lock) cpu_relax() |
diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c index 8d0097f10208..3a2fb7a02db4 100644 --- a/arch/alpha/kernel/process.c +++ b/arch/alpha/kernel/process.c | |||
@@ -272,7 +272,7 @@ alpha_vfork(struct pt_regs *regs) | |||
272 | */ | 272 | */ |
273 | 273 | ||
274 | int | 274 | int |
275 | copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | 275 | copy_thread(unsigned long clone_flags, unsigned long usp, |
276 | unsigned long unused, | 276 | unsigned long unused, |
277 | struct task_struct * p, struct pt_regs * regs) | 277 | struct task_struct * p, struct pt_regs * regs) |
278 | { | 278 | { |
diff --git a/arch/arm/configs/omap_ldp_defconfig b/arch/arm/configs/omap_ldp_defconfig index aa9d34feddc6..679a4a3e265e 100644 --- a/arch/arm/configs/omap_ldp_defconfig +++ b/arch/arm/configs/omap_ldp_defconfig | |||
@@ -474,14 +474,34 @@ CONFIG_NETDEVICES=y | |||
474 | # CONFIG_EQUALIZER is not set | 474 | # CONFIG_EQUALIZER is not set |
475 | # CONFIG_TUN is not set | 475 | # CONFIG_TUN is not set |
476 | # CONFIG_VETH is not set | 476 | # CONFIG_VETH is not set |
477 | # CONFIG_PHYLIB is not set | 477 | CONFIG_PHYLIB=y |
478 | |||
479 | # | ||
480 | # MII PHY device drivers | ||
481 | # | ||
482 | # CONFIG_MARVELL_PHY is not set | ||
483 | # CONFIG_DAVICOM_PHY is not set | ||
484 | # CONFIG_QSEMI_PHY is not set | ||
485 | # CONFIG_LXT_PHY is not set | ||
486 | # CONFIG_CICADA_PHY is not set | ||
487 | # CONFIG_VITESSE_PHY is not set | ||
488 | CONFIG_SMSC_PHY=y | ||
489 | # CONFIG_BROADCOM_PHY is not set | ||
490 | # CONFIG_ICPLUS_PHY is not set | ||
491 | # CONFIG_REALTEK_PHY is not set | ||
492 | # CONFIG_NATIONAL_PHY is not set | ||
493 | # CONFIG_STE10XP is not set | ||
494 | # CONFIG_LSI_ET1011C_PHY is not set | ||
495 | # CONFIG_FIXED_PHY is not set | ||
496 | # CONFIG_MDIO_BITBANG is not set | ||
478 | CONFIG_NET_ETHERNET=y | 497 | CONFIG_NET_ETHERNET=y |
479 | CONFIG_MII=y | 498 | CONFIG_MII=y |
480 | # CONFIG_AX88796 is not set | 499 | # CONFIG_AX88796 is not set |
481 | # CONFIG_SMC91X is not set | 500 | # CONFIG_SMC91X is not set |
482 | # CONFIG_DM9000 is not set | 501 | # CONFIG_DM9000 is not set |
483 | # CONFIG_ENC28J60 is not set | 502 | # CONFIG_ENC28J60 is not set |
484 | CONFIG_SMC911X=y | 503 | # CONFIG_SMC911X is not set |
504 | CONFIG_SMSC911X=y | ||
485 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 505 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
486 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 506 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
487 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 507 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
diff --git a/arch/arm/configs/pcm037_defconfig b/arch/arm/configs/pcm037_defconfig index 627474586470..6e37c77c4760 100644 --- a/arch/arm/configs/pcm037_defconfig +++ b/arch/arm/configs/pcm037_defconfig | |||
@@ -465,12 +465,33 @@ CONFIG_NETDEVICES=y | |||
465 | # CONFIG_EQUALIZER is not set | 465 | # CONFIG_EQUALIZER is not set |
466 | # CONFIG_TUN is not set | 466 | # CONFIG_TUN is not set |
467 | # CONFIG_VETH is not set | 467 | # CONFIG_VETH is not set |
468 | # CONFIG_PHYLIB is not set | 468 | CONFIG_PHYLIB=y |
469 | |||
470 | # | ||
471 | # MII PHY device drivers | ||
472 | # | ||
473 | # CONFIG_MARVELL_PHY is not set | ||
474 | # CONFIG_DAVICOM_PHY is not set | ||
475 | # CONFIG_QSEMI_PHY is not set | ||
476 | # CONFIG_LXT_PHY is not set | ||
477 | # CONFIG_CICADA_PHY is not set | ||
478 | # CONFIG_VITESSE_PHY is not set | ||
479 | CONFIG_SMSC_PHY=y | ||
480 | # CONFIG_BROADCOM_PHY is not set | ||
481 | # CONFIG_ICPLUS_PHY is not set | ||
482 | # CONFIG_REALTEK_PHY is not set | ||
483 | # CONFIG_NATIONAL_PHY is not set | ||
484 | # CONFIG_STE10XP is not set | ||
485 | # CONFIG_LSI_ET1011C_PHY is not set | ||
486 | # CONFIG_FIXED_PHY is not set | ||
487 | # CONFIG_MDIO_BITBANG is not set | ||
469 | CONFIG_NET_ETHERNET=y | 488 | CONFIG_NET_ETHERNET=y |
470 | CONFIG_MII=y | 489 | CONFIG_MII=y |
471 | # CONFIG_AX88796 is not set | 490 | # CONFIG_AX88796 is not set |
472 | CONFIG_SMC91X=y | 491 | CONFIG_SMC91X=y |
473 | # CONFIG_DM9000 is not set | 492 | # CONFIG_DM9000 is not set |
493 | # CONFIG_SMC911X is not set | ||
494 | CONFIG_SMSC911X=y | ||
474 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 495 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
475 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 496 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
476 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 497 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
diff --git a/arch/arm/configs/realview-smp_defconfig b/arch/arm/configs/realview-smp_defconfig index cd29824d791c..21db4b3ec8ff 100644 --- a/arch/arm/configs/realview-smp_defconfig +++ b/arch/arm/configs/realview-smp_defconfig | |||
@@ -496,13 +496,33 @@ CONFIG_NETDEVICES=y | |||
496 | # CONFIG_EQUALIZER is not set | 496 | # CONFIG_EQUALIZER is not set |
497 | # CONFIG_TUN is not set | 497 | # CONFIG_TUN is not set |
498 | # CONFIG_VETH is not set | 498 | # CONFIG_VETH is not set |
499 | # CONFIG_PHYLIB is not set | 499 | CONFIG_PHYLIB=y |
500 | |||
501 | # | ||
502 | # MII PHY device drivers | ||
503 | # | ||
504 | # CONFIG_MARVELL_PHY is not set | ||
505 | # CONFIG_DAVICOM_PHY is not set | ||
506 | # CONFIG_QSEMI_PHY is not set | ||
507 | # CONFIG_LXT_PHY is not set | ||
508 | # CONFIG_CICADA_PHY is not set | ||
509 | # CONFIG_VITESSE_PHY is not set | ||
510 | CONFIG_SMSC_PHY=y | ||
511 | # CONFIG_BROADCOM_PHY is not set | ||
512 | # CONFIG_ICPLUS_PHY is not set | ||
513 | # CONFIG_REALTEK_PHY is not set | ||
514 | # CONFIG_NATIONAL_PHY is not set | ||
515 | # CONFIG_STE10XP is not set | ||
516 | # CONFIG_LSI_ET1011C_PHY is not set | ||
517 | # CONFIG_FIXED_PHY is not set | ||
518 | # CONFIG_MDIO_BITBANG is not set | ||
500 | CONFIG_NET_ETHERNET=y | 519 | CONFIG_NET_ETHERNET=y |
501 | CONFIG_MII=y | 520 | CONFIG_MII=y |
502 | # CONFIG_AX88796 is not set | 521 | # CONFIG_AX88796 is not set |
503 | CONFIG_SMC91X=y | 522 | CONFIG_SMC91X=y |
504 | # CONFIG_DM9000 is not set | 523 | # CONFIG_DM9000 is not set |
505 | CONFIG_SMC911X=y | 524 | # CONFIG_SMC911X is not set |
525 | CONFIG_SMSC911X=y | ||
506 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 526 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
507 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 527 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
508 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 528 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
diff --git a/arch/arm/configs/realview_defconfig b/arch/arm/configs/realview_defconfig index 7e253f58ed18..9a75c30b910d 100644 --- a/arch/arm/configs/realview_defconfig +++ b/arch/arm/configs/realview_defconfig | |||
@@ -490,13 +490,33 @@ CONFIG_NETDEVICES=y | |||
490 | # CONFIG_EQUALIZER is not set | 490 | # CONFIG_EQUALIZER is not set |
491 | # CONFIG_TUN is not set | 491 | # CONFIG_TUN is not set |
492 | # CONFIG_VETH is not set | 492 | # CONFIG_VETH is not set |
493 | # CONFIG_PHYLIB is not set | 493 | CONFIG_PHYLIB=y |
494 | |||
495 | # | ||
496 | # MII PHY device drivers | ||
497 | # | ||
498 | # CONFIG_MARVELL_PHY is not set | ||
499 | # CONFIG_DAVICOM_PHY is not set | ||
500 | # CONFIG_QSEMI_PHY is not set | ||
501 | # CONFIG_LXT_PHY is not set | ||
502 | # CONFIG_CICADA_PHY is not set | ||
503 | # CONFIG_VITESSE_PHY is not set | ||
504 | CONFIG_SMSC_PHY=y | ||
505 | # CONFIG_BROADCOM_PHY is not set | ||
506 | # CONFIG_ICPLUS_PHY is not set | ||
507 | # CONFIG_REALTEK_PHY is not set | ||
508 | # CONFIG_NATIONAL_PHY is not set | ||
509 | # CONFIG_STE10XP is not set | ||
510 | # CONFIG_LSI_ET1011C_PHY is not set | ||
511 | # CONFIG_FIXED_PHY is not set | ||
512 | # CONFIG_MDIO_BITBANG is not set | ||
494 | CONFIG_NET_ETHERNET=y | 513 | CONFIG_NET_ETHERNET=y |
495 | CONFIG_MII=y | 514 | CONFIG_MII=y |
496 | # CONFIG_AX88796 is not set | 515 | # CONFIG_AX88796 is not set |
497 | CONFIG_SMC91X=y | 516 | CONFIG_SMC91X=y |
498 | # CONFIG_DM9000 is not set | 517 | # CONFIG_DM9000 is not set |
499 | CONFIG_SMC911X=y | 518 | # CONFIG_SMC911X is not set |
519 | CONFIG_SMSC911X=y | ||
500 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 520 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
501 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 521 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
502 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 522 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
diff --git a/arch/arm/include/asm/spinlock.h b/arch/arm/include/asm/spinlock.h index 2b41ebbfa7ff..c13681ac1ede 100644 --- a/arch/arm/include/asm/spinlock.h +++ b/arch/arm/include/asm/spinlock.h | |||
@@ -217,6 +217,9 @@ static inline int __raw_read_trylock(raw_rwlock_t *rw) | |||
217 | /* read_can_lock - would read_trylock() succeed? */ | 217 | /* read_can_lock - would read_trylock() succeed? */ |
218 | #define __raw_read_can_lock(x) ((x)->lock < 0x80000000) | 218 | #define __raw_read_can_lock(x) ((x)->lock < 0x80000000) |
219 | 219 | ||
220 | #define __raw_read_lock_flags(lock, flags) __raw_read_lock(lock) | ||
221 | #define __raw_write_lock_flags(lock, flags) __raw_write_lock(lock) | ||
222 | |||
220 | #define _raw_spin_relax(lock) cpu_relax() | 223 | #define _raw_spin_relax(lock) cpu_relax() |
221 | #define _raw_read_relax(lock) cpu_relax() | 224 | #define _raw_read_relax(lock) cpu_relax() |
222 | #define _raw_write_relax(lock) cpu_relax() | 225 | #define _raw_write_relax(lock) cpu_relax() |
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 2de14e2afdc5..c3265a2e7cd4 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -301,7 +301,7 @@ void release_thread(struct task_struct *dead_task) | |||
301 | asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); | 301 | asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); |
302 | 302 | ||
303 | int | 303 | int |
304 | copy_thread(int nr, unsigned long clone_flags, unsigned long stack_start, | 304 | copy_thread(unsigned long clone_flags, unsigned long stack_start, |
305 | unsigned long stk_sz, struct task_struct *p, struct pt_regs *regs) | 305 | unsigned long stk_sz, struct task_struct *p, struct pt_regs *regs) |
306 | { | 306 | { |
307 | struct thread_info *thread = task_thread_info(p); | 307 | struct thread_info *thread = task_thread_info(p); |
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c index 7ac812dc055a..e26c4fe61fae 100644 --- a/arch/arm/mach-at91/pm.c +++ b/arch/arm/mach-at91/pm.c | |||
@@ -198,17 +198,17 @@ static int at91_pm_verify_clocks(void) | |||
198 | /* USB must not be using PLLB */ | 198 | /* USB must not be using PLLB */ |
199 | if (cpu_is_at91rm9200()) { | 199 | if (cpu_is_at91rm9200()) { |
200 | if ((scsr & (AT91RM9200_PMC_UHP | AT91RM9200_PMC_UDP)) != 0) { | 200 | if ((scsr & (AT91RM9200_PMC_UHP | AT91RM9200_PMC_UDP)) != 0) { |
201 | pr_debug("AT91: PM - Suspend-to-RAM with USB still active\n"); | 201 | pr_err("AT91: PM - Suspend-to-RAM with USB still active\n"); |
202 | return 0; | 202 | return 0; |
203 | } | 203 | } |
204 | } else if (cpu_is_at91sam9260() || cpu_is_at91sam9261() || cpu_is_at91sam9263() || cpu_is_at91sam9g20()) { | 204 | } else if (cpu_is_at91sam9260() || cpu_is_at91sam9261() || cpu_is_at91sam9263() || cpu_is_at91sam9g20()) { |
205 | if ((scsr & (AT91SAM926x_PMC_UHP | AT91SAM926x_PMC_UDP)) != 0) { | 205 | if ((scsr & (AT91SAM926x_PMC_UHP | AT91SAM926x_PMC_UDP)) != 0) { |
206 | pr_debug("AT91: PM - Suspend-to-RAM with USB still active\n"); | 206 | pr_err("AT91: PM - Suspend-to-RAM with USB still active\n"); |
207 | return 0; | 207 | return 0; |
208 | } | 208 | } |
209 | } else if (cpu_is_at91cap9()) { | 209 | } else if (cpu_is_at91cap9()) { |
210 | if ((scsr & AT91CAP9_PMC_UHP) != 0) { | 210 | if ((scsr & AT91CAP9_PMC_UHP) != 0) { |
211 | pr_debug("AT91: PM - Suspend-to-RAM with USB still active\n"); | 211 | pr_err("AT91: PM - Suspend-to-RAM with USB still active\n"); |
212 | return 0; | 212 | return 0; |
213 | } | 213 | } |
214 | } | 214 | } |
@@ -223,7 +223,7 @@ static int at91_pm_verify_clocks(void) | |||
223 | 223 | ||
224 | css = at91_sys_read(AT91_PMC_PCKR(i)) & AT91_PMC_CSS; | 224 | css = at91_sys_read(AT91_PMC_PCKR(i)) & AT91_PMC_CSS; |
225 | if (css != AT91_PMC_CSS_SLOW) { | 225 | if (css != AT91_PMC_CSS_SLOW) { |
226 | pr_debug("AT91: PM - Suspend-to-RAM with PCK%d src %d\n", i, css); | 226 | pr_err("AT91: PM - Suspend-to-RAM with PCK%d src %d\n", i, css); |
227 | return 0; | 227 | return 0; |
228 | } | 228 | } |
229 | } | 229 | } |
diff --git a/arch/arm/mach-gemini/include/mach/system.h b/arch/arm/mach-gemini/include/mach/system.h index bbbd72767a02..4d9c1f872472 100644 --- a/arch/arm/mach-gemini/include/mach/system.h +++ b/arch/arm/mach-gemini/include/mach/system.h | |||
@@ -28,7 +28,7 @@ static inline void arch_idle(void) | |||
28 | cpu_do_idle(); | 28 | cpu_do_idle(); |
29 | } | 29 | } |
30 | 30 | ||
31 | static inline void arch_reset(char mode) | 31 | static inline void arch_reset(char mode, const char *cmd) |
32 | { | 32 | { |
33 | __raw_writel(RESET_GLOBAL | RESET_CPU1, | 33 | __raw_writel(RESET_GLOBAL | RESET_CPU1, |
34 | IO_ADDRESS(GEMINI_GLOBAL_BASE) + GLOBAL_RESET); | 34 | IO_ADDRESS(GEMINI_GLOBAL_BASE) + GLOBAL_RESET); |
diff --git a/arch/arm/mach-mmp/include/mach/system.h b/arch/arm/mach-mmp/include/mach/system.h index 001edfefec19..4f5b0e0ce6cf 100644 --- a/arch/arm/mach-mmp/include/mach/system.h +++ b/arch/arm/mach-mmp/include/mach/system.h | |||
@@ -14,7 +14,7 @@ static inline void arch_idle(void) | |||
14 | cpu_do_idle(); | 14 | cpu_do_idle(); |
15 | } | 15 | } |
16 | 16 | ||
17 | static inline void arch_reset(char mode) | 17 | static inline void arch_reset(char mode, const char *cmd) |
18 | { | 18 | { |
19 | cpu_reset(0); | 19 | cpu_reset(0); |
20 | } | 20 | } |
diff --git a/arch/arm/mach-mx3/pcm037.c b/arch/arm/mach-mx3/pcm037.c index 5fce022114de..c3648eff5137 100644 --- a/arch/arm/mach-mx3/pcm037.c +++ b/arch/arm/mach-mx3/pcm037.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include <linux/mtd/plat-ram.h> | 24 | #include <linux/mtd/plat-ram.h> |
25 | #include <linux/memory.h> | 25 | #include <linux/memory.h> |
26 | #include <linux/gpio.h> | 26 | #include <linux/gpio.h> |
27 | #include <linux/smc911x.h> | 27 | #include <linux/smsc911x.h> |
28 | #include <linux/interrupt.h> | 28 | #include <linux/interrupt.h> |
29 | #include <linux/i2c.h> | 29 | #include <linux/i2c.h> |
30 | #include <linux/i2c/at24.h> | 30 | #include <linux/i2c/at24.h> |
@@ -70,7 +70,7 @@ static struct imxuart_platform_data uart_pdata = { | |||
70 | .flags = IMXUART_HAVE_RTSCTS, | 70 | .flags = IMXUART_HAVE_RTSCTS, |
71 | }; | 71 | }; |
72 | 72 | ||
73 | static struct resource smc911x_resources[] = { | 73 | static struct resource smsc911x_resources[] = { |
74 | [0] = { | 74 | [0] = { |
75 | .start = CS1_BASE_ADDR + 0x300, | 75 | .start = CS1_BASE_ADDR + 0x300, |
76 | .end = CS1_BASE_ADDR + 0x300 + SZ_64K - 1, | 76 | .end = CS1_BASE_ADDR + 0x300 + SZ_64K - 1, |
@@ -79,22 +79,25 @@ static struct resource smc911x_resources[] = { | |||
79 | [1] = { | 79 | [1] = { |
80 | .start = IOMUX_TO_IRQ(MX31_PIN_GPIO3_1), | 80 | .start = IOMUX_TO_IRQ(MX31_PIN_GPIO3_1), |
81 | .end = IOMUX_TO_IRQ(MX31_PIN_GPIO3_1), | 81 | .end = IOMUX_TO_IRQ(MX31_PIN_GPIO3_1), |
82 | .flags = IORESOURCE_IRQ, | 82 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL, |
83 | }, | 83 | }, |
84 | }; | 84 | }; |
85 | 85 | ||
86 | static struct smc911x_platdata smc911x_info = { | 86 | static struct smsc911x_platform_config smsc911x_info = { |
87 | .flags = SMC911X_USE_32BIT, | 87 | .flags = SMSC911X_USE_32BIT | SMSC911X_FORCE_INTERNAL_PHY | |
88 | .irq_flags = IRQF_SHARED | IRQF_TRIGGER_LOW, | 88 | SMSC911X_SAVE_MAC_ADDRESS, |
89 | .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, | ||
90 | .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, | ||
91 | .phy_interface = PHY_INTERFACE_MODE_MII, | ||
89 | }; | 92 | }; |
90 | 93 | ||
91 | static struct platform_device pcm037_eth = { | 94 | static struct platform_device pcm037_eth = { |
92 | .name = "smc911x", | 95 | .name = "smsc911x", |
93 | .id = -1, | 96 | .id = -1, |
94 | .num_resources = ARRAY_SIZE(smc911x_resources), | 97 | .num_resources = ARRAY_SIZE(smsc911x_resources), |
95 | .resource = smc911x_resources, | 98 | .resource = smsc911x_resources, |
96 | .dev = { | 99 | .dev = { |
97 | .platform_data = &smc911x_info, | 100 | .platform_data = &smsc911x_info, |
98 | }, | 101 | }, |
99 | }; | 102 | }; |
100 | 103 | ||
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index a2c3fcc27a22..c49d9bfa3abd 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -47,6 +47,8 @@ obj-$(CONFIG_MACH_OMAP_3430SDP) += board-3430sdp.o \ | |||
47 | 47 | ||
48 | obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o \ | 48 | obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o \ |
49 | board-rx51-peripherals.o \ | 49 | board-rx51-peripherals.o \ |
50 | mmc-twl4030.o | ||
51 | |||
50 | # Platform specific device init code | 52 | # Platform specific device init code |
51 | ifeq ($(CONFIG_USB_MUSB_SOC),y) | 53 | ifeq ($(CONFIG_USB_MUSB_SOC),y) |
52 | obj-y += usb-musb.o | 54 | obj-y += usb-musb.o |
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index e096f776f996..da57b0fcda14 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/spi/ads7846.h> | 23 | #include <linux/spi/ads7846.h> |
24 | #include <linux/i2c/twl4030.h> | 24 | #include <linux/i2c/twl4030.h> |
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | #include <linux/smsc911x.h> | ||
26 | 27 | ||
27 | #include <mach/hardware.h> | 28 | #include <mach/hardware.h> |
28 | #include <asm/mach-types.h> | 29 | #include <asm/mach-types.h> |
@@ -41,12 +42,12 @@ | |||
41 | 42 | ||
42 | #include "mmc-twl4030.h" | 43 | #include "mmc-twl4030.h" |
43 | 44 | ||
44 | #define LDP_SMC911X_CS 1 | 45 | #define LDP_SMSC911X_CS 1 |
45 | #define LDP_SMC911X_GPIO 152 | 46 | #define LDP_SMSC911X_GPIO 152 |
46 | #define DEBUG_BASE 0x08000000 | 47 | #define DEBUG_BASE 0x08000000 |
47 | #define LDP_ETHR_START DEBUG_BASE | 48 | #define LDP_ETHR_START DEBUG_BASE |
48 | 49 | ||
49 | static struct resource ldp_smc911x_resources[] = { | 50 | static struct resource ldp_smsc911x_resources[] = { |
50 | [0] = { | 51 | [0] = { |
51 | .start = LDP_ETHR_START, | 52 | .start = LDP_ETHR_START, |
52 | .end = LDP_ETHR_START + SZ_4K, | 53 | .end = LDP_ETHR_START + SZ_4K, |
@@ -59,40 +60,50 @@ static struct resource ldp_smc911x_resources[] = { | |||
59 | }, | 60 | }, |
60 | }; | 61 | }; |
61 | 62 | ||
62 | static struct platform_device ldp_smc911x_device = { | 63 | static struct smsc911x_platform_config ldp_smsc911x_config = { |
63 | .name = "smc911x", | 64 | .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, |
65 | .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, | ||
66 | .flags = SMSC911X_USE_32BIT, | ||
67 | .phy_interface = PHY_INTERFACE_MODE_MII, | ||
68 | }; | ||
69 | |||
70 | static struct platform_device ldp_smsc911x_device = { | ||
71 | .name = "smsc911x", | ||
64 | .id = -1, | 72 | .id = -1, |
65 | .num_resources = ARRAY_SIZE(ldp_smc911x_resources), | 73 | .num_resources = ARRAY_SIZE(ldp_smsc911x_resources), |
66 | .resource = ldp_smc911x_resources, | 74 | .resource = ldp_smsc911x_resources, |
75 | .dev = { | ||
76 | .platform_data = &ldp_smsc911x_config, | ||
77 | }, | ||
67 | }; | 78 | }; |
68 | 79 | ||
69 | static struct platform_device *ldp_devices[] __initdata = { | 80 | static struct platform_device *ldp_devices[] __initdata = { |
70 | &ldp_smc911x_device, | 81 | &ldp_smsc911x_device, |
71 | }; | 82 | }; |
72 | 83 | ||
73 | static inline void __init ldp_init_smc911x(void) | 84 | static inline void __init ldp_init_smsc911x(void) |
74 | { | 85 | { |
75 | int eth_cs; | 86 | int eth_cs; |
76 | unsigned long cs_mem_base; | 87 | unsigned long cs_mem_base; |
77 | int eth_gpio = 0; | 88 | int eth_gpio = 0; |
78 | 89 | ||
79 | eth_cs = LDP_SMC911X_CS; | 90 | eth_cs = LDP_SMSC911X_CS; |
80 | 91 | ||
81 | if (gpmc_cs_request(eth_cs, SZ_16M, &cs_mem_base) < 0) { | 92 | if (gpmc_cs_request(eth_cs, SZ_16M, &cs_mem_base) < 0) { |
82 | printk(KERN_ERR "Failed to request GPMC mem for smc911x\n"); | 93 | printk(KERN_ERR "Failed to request GPMC mem for smsc911x\n"); |
83 | return; | 94 | return; |
84 | } | 95 | } |
85 | 96 | ||
86 | ldp_smc911x_resources[0].start = cs_mem_base + 0x0; | 97 | ldp_smsc911x_resources[0].start = cs_mem_base + 0x0; |
87 | ldp_smc911x_resources[0].end = cs_mem_base + 0xff; | 98 | ldp_smsc911x_resources[0].end = cs_mem_base + 0xff; |
88 | udelay(100); | 99 | udelay(100); |
89 | 100 | ||
90 | eth_gpio = LDP_SMC911X_GPIO; | 101 | eth_gpio = LDP_SMSC911X_GPIO; |
91 | 102 | ||
92 | ldp_smc911x_resources[1].start = OMAP_GPIO_IRQ(eth_gpio); | 103 | ldp_smsc911x_resources[1].start = OMAP_GPIO_IRQ(eth_gpio); |
93 | 104 | ||
94 | if (gpio_request(eth_gpio, "smc911x irq") < 0) { | 105 | if (gpio_request(eth_gpio, "smsc911x irq") < 0) { |
95 | printk(KERN_ERR "Failed to request GPIO%d for smc911x IRQ\n", | 106 | printk(KERN_ERR "Failed to request GPIO%d for smsc911x IRQ\n", |
96 | eth_gpio); | 107 | eth_gpio); |
97 | return; | 108 | return; |
98 | } | 109 | } |
@@ -104,7 +115,7 @@ static void __init omap_ldp_init_irq(void) | |||
104 | omap2_init_common_hw(NULL); | 115 | omap2_init_common_hw(NULL); |
105 | omap_init_irq(); | 116 | omap_init_irq(); |
106 | omap_gpio_init(); | 117 | omap_gpio_init(); |
107 | ldp_init_smc911x(); | 118 | ldp_init_smsc911x(); |
108 | } | 119 | } |
109 | 120 | ||
110 | static struct omap_uart_config ldp_uart_config __initdata = { | 121 | static struct omap_uart_config ldp_uart_config __initdata = { |
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index b3f6e9d81807..b1f23bea863f 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c | |||
@@ -57,6 +57,9 @@ | |||
57 | #define GPMC_CS0_BASE 0x60 | 57 | #define GPMC_CS0_BASE 0x60 |
58 | #define GPMC_CS_SIZE 0x30 | 58 | #define GPMC_CS_SIZE 0x30 |
59 | 59 | ||
60 | #define OVERO_SMSC911X_CS 5 | ||
61 | #define OVERO_SMSC911X_GPIO 176 | ||
62 | |||
60 | #if defined(CONFIG_TOUCHSCREEN_ADS7846) || \ | 63 | #if defined(CONFIG_TOUCHSCREEN_ADS7846) || \ |
61 | defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) | 64 | defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) |
62 | 65 | ||
@@ -116,6 +119,67 @@ static void __init overo_ads7846_init(void) | |||
116 | static inline void __init overo_ads7846_init(void) { return; } | 119 | static inline void __init overo_ads7846_init(void) { return; } |
117 | #endif | 120 | #endif |
118 | 121 | ||
122 | #if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE) | ||
123 | |||
124 | #include <linux/smsc911x.h> | ||
125 | |||
126 | static struct resource overo_smsc911x_resources[] = { | ||
127 | { | ||
128 | .name = "smsc911x-memory", | ||
129 | .flags = IORESOURCE_MEM, | ||
130 | }, | ||
131 | { | ||
132 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL, | ||
133 | }, | ||
134 | }; | ||
135 | |||
136 | static struct smsc911x_platform_config overo_smsc911x_config = { | ||
137 | .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, | ||
138 | .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, | ||
139 | .flags = SMSC911X_USE_32BIT , | ||
140 | .phy_interface = PHY_INTERFACE_MODE_MII, | ||
141 | }; | ||
142 | |||
143 | static struct platform_device overo_smsc911x_device = { | ||
144 | .name = "smsc911x", | ||
145 | .id = -1, | ||
146 | .num_resources = ARRAY_SIZE(overo_smsc911x_resources), | ||
147 | .resource = &overo_smsc911x_resources, | ||
148 | .dev = { | ||
149 | .platform_data = &overo_smsc911x_config, | ||
150 | }, | ||
151 | }; | ||
152 | |||
153 | static inline void __init overo_init_smsc911x(void) | ||
154 | { | ||
155 | unsigned long cs_mem_base; | ||
156 | |||
157 | if (gpmc_cs_request(OVERO_SMSC911X_CS, SZ_16M, &cs_mem_base) < 0) { | ||
158 | printk(KERN_ERR "Failed request for GPMC mem for smsc911x\n"); | ||
159 | return; | ||
160 | } | ||
161 | |||
162 | overo_smsc911x_resources[0].start = cs_mem_base + 0x0; | ||
163 | overo_smsc911x_resources[0].end = cs_mem_base + 0xff; | ||
164 | |||
165 | if ((gpio_request(OVERO_SMSC911X_GPIO, "SMSC911X IRQ") == 0) && | ||
166 | (gpio_direction_input(OVERO_SMSC911X_GPIO) == 0)) { | ||
167 | gpio_export(OVERO_SMSC911X_GPIO, 0); | ||
168 | } else { | ||
169 | printk(KERN_ERR "could not obtain gpio for SMSC911X IRQ\n"); | ||
170 | return; | ||
171 | } | ||
172 | |||
173 | overo_smsc911x_resources[1].start = OMAP_GPIO_IRQ(OVERO_SMSC911X_GPIO); | ||
174 | overo_smsc911x_resources[1].end = 0; | ||
175 | |||
176 | platform_device_register(&overo_smsc911x_device); | ||
177 | } | ||
178 | |||
179 | #else | ||
180 | static inline void __init overo_init_smsc911x(void) { return; } | ||
181 | #endif | ||
182 | |||
119 | static struct mtd_partition overo_nand_partitions[] = { | 183 | static struct mtd_partition overo_nand_partitions[] = { |
120 | { | 184 | { |
121 | .name = "xloader", | 185 | .name = "xloader", |
@@ -290,6 +354,7 @@ static void __init overo_init(void) | |||
290 | overo_flash_init(); | 354 | overo_flash_init(); |
291 | usb_musb_init(); | 355 | usb_musb_init(); |
292 | overo_ads7846_init(); | 356 | overo_ads7846_init(); |
357 | overo_init_smsc911x(); | ||
293 | 358 | ||
294 | if ((gpio_request(OVERO_GPIO_W2W_NRESET, | 359 | if ((gpio_request(OVERO_GPIO_W2W_NRESET, |
295 | "OVERO_GPIO_W2W_NRESET") == 0) && | 360 | "OVERO_GPIO_W2W_NRESET") == 0) && |
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c index d6766685cfc7..9ab947c14f26 100644 --- a/arch/arm/mach-realview/core.c +++ b/arch/arm/mach-realview/core.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <linux/clocksource.h> | 28 | #include <linux/clocksource.h> |
29 | #include <linux/clockchips.h> | 29 | #include <linux/clockchips.h> |
30 | #include <linux/io.h> | 30 | #include <linux/io.h> |
31 | #include <linux/smc911x.h> | 31 | #include <linux/smsc911x.h> |
32 | #include <linux/ata_platform.h> | 32 | #include <linux/ata_platform.h> |
33 | 33 | ||
34 | #include <asm/clkdev.h> | 34 | #include <asm/clkdev.h> |
@@ -128,14 +128,15 @@ int realview_flash_register(struct resource *res, u32 num) | |||
128 | return platform_device_register(&realview_flash_device); | 128 | return platform_device_register(&realview_flash_device); |
129 | } | 129 | } |
130 | 130 | ||
131 | static struct smc911x_platdata realview_smc911x_platdata = { | 131 | static struct smsc911x_platform_config smsc911x_config = { |
132 | .flags = SMC911X_USE_32BIT, | 132 | .flags = SMSC911X_USE_32BIT, |
133 | .irq_flags = IRQF_SHARED, | 133 | .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH, |
134 | .irq_polarity = 1, | 134 | .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL, |
135 | .phy_interface = PHY_INTERFACE_MODE_MII, | ||
135 | }; | 136 | }; |
136 | 137 | ||
137 | static struct platform_device realview_eth_device = { | 138 | static struct platform_device realview_eth_device = { |
138 | .name = "smc911x", | 139 | .name = "smsc911x", |
139 | .id = 0, | 140 | .id = 0, |
140 | .num_resources = 2, | 141 | .num_resources = 2, |
141 | }; | 142 | }; |
@@ -145,8 +146,8 @@ int realview_eth_register(const char *name, struct resource *res) | |||
145 | if (name) | 146 | if (name) |
146 | realview_eth_device.name = name; | 147 | realview_eth_device.name = name; |
147 | realview_eth_device.resource = res; | 148 | realview_eth_device.resource = res; |
148 | if (strcmp(realview_eth_device.name, "smc911x") == 0) | 149 | if (strcmp(realview_eth_device.name, "smsc911x") == 0) |
149 | realview_eth_device.dev.platform_data = &realview_smc911x_platdata; | 150 | realview_eth_device.dev.platform_data = &smsc911x_config; |
150 | 151 | ||
151 | return platform_device_register(&realview_eth_device); | 152 | return platform_device_register(&realview_eth_device); |
152 | } | 153 | } |
diff --git a/arch/arm/mach-realview/localtimer.c b/arch/arm/mach-realview/localtimer.c index 67d6d9cc68b2..d0d39adf6407 100644 --- a/arch/arm/mach-realview/localtimer.c +++ b/arch/arm/mach-realview/localtimer.c | |||
@@ -191,6 +191,7 @@ void __cpuinit local_timer_setup(void) | |||
191 | clk->name = "dummy_timer"; | 191 | clk->name = "dummy_timer"; |
192 | clk->features = CLOCK_EVT_FEAT_DUMMY; | 192 | clk->features = CLOCK_EVT_FEAT_DUMMY; |
193 | clk->rating = 200; | 193 | clk->rating = 200; |
194 | clk->mult = 1; | ||
194 | clk->set_mode = dummy_timer_set_mode; | 195 | clk->set_mode = dummy_timer_set_mode; |
195 | clk->broadcast = smp_timer_broadcast; | 196 | clk->broadcast = smp_timer_broadcast; |
196 | clk->cpumask = cpumask_of(cpu); | 197 | clk->cpumask = cpumask_of(cpu); |
diff --git a/arch/arm/mm/abort-ev6.S b/arch/arm/mm/abort-ev6.S index 94077fbd96b7..6f7e70907e44 100644 --- a/arch/arm/mm/abort-ev6.S +++ b/arch/arm/mm/abort-ev6.S | |||
@@ -29,10 +29,10 @@ ENTRY(v6_early_abort) | |||
29 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 29 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
30 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 30 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
31 | /* | 31 | /* |
32 | * Faulty SWP instruction on 1136 doesn't set bit 11 in DFSR. | 32 | * Faulty SWP instruction on 1136 doesn't set bit 11 in DFSR (erratum 326103). |
33 | * The test below covers all the write situations, including Java bytecodes | 33 | * The test below covers all the write situations, including Java bytecodes |
34 | */ | 34 | */ |
35 | bic r1, r1, #1 << 11 | 1 << 10 @ clear bits 11 and 10 of FSR | 35 | bic r1, r1, #1 << 11 @ clear bit 11 of FSR |
36 | tst r3, #PSR_J_BIT @ Java? | 36 | tst r3, #PSR_J_BIT @ Java? |
37 | movne pc, lr | 37 | movne pc, lr |
38 | do_thumb_abort | 38 | do_thumb_abort |
diff --git a/arch/arm/mm/cache-feroceon-l2.c b/arch/arm/mm/cache-feroceon-l2.c index d6dd83826f8a..6e77c042d8e9 100644 --- a/arch/arm/mm/cache-feroceon-l2.c +++ b/arch/arm/mm/cache-feroceon-l2.c | |||
@@ -115,6 +115,10 @@ static inline void l2_inv_pa_range(unsigned long start, unsigned long end) | |||
115 | raw_local_irq_restore(flags); | 115 | raw_local_irq_restore(flags); |
116 | } | 116 | } |
117 | 117 | ||
118 | static inline void l2_inv_all(void) | ||
119 | { | ||
120 | __asm__("mcr p15, 1, %0, c15, c11, 0" : : "r" (0)); | ||
121 | } | ||
118 | 122 | ||
119 | /* | 123 | /* |
120 | * Linux primitives. | 124 | * Linux primitives. |
@@ -254,9 +258,7 @@ static void __init enable_dcache(void) | |||
254 | 258 | ||
255 | static void __init __invalidate_icache(void) | 259 | static void __init __invalidate_icache(void) |
256 | { | 260 | { |
257 | int dummy; | 261 | __asm__("mcr p15, 0, %0, c7, c5, 0" : : "r" (0)); |
258 | |||
259 | __asm__ __volatile__("mcr p15, 0, %0, c7, c5, 0" : "=r" (dummy)); | ||
260 | } | 262 | } |
261 | 263 | ||
262 | static int __init invalidate_and_disable_icache(void) | 264 | static int __init invalidate_and_disable_icache(void) |
@@ -321,6 +323,7 @@ static void __init enable_l2(void) | |||
321 | 323 | ||
322 | d = flush_and_disable_dcache(); | 324 | d = flush_and_disable_dcache(); |
323 | i = invalidate_and_disable_icache(); | 325 | i = invalidate_and_disable_icache(); |
326 | l2_inv_all(); | ||
324 | write_extra_features(u | 0x00400000); | 327 | write_extra_features(u | 0x00400000); |
325 | if (i) | 328 | if (i) |
326 | enable_icache(); | 329 | enable_icache(); |
diff --git a/arch/arm/vfp/entry.S b/arch/arm/vfp/entry.S index ba592a9e6fb3..a2bed62aec21 100644 --- a/arch/arm/vfp/entry.S +++ b/arch/arm/vfp/entry.S | |||
@@ -15,13 +15,16 @@ | |||
15 | * r10 = thread_info structure | 15 | * r10 = thread_info structure |
16 | * lr = failure return | 16 | * lr = failure return |
17 | */ | 17 | */ |
18 | #include <linux/linkage.h> | 18 | #include <asm/thread_info.h> |
19 | #include <linux/init.h> | ||
20 | #include <asm/asm-offsets.h> | ||
21 | #include <asm/assembler.h> | ||
22 | #include <asm/vfpmacros.h> | 19 | #include <asm/vfpmacros.h> |
20 | #include "../kernel/entry-header.S" | ||
23 | 21 | ||
24 | ENTRY(do_vfp) | 22 | ENTRY(do_vfp) |
23 | #ifdef CONFIG_PREEMPT | ||
24 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count | ||
25 | add r11, r4, #1 @ increment it | ||
26 | str r11, [r10, #TI_PREEMPT] | ||
27 | #endif | ||
25 | enable_irq | 28 | enable_irq |
26 | ldr r4, .LCvfp | 29 | ldr r4, .LCvfp |
27 | ldr r11, [r10, #TI_CPU] @ CPU number | 30 | ldr r11, [r10, #TI_CPU] @ CPU number |
@@ -30,6 +33,12 @@ ENTRY(do_vfp) | |||
30 | ENDPROC(do_vfp) | 33 | ENDPROC(do_vfp) |
31 | 34 | ||
32 | ENTRY(vfp_null_entry) | 35 | ENTRY(vfp_null_entry) |
36 | #ifdef CONFIG_PREEMPT | ||
37 | get_thread_info r10 | ||
38 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count | ||
39 | sub r11, r4, #1 @ decrement it | ||
40 | str r11, [r10, #TI_PREEMPT] | ||
41 | #endif | ||
33 | mov pc, lr | 42 | mov pc, lr |
34 | ENDPROC(vfp_null_entry) | 43 | ENDPROC(vfp_null_entry) |
35 | 44 | ||
@@ -41,6 +50,12 @@ ENDPROC(vfp_null_entry) | |||
41 | 50 | ||
42 | __INIT | 51 | __INIT |
43 | ENTRY(vfp_testing_entry) | 52 | ENTRY(vfp_testing_entry) |
53 | #ifdef CONFIG_PREEMPT | ||
54 | get_thread_info r10 | ||
55 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count | ||
56 | sub r11, r4, #1 @ decrement it | ||
57 | str r11, [r10, #TI_PREEMPT] | ||
58 | #endif | ||
44 | ldr r0, VFP_arch_address | 59 | ldr r0, VFP_arch_address |
45 | str r5, [r0] @ known non-zero value | 60 | str r5, [r0] @ known non-zero value |
46 | mov pc, r9 @ we have handled the fault | 61 | mov pc, r9 @ we have handled the fault |
diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S index a5a4e57763c3..83c4e384b16d 100644 --- a/arch/arm/vfp/vfphw.S +++ b/arch/arm/vfp/vfphw.S | |||
@@ -137,6 +137,12 @@ check_for_exception: | |||
137 | VFPFMXR FPEXC, r1 @ restore FPEXC last | 137 | VFPFMXR FPEXC, r1 @ restore FPEXC last |
138 | sub r2, r2, #4 | 138 | sub r2, r2, #4 |
139 | str r2, [sp, #S_PC] @ retry the instruction | 139 | str r2, [sp, #S_PC] @ retry the instruction |
140 | #ifdef CONFIG_PREEMPT | ||
141 | get_thread_info r10 | ||
142 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count | ||
143 | sub r11, r4, #1 @ decrement it | ||
144 | str r11, [r10, #TI_PREEMPT] | ||
145 | #endif | ||
140 | mov pc, r9 @ we think we have handled things | 146 | mov pc, r9 @ we think we have handled things |
141 | 147 | ||
142 | 148 | ||
@@ -155,6 +161,12 @@ look_for_VFP_exceptions: | |||
155 | @ not recognised by VFP | 161 | @ not recognised by VFP |
156 | 162 | ||
157 | DBGSTR "not VFP" | 163 | DBGSTR "not VFP" |
164 | #ifdef CONFIG_PREEMPT | ||
165 | get_thread_info r10 | ||
166 | ldr r4, [r10, #TI_PREEMPT] @ get preempt count | ||
167 | sub r11, r4, #1 @ decrement it | ||
168 | str r11, [r10, #TI_PREEMPT] | ||
169 | #endif | ||
158 | mov pc, lr | 170 | mov pc, lr |
159 | 171 | ||
160 | process_exception: | 172 | process_exception: |
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c index 75457b30d813..01599c4ef726 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c | |||
@@ -266,7 +266,7 @@ void VFP_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs) | |||
266 | * on VFP subarch 1. | 266 | * on VFP subarch 1. |
267 | */ | 267 | */ |
268 | vfp_raise_exceptions(VFP_EXCEPTION_ERROR, trigger, fpscr, regs); | 268 | vfp_raise_exceptions(VFP_EXCEPTION_ERROR, trigger, fpscr, regs); |
269 | return; | 269 | goto exit; |
270 | } | 270 | } |
271 | 271 | ||
272 | /* | 272 | /* |
@@ -297,7 +297,7 @@ void VFP_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs) | |||
297 | * the FPEXC.FP2V bit is valid only if FPEXC.EX is 1. | 297 | * the FPEXC.FP2V bit is valid only if FPEXC.EX is 1. |
298 | */ | 298 | */ |
299 | if (fpexc ^ (FPEXC_EX | FPEXC_FP2V)) | 299 | if (fpexc ^ (FPEXC_EX | FPEXC_FP2V)) |
300 | return; | 300 | goto exit; |
301 | 301 | ||
302 | /* | 302 | /* |
303 | * The barrier() here prevents fpinst2 being read | 303 | * The barrier() here prevents fpinst2 being read |
@@ -310,6 +310,8 @@ void VFP_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs) | |||
310 | exceptions = vfp_emulate_instruction(trigger, orig_fpscr, regs); | 310 | exceptions = vfp_emulate_instruction(trigger, orig_fpscr, regs); |
311 | if (exceptions) | 311 | if (exceptions) |
312 | vfp_raise_exceptions(exceptions, trigger, orig_fpscr, regs); | 312 | vfp_raise_exceptions(exceptions, trigger, orig_fpscr, regs); |
313 | exit: | ||
314 | preempt_enable(); | ||
313 | } | 315 | } |
314 | 316 | ||
315 | static void vfp_enable(void *unused) | 317 | static void vfp_enable(void *unused) |
diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c index 43ae555ecb33..1bbe1da54869 100644 --- a/arch/avr32/kernel/process.c +++ b/arch/avr32/kernel/process.c | |||
@@ -332,7 +332,7 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu) | |||
332 | 332 | ||
333 | asmlinkage void ret_from_fork(void); | 333 | asmlinkage void ret_from_fork(void); |
334 | 334 | ||
335 | int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | 335 | int copy_thread(unsigned long clone_flags, unsigned long usp, |
336 | unsigned long unused, | 336 | unsigned long unused, |
337 | struct task_struct *p, struct pt_regs *regs) | 337 | struct task_struct *p, struct pt_regs *regs) |
338 | { | 338 | { |
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c index 33e2e8993f7f..f49427293ca1 100644 --- a/arch/blackfin/kernel/process.c +++ b/arch/blackfin/kernel/process.c | |||
@@ -193,7 +193,7 @@ asmlinkage int bfin_clone(struct pt_regs *regs) | |||
193 | } | 193 | } |
194 | 194 | ||
195 | int | 195 | int |
196 | copy_thread(int nr, unsigned long clone_flags, | 196 | copy_thread(unsigned long clone_flags, |
197 | unsigned long usp, unsigned long topstk, | 197 | unsigned long usp, unsigned long topstk, |
198 | struct task_struct *p, struct pt_regs *regs) | 198 | struct task_struct *p, struct pt_regs *regs) |
199 | { | 199 | { |
diff --git a/arch/cris/arch-v10/kernel/process.c b/arch/cris/arch-v10/kernel/process.c index bd9b3ff63f6c..c4c69cf721e5 100644 --- a/arch/cris/arch-v10/kernel/process.c +++ b/arch/cris/arch-v10/kernel/process.c | |||
@@ -115,7 +115,7 @@ int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) | |||
115 | */ | 115 | */ |
116 | asmlinkage void ret_from_fork(void); | 116 | asmlinkage void ret_from_fork(void); |
117 | 117 | ||
118 | int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | 118 | int copy_thread(unsigned long clone_flags, unsigned long usp, |
119 | unsigned long unused, | 119 | unsigned long unused, |
120 | struct task_struct *p, struct pt_regs *regs) | 120 | struct task_struct *p, struct pt_regs *regs) |
121 | { | 121 | { |
diff --git a/arch/cris/arch-v32/kernel/process.c b/arch/cris/arch-v32/kernel/process.c index ced5b725d9bd..120e7f796fea 100644 --- a/arch/cris/arch-v32/kernel/process.c +++ b/arch/cris/arch-v32/kernel/process.c | |||
@@ -131,7 +131,7 @@ kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) | |||
131 | extern asmlinkage void ret_from_fork(void); | 131 | extern asmlinkage void ret_from_fork(void); |
132 | 132 | ||
133 | int | 133 | int |
134 | copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | 134 | copy_thread(unsigned long clone_flags, unsigned long usp, |
135 | unsigned long unused, | 135 | unsigned long unused, |
136 | struct task_struct *p, struct pt_regs *regs) | 136 | struct task_struct *p, struct pt_regs *regs) |
137 | { | 137 | { |
diff --git a/arch/cris/include/arch-v32/arch/spinlock.h b/arch/cris/include/arch-v32/arch/spinlock.h index 0d5709b983a1..129756b96661 100644 --- a/arch/cris/include/arch-v32/arch/spinlock.h +++ b/arch/cris/include/arch-v32/arch/spinlock.h | |||
@@ -121,6 +121,8 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw) | |||
121 | return 1; | 121 | return 1; |
122 | } | 122 | } |
123 | 123 | ||
124 | #define _raw_read_lock_flags(lock, flags) _raw_read_lock(lock) | ||
125 | #define _raw_write_lock_flags(lock, flags) _raw_write_lock(lock) | ||
124 | 126 | ||
125 | #define _raw_spin_relax(lock) cpu_relax() | 127 | #define _raw_spin_relax(lock) cpu_relax() |
126 | #define _raw_read_relax(lock) cpu_relax() | 128 | #define _raw_read_relax(lock) cpu_relax() |
diff --git a/arch/cris/kernel/process.c b/arch/cris/kernel/process.c index 60816e876455..4df0b320d524 100644 --- a/arch/cris/kernel/process.c +++ b/arch/cris/kernel/process.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/system.h> | 19 | #include <asm/system.h> |
20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/spinlock.h> | 21 | #include <linux/spinlock.h> |
22 | #include <linux/fs_struct.h> | ||
23 | #include <linux/init_task.h> | 22 | #include <linux/init_task.h> |
24 | #include <linux/sched.h> | 23 | #include <linux/sched.h> |
25 | #include <linux/fs.h> | 24 | #include <linux/fs.h> |
diff --git a/arch/frv/kernel/process.c b/arch/frv/kernel/process.c index 9583a338e9d6..0de50df74970 100644 --- a/arch/frv/kernel/process.c +++ b/arch/frv/kernel/process.c | |||
@@ -204,7 +204,7 @@ void prepare_to_copy(struct task_struct *tsk) | |||
204 | /* | 204 | /* |
205 | * set up the kernel stack and exception frames for a new process | 205 | * set up the kernel stack and exception frames for a new process |
206 | */ | 206 | */ |
207 | int copy_thread(int nr, unsigned long clone_flags, | 207 | int copy_thread(unsigned long clone_flags, |
208 | unsigned long usp, unsigned long topstk, | 208 | unsigned long usp, unsigned long topstk, |
209 | struct task_struct *p, struct pt_regs *regs) | 209 | struct task_struct *p, struct pt_regs *regs) |
210 | { | 210 | { |
diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c index a8ef654a5a0b..e2f33d0f9969 100644 --- a/arch/h8300/kernel/process.c +++ b/arch/h8300/kernel/process.c | |||
@@ -191,7 +191,7 @@ asmlinkage int h8300_clone(struct pt_regs *regs) | |||
191 | 191 | ||
192 | } | 192 | } |
193 | 193 | ||
194 | int copy_thread(int nr, unsigned long clone_flags, | 194 | int copy_thread(unsigned long clone_flags, |
195 | unsigned long usp, unsigned long topstk, | 195 | unsigned long usp, unsigned long topstk, |
196 | struct task_struct * p, struct pt_regs * regs) | 196 | struct task_struct * p, struct pt_regs * regs) |
197 | { | 197 | { |
diff --git a/arch/ia64/configs/generic_defconfig b/arch/ia64/configs/generic_defconfig index a109db30ce55..75645495c2dd 100644 --- a/arch/ia64/configs/generic_defconfig +++ b/arch/ia64/configs/generic_defconfig | |||
@@ -193,7 +193,6 @@ CONFIG_BOUNCE=y | |||
193 | CONFIG_NR_QUICK=1 | 193 | CONFIG_NR_QUICK=1 |
194 | CONFIG_VIRT_TO_BUS=y | 194 | CONFIG_VIRT_TO_BUS=y |
195 | CONFIG_UNEVICTABLE_LRU=y | 195 | CONFIG_UNEVICTABLE_LRU=y |
196 | CONFIG_MMU_NOTIFIER=y | ||
197 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 196 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
198 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | 197 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
199 | CONFIG_ARCH_FLATMEM_ENABLE=y | 198 | CONFIG_ARCH_FLATMEM_ENABLE=y |
@@ -416,8 +415,6 @@ CONFIG_SGI_IOC4=y | |||
416 | # CONFIG_ENCLOSURE_SERVICES is not set | 415 | # CONFIG_ENCLOSURE_SERVICES is not set |
417 | CONFIG_SGI_XP=m | 416 | CONFIG_SGI_XP=m |
418 | # CONFIG_HP_ILO is not set | 417 | # CONFIG_HP_ILO is not set |
419 | CONFIG_SGI_GRU=m | ||
420 | # CONFIG_SGI_GRU_DEBUG is not set | ||
421 | # CONFIG_C2PORT is not set | 418 | # CONFIG_C2PORT is not set |
422 | CONFIG_HAVE_IDE=y | 419 | CONFIG_HAVE_IDE=y |
423 | CONFIG_IDE=y | 420 | CONFIG_IDE=y |
diff --git a/arch/ia64/include/asm/spinlock.h b/arch/ia64/include/asm/spinlock.h index 0229fb95fb38..13ab71576bc7 100644 --- a/arch/ia64/include/asm/spinlock.h +++ b/arch/ia64/include/asm/spinlock.h | |||
@@ -120,6 +120,38 @@ do { \ | |||
120 | #define __raw_read_can_lock(rw) (*(volatile int *)(rw) >= 0) | 120 | #define __raw_read_can_lock(rw) (*(volatile int *)(rw) >= 0) |
121 | #define __raw_write_can_lock(rw) (*(volatile int *)(rw) == 0) | 121 | #define __raw_write_can_lock(rw) (*(volatile int *)(rw) == 0) |
122 | 122 | ||
123 | #ifdef ASM_SUPPORTED | ||
124 | |||
125 | static __always_inline void | ||
126 | __raw_read_lock_flags(raw_rwlock_t *lock, unsigned long flags) | ||
127 | { | ||
128 | __asm__ __volatile__ ( | ||
129 | "tbit.nz p6, p0 = %1,%2\n" | ||
130 | "br.few 3f\n" | ||
131 | "1:\n" | ||
132 | "fetchadd4.rel r2 = [%0], -1;;\n" | ||
133 | "(p6) ssm psr.i\n" | ||
134 | "2:\n" | ||
135 | "hint @pause\n" | ||
136 | "ld4 r2 = [%0];;\n" | ||
137 | "cmp4.lt p7,p0 = r2, r0\n" | ||
138 | "(p7) br.cond.spnt.few 2b\n" | ||
139 | "(p6) rsm psr.i\n" | ||
140 | ";;\n" | ||
141 | "3:\n" | ||
142 | "fetchadd4.acq r2 = [%0], 1;;\n" | ||
143 | "cmp4.lt p7,p0 = r2, r0\n" | ||
144 | "(p7) br.cond.spnt.few 1b\n" | ||
145 | : : "r"(lock), "r"(flags), "i"(IA64_PSR_I_BIT) | ||
146 | : "p6", "p7", "r2", "memory"); | ||
147 | } | ||
148 | |||
149 | #define __raw_read_lock(lock) __raw_read_lock_flags(lock, 0) | ||
150 | |||
151 | #else /* !ASM_SUPPORTED */ | ||
152 | |||
153 | #define __raw_read_lock_flags(rw, flags) __raw_read_lock(rw) | ||
154 | |||
123 | #define __raw_read_lock(rw) \ | 155 | #define __raw_read_lock(rw) \ |
124 | do { \ | 156 | do { \ |
125 | raw_rwlock_t *__read_lock_ptr = (rw); \ | 157 | raw_rwlock_t *__read_lock_ptr = (rw); \ |
@@ -131,6 +163,8 @@ do { \ | |||
131 | } \ | 163 | } \ |
132 | } while (0) | 164 | } while (0) |
133 | 165 | ||
166 | #endif /* !ASM_SUPPORTED */ | ||
167 | |||
134 | #define __raw_read_unlock(rw) \ | 168 | #define __raw_read_unlock(rw) \ |
135 | do { \ | 169 | do { \ |
136 | raw_rwlock_t *__read_lock_ptr = (rw); \ | 170 | raw_rwlock_t *__read_lock_ptr = (rw); \ |
@@ -138,20 +172,33 @@ do { \ | |||
138 | } while (0) | 172 | } while (0) |
139 | 173 | ||
140 | #ifdef ASM_SUPPORTED | 174 | #ifdef ASM_SUPPORTED |
141 | #define __raw_write_lock(rw) \ | 175 | |
142 | do { \ | 176 | static __always_inline void |
143 | __asm__ __volatile__ ( \ | 177 | __raw_write_lock_flags(raw_rwlock_t *lock, unsigned long flags) |
144 | "mov ar.ccv = r0\n" \ | 178 | { |
145 | "dep r29 = -1, r0, 31, 1;;\n" \ | 179 | __asm__ __volatile__ ( |
146 | "1:\n" \ | 180 | "tbit.nz p6, p0 = %1, %2\n" |
147 | "ld4 r2 = [%0];;\n" \ | 181 | "mov ar.ccv = r0\n" |
148 | "cmp4.eq p0,p7 = r0,r2\n" \ | 182 | "dep r29 = -1, r0, 31, 1\n" |
149 | "(p7) br.cond.spnt.few 1b \n" \ | 183 | "br.few 3f;;\n" |
150 | "cmpxchg4.acq r2 = [%0], r29, ar.ccv;;\n" \ | 184 | "1:\n" |
151 | "cmp4.eq p0,p7 = r0, r2\n" \ | 185 | "(p6) ssm psr.i\n" |
152 | "(p7) br.cond.spnt.few 1b;;\n" \ | 186 | "2:\n" |
153 | :: "r"(rw) : "ar.ccv", "p7", "r2", "r29", "memory"); \ | 187 | "hint @pause\n" |
154 | } while(0) | 188 | "ld4 r2 = [%0];;\n" |
189 | "cmp4.eq p0,p7 = r0, r2\n" | ||
190 | "(p7) br.cond.spnt.few 2b\n" | ||
191 | "(p6) rsm psr.i\n" | ||
192 | ";;\n" | ||
193 | "3:\n" | ||
194 | "cmpxchg4.acq r2 = [%0], r29, ar.ccv;;\n" | ||
195 | "cmp4.eq p0,p7 = r0, r2\n" | ||
196 | "(p7) br.cond.spnt.few 1b;;\n" | ||
197 | : : "r"(lock), "r"(flags), "i"(IA64_PSR_I_BIT) | ||
198 | : "ar.ccv", "p6", "p7", "r2", "r29", "memory"); | ||
199 | } | ||
200 | |||
201 | #define __raw_write_lock(rw) __raw_write_lock_flags(rw, 0) | ||
155 | 202 | ||
156 | #define __raw_write_trylock(rw) \ | 203 | #define __raw_write_trylock(rw) \ |
157 | ({ \ | 204 | ({ \ |
@@ -174,6 +221,8 @@ static inline void __raw_write_unlock(raw_rwlock_t *x) | |||
174 | 221 | ||
175 | #else /* !ASM_SUPPORTED */ | 222 | #else /* !ASM_SUPPORTED */ |
176 | 223 | ||
224 | #define __raw_write_lock_flags(l, flags) __raw_write_lock(l) | ||
225 | |||
177 | #define __raw_write_lock(l) \ | 226 | #define __raw_write_lock(l) \ |
178 | ({ \ | 227 | ({ \ |
179 | __u64 ia64_val, ia64_set_val = ia64_dep_mi(-1, 0, 31, 1); \ | 228 | __u64 ia64_val, ia64_set_val = ia64_dep_mi(-1, 0, 31, 1); \ |
diff --git a/arch/ia64/include/asm/uv/uv_hub.h b/arch/ia64/include/asm/uv/uv_hub.h index f607018af4a1..53e9dfacd073 100644 --- a/arch/ia64/include/asm/uv/uv_hub.h +++ b/arch/ia64/include/asm/uv/uv_hub.h | |||
@@ -305,5 +305,11 @@ static inline int uv_num_possible_blades(void) | |||
305 | return 1; | 305 | return 1; |
306 | } | 306 | } |
307 | 307 | ||
308 | static inline void uv_hub_send_ipi(int pnode, int apicid, int vector) | ||
309 | { | ||
310 | /* not currently needed on ia64 */ | ||
311 | } | ||
312 | |||
313 | |||
308 | #endif /* __ASM_IA64_UV_HUB__ */ | 314 | #endif /* __ASM_IA64_UV_HUB__ */ |
309 | 315 | ||
diff --git a/arch/ia64/include/asm/uv/uv_mmrs.h b/arch/ia64/include/asm/uv/uv_mmrs.h index c149ef085437..fe0b8f05e1a8 100644 --- a/arch/ia64/include/asm/uv/uv_mmrs.h +++ b/arch/ia64/include/asm/uv/uv_mmrs.h | |||
@@ -8,8 +8,8 @@ | |||
8 | * Copyright (C) 2007-2008 Silicon Graphics, Inc. All rights reserved. | 8 | * Copyright (C) 2007-2008 Silicon Graphics, Inc. All rights reserved. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #ifndef __ASM_IA64_UV_MMRS__ | 11 | #ifndef _ASM_IA64_UV_UV_MMRS_H |
12 | #define __ASM_IA64_UV_MMRS__ | 12 | #define _ASM_IA64_UV_UV_MMRS_H |
13 | 13 | ||
14 | #define UV_MMR_ENABLE (1UL << 63) | 14 | #define UV_MMR_ENABLE (1UL << 63) |
15 | 15 | ||
@@ -243,6 +243,158 @@ union uvh_event_occurred0_u { | |||
243 | #define UVH_EVENT_OCCURRED0_ALIAS_32 0x005f0 | 243 | #define UVH_EVENT_OCCURRED0_ALIAS_32 0x005f0 |
244 | 244 | ||
245 | /* ========================================================================= */ | 245 | /* ========================================================================= */ |
246 | /* UVH_GR0_TLB_INT0_CONFIG */ | ||
247 | /* ========================================================================= */ | ||
248 | #define UVH_GR0_TLB_INT0_CONFIG 0x61b00UL | ||
249 | |||
250 | #define UVH_GR0_TLB_INT0_CONFIG_VECTOR_SHFT 0 | ||
251 | #define UVH_GR0_TLB_INT0_CONFIG_VECTOR_MASK 0x00000000000000ffUL | ||
252 | #define UVH_GR0_TLB_INT0_CONFIG_DM_SHFT 8 | ||
253 | #define UVH_GR0_TLB_INT0_CONFIG_DM_MASK 0x0000000000000700UL | ||
254 | #define UVH_GR0_TLB_INT0_CONFIG_DESTMODE_SHFT 11 | ||
255 | #define UVH_GR0_TLB_INT0_CONFIG_DESTMODE_MASK 0x0000000000000800UL | ||
256 | #define UVH_GR0_TLB_INT0_CONFIG_STATUS_SHFT 12 | ||
257 | #define UVH_GR0_TLB_INT0_CONFIG_STATUS_MASK 0x0000000000001000UL | ||
258 | #define UVH_GR0_TLB_INT0_CONFIG_P_SHFT 13 | ||
259 | #define UVH_GR0_TLB_INT0_CONFIG_P_MASK 0x0000000000002000UL | ||
260 | #define UVH_GR0_TLB_INT0_CONFIG_T_SHFT 15 | ||
261 | #define UVH_GR0_TLB_INT0_CONFIG_T_MASK 0x0000000000008000UL | ||
262 | #define UVH_GR0_TLB_INT0_CONFIG_M_SHFT 16 | ||
263 | #define UVH_GR0_TLB_INT0_CONFIG_M_MASK 0x0000000000010000UL | ||
264 | #define UVH_GR0_TLB_INT0_CONFIG_APIC_ID_SHFT 32 | ||
265 | #define UVH_GR0_TLB_INT0_CONFIG_APIC_ID_MASK 0xffffffff00000000UL | ||
266 | |||
267 | union uvh_gr0_tlb_int0_config_u { | ||
268 | unsigned long v; | ||
269 | struct uvh_gr0_tlb_int0_config_s { | ||
270 | unsigned long vector_ : 8; /* RW */ | ||
271 | unsigned long dm : 3; /* RW */ | ||
272 | unsigned long destmode : 1; /* RW */ | ||
273 | unsigned long status : 1; /* RO */ | ||
274 | unsigned long p : 1; /* RO */ | ||
275 | unsigned long rsvd_14 : 1; /* */ | ||
276 | unsigned long t : 1; /* RO */ | ||
277 | unsigned long m : 1; /* RW */ | ||
278 | unsigned long rsvd_17_31: 15; /* */ | ||
279 | unsigned long apic_id : 32; /* RW */ | ||
280 | } s; | ||
281 | }; | ||
282 | |||
283 | /* ========================================================================= */ | ||
284 | /* UVH_GR0_TLB_INT1_CONFIG */ | ||
285 | /* ========================================================================= */ | ||
286 | #define UVH_GR0_TLB_INT1_CONFIG 0x61b40UL | ||
287 | |||
288 | #define UVH_GR0_TLB_INT1_CONFIG_VECTOR_SHFT 0 | ||
289 | #define UVH_GR0_TLB_INT1_CONFIG_VECTOR_MASK 0x00000000000000ffUL | ||
290 | #define UVH_GR0_TLB_INT1_CONFIG_DM_SHFT 8 | ||
291 | #define UVH_GR0_TLB_INT1_CONFIG_DM_MASK 0x0000000000000700UL | ||
292 | #define UVH_GR0_TLB_INT1_CONFIG_DESTMODE_SHFT 11 | ||
293 | #define UVH_GR0_TLB_INT1_CONFIG_DESTMODE_MASK 0x0000000000000800UL | ||
294 | #define UVH_GR0_TLB_INT1_CONFIG_STATUS_SHFT 12 | ||
295 | #define UVH_GR0_TLB_INT1_CONFIG_STATUS_MASK 0x0000000000001000UL | ||
296 | #define UVH_GR0_TLB_INT1_CONFIG_P_SHFT 13 | ||
297 | #define UVH_GR0_TLB_INT1_CONFIG_P_MASK 0x0000000000002000UL | ||
298 | #define UVH_GR0_TLB_INT1_CONFIG_T_SHFT 15 | ||
299 | #define UVH_GR0_TLB_INT1_CONFIG_T_MASK 0x0000000000008000UL | ||
300 | #define UVH_GR0_TLB_INT1_CONFIG_M_SHFT 16 | ||
301 | #define UVH_GR0_TLB_INT1_CONFIG_M_MASK 0x0000000000010000UL | ||
302 | #define UVH_GR0_TLB_INT1_CONFIG_APIC_ID_SHFT 32 | ||
303 | #define UVH_GR0_TLB_INT1_CONFIG_APIC_ID_MASK 0xffffffff00000000UL | ||
304 | |||
305 | union uvh_gr0_tlb_int1_config_u { | ||
306 | unsigned long v; | ||
307 | struct uvh_gr0_tlb_int1_config_s { | ||
308 | unsigned long vector_ : 8; /* RW */ | ||
309 | unsigned long dm : 3; /* RW */ | ||
310 | unsigned long destmode : 1; /* RW */ | ||
311 | unsigned long status : 1; /* RO */ | ||
312 | unsigned long p : 1; /* RO */ | ||
313 | unsigned long rsvd_14 : 1; /* */ | ||
314 | unsigned long t : 1; /* RO */ | ||
315 | unsigned long m : 1; /* RW */ | ||
316 | unsigned long rsvd_17_31: 15; /* */ | ||
317 | unsigned long apic_id : 32; /* RW */ | ||
318 | } s; | ||
319 | }; | ||
320 | |||
321 | /* ========================================================================= */ | ||
322 | /* UVH_GR1_TLB_INT0_CONFIG */ | ||
323 | /* ========================================================================= */ | ||
324 | #define UVH_GR1_TLB_INT0_CONFIG 0x61f00UL | ||
325 | |||
326 | #define UVH_GR1_TLB_INT0_CONFIG_VECTOR_SHFT 0 | ||
327 | #define UVH_GR1_TLB_INT0_CONFIG_VECTOR_MASK 0x00000000000000ffUL | ||
328 | #define UVH_GR1_TLB_INT0_CONFIG_DM_SHFT 8 | ||
329 | #define UVH_GR1_TLB_INT0_CONFIG_DM_MASK 0x0000000000000700UL | ||
330 | #define UVH_GR1_TLB_INT0_CONFIG_DESTMODE_SHFT 11 | ||
331 | #define UVH_GR1_TLB_INT0_CONFIG_DESTMODE_MASK 0x0000000000000800UL | ||
332 | #define UVH_GR1_TLB_INT0_CONFIG_STATUS_SHFT 12 | ||
333 | #define UVH_GR1_TLB_INT0_CONFIG_STATUS_MASK 0x0000000000001000UL | ||
334 | #define UVH_GR1_TLB_INT0_CONFIG_P_SHFT 13 | ||
335 | #define UVH_GR1_TLB_INT0_CONFIG_P_MASK 0x0000000000002000UL | ||
336 | #define UVH_GR1_TLB_INT0_CONFIG_T_SHFT 15 | ||
337 | #define UVH_GR1_TLB_INT0_CONFIG_T_MASK 0x0000000000008000UL | ||
338 | #define UVH_GR1_TLB_INT0_CONFIG_M_SHFT 16 | ||
339 | #define UVH_GR1_TLB_INT0_CONFIG_M_MASK 0x0000000000010000UL | ||
340 | #define UVH_GR1_TLB_INT0_CONFIG_APIC_ID_SHFT 32 | ||
341 | #define UVH_GR1_TLB_INT0_CONFIG_APIC_ID_MASK 0xffffffff00000000UL | ||
342 | |||
343 | union uvh_gr1_tlb_int0_config_u { | ||
344 | unsigned long v; | ||
345 | struct uvh_gr1_tlb_int0_config_s { | ||
346 | unsigned long vector_ : 8; /* RW */ | ||
347 | unsigned long dm : 3; /* RW */ | ||
348 | unsigned long destmode : 1; /* RW */ | ||
349 | unsigned long status : 1; /* RO */ | ||
350 | unsigned long p : 1; /* RO */ | ||
351 | unsigned long rsvd_14 : 1; /* */ | ||
352 | unsigned long t : 1; /* RO */ | ||
353 | unsigned long m : 1; /* RW */ | ||
354 | unsigned long rsvd_17_31: 15; /* */ | ||
355 | unsigned long apic_id : 32; /* RW */ | ||
356 | } s; | ||
357 | }; | ||
358 | |||
359 | /* ========================================================================= */ | ||
360 | /* UVH_GR1_TLB_INT1_CONFIG */ | ||
361 | /* ========================================================================= */ | ||
362 | #define UVH_GR1_TLB_INT1_CONFIG 0x61f40UL | ||
363 | |||
364 | #define UVH_GR1_TLB_INT1_CONFIG_VECTOR_SHFT 0 | ||
365 | #define UVH_GR1_TLB_INT1_CONFIG_VECTOR_MASK 0x00000000000000ffUL | ||
366 | #define UVH_GR1_TLB_INT1_CONFIG_DM_SHFT 8 | ||
367 | #define UVH_GR1_TLB_INT1_CONFIG_DM_MASK 0x0000000000000700UL | ||
368 | #define UVH_GR1_TLB_INT1_CONFIG_DESTMODE_SHFT 11 | ||
369 | #define UVH_GR1_TLB_INT1_CONFIG_DESTMODE_MASK 0x0000000000000800UL | ||
370 | #define UVH_GR1_TLB_INT1_CONFIG_STATUS_SHFT 12 | ||
371 | #define UVH_GR1_TLB_INT1_CONFIG_STATUS_MASK 0x0000000000001000UL | ||
372 | #define UVH_GR1_TLB_INT1_CONFIG_P_SHFT 13 | ||
373 | #define UVH_GR1_TLB_INT1_CONFIG_P_MASK 0x0000000000002000UL | ||
374 | #define UVH_GR1_TLB_INT1_CONFIG_T_SHFT 15 | ||
375 | #define UVH_GR1_TLB_INT1_CONFIG_T_MASK 0x0000000000008000UL | ||
376 | #define UVH_GR1_TLB_INT1_CONFIG_M_SHFT 16 | ||
377 | #define UVH_GR1_TLB_INT1_CONFIG_M_MASK 0x0000000000010000UL | ||
378 | #define UVH_GR1_TLB_INT1_CONFIG_APIC_ID_SHFT 32 | ||
379 | #define UVH_GR1_TLB_INT1_CONFIG_APIC_ID_MASK 0xffffffff00000000UL | ||
380 | |||
381 | union uvh_gr1_tlb_int1_config_u { | ||
382 | unsigned long v; | ||
383 | struct uvh_gr1_tlb_int1_config_s { | ||
384 | unsigned long vector_ : 8; /* RW */ | ||
385 | unsigned long dm : 3; /* RW */ | ||
386 | unsigned long destmode : 1; /* RW */ | ||
387 | unsigned long status : 1; /* RO */ | ||
388 | unsigned long p : 1; /* RO */ | ||
389 | unsigned long rsvd_14 : 1; /* */ | ||
390 | unsigned long t : 1; /* RO */ | ||
391 | unsigned long m : 1; /* RW */ | ||
392 | unsigned long rsvd_17_31: 15; /* */ | ||
393 | unsigned long apic_id : 32; /* RW */ | ||
394 | } s; | ||
395 | }; | ||
396 | |||
397 | /* ========================================================================= */ | ||
246 | /* UVH_INT_CMPB */ | 398 | /* UVH_INT_CMPB */ |
247 | /* ========================================================================= */ | 399 | /* ========================================================================= */ |
248 | #define UVH_INT_CMPB 0x22080UL | 400 | #define UVH_INT_CMPB 0x22080UL |
@@ -670,4 +822,4 @@ union uvh_si_alias2_overlay_config_u { | |||
670 | }; | 822 | }; |
671 | 823 | ||
672 | 824 | ||
673 | #endif /* __ASM_IA64_UV_MMRS__ */ | 825 | #endif /* _ASM_IA64_UV_UV_MMRS_H */ |
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index c57162705147..5d7c0e5b9e76 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c | |||
@@ -413,7 +413,7 @@ ia64_load_extra (struct task_struct *task) | |||
413 | * so there is nothing to worry about. | 413 | * so there is nothing to worry about. |
414 | */ | 414 | */ |
415 | int | 415 | int |
416 | copy_thread (int nr, unsigned long clone_flags, | 416 | copy_thread(unsigned long clone_flags, |
417 | unsigned long user_stack_base, unsigned long user_stack_size, | 417 | unsigned long user_stack_base, unsigned long user_stack_size, |
418 | struct task_struct *p, struct pt_regs *regs) | 418 | struct task_struct *p, struct pt_regs *regs) |
419 | { | 419 | { |
diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c index 7103d91e1a2f..3e876f0baebc 100644 --- a/arch/m32r/kernel/process.c +++ b/arch/m32r/kernel/process.c | |||
@@ -225,7 +225,7 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu) | |||
225 | return 0; /* Task didn't use the fpu at all. */ | 225 | return 0; /* Task didn't use the fpu at all. */ |
226 | } | 226 | } |
227 | 227 | ||
228 | int copy_thread(int nr, unsigned long clone_flags, unsigned long spu, | 228 | int copy_thread(unsigned long clone_flags, unsigned long spu, |
229 | unsigned long unused, struct task_struct *tsk, struct pt_regs *regs) | 229 | unsigned long unused, struct task_struct *tsk, struct pt_regs *regs) |
230 | { | 230 | { |
231 | struct pt_regs *childregs = task_pt_regs(tsk); | 231 | struct pt_regs *childregs = task_pt_regs(tsk); |
diff --git a/arch/m68k/include/asm/bootinfo.h b/arch/m68k/include/asm/bootinfo.h index fedf3e326121..fb8a06b9ab6a 100644 --- a/arch/m68k/include/asm/bootinfo.h +++ b/arch/m68k/include/asm/bootinfo.h | |||
@@ -1,5 +1,378 @@ | |||
1 | #ifdef __uClinux__ | 1 | /* |
2 | #include "bootinfo_no.h" | 2 | ** asm/bootinfo.h -- Definition of the Linux/m68k boot information structure |
3 | #else | 3 | ** |
4 | #include "bootinfo_mm.h" | 4 | ** Copyright 1992 by Greg Harp |
5 | ** | ||
6 | ** This file is subject to the terms and conditions of the GNU General Public | ||
7 | ** License. See the file COPYING in the main directory of this archive | ||
8 | ** for more details. | ||
9 | ** | ||
10 | ** Created 09/29/92 by Greg Harp | ||
11 | ** | ||
12 | ** 5/2/94 Roman Hodek: | ||
13 | ** Added bi_atari part of the machine dependent union bi_un; for now it | ||
14 | ** contains just a model field to distinguish between TT and Falcon. | ||
15 | ** 26/7/96 Roman Zippel: | ||
16 | ** Renamed to setup.h; added some useful macros to allow gcc some | ||
17 | ** optimizations if possible. | ||
18 | ** 5/10/96 Geert Uytterhoeven: | ||
19 | ** Redesign of the boot information structure; renamed to bootinfo.h again | ||
20 | ** 27/11/96 Geert Uytterhoeven: | ||
21 | ** Backwards compatibility with bootinfo interface version 1.0 | ||
22 | */ | ||
23 | |||
24 | #ifndef _M68K_BOOTINFO_H | ||
25 | #define _M68K_BOOTINFO_H | ||
26 | |||
27 | |||
28 | /* | ||
29 | * Bootinfo definitions | ||
30 | * | ||
31 | * This is an easily parsable and extendable structure containing all | ||
32 | * information to be passed from the bootstrap to the kernel. | ||
33 | * | ||
34 | * This way I hope to keep all future changes back/forewards compatible. | ||
35 | * Thus, keep your fingers crossed... | ||
36 | * | ||
37 | * This structure is copied right after the kernel bss by the bootstrap | ||
38 | * routine. | ||
39 | */ | ||
40 | |||
41 | #ifndef __ASSEMBLY__ | ||
42 | |||
43 | struct bi_record { | ||
44 | unsigned short tag; /* tag ID */ | ||
45 | unsigned short size; /* size of record (in bytes) */ | ||
46 | unsigned long data[0]; /* data */ | ||
47 | }; | ||
48 | |||
49 | #endif /* __ASSEMBLY__ */ | ||
50 | |||
51 | |||
52 | /* | ||
53 | * Tag Definitions | ||
54 | * | ||
55 | * Machine independent tags start counting from 0x0000 | ||
56 | * Machine dependent tags start counting from 0x8000 | ||
57 | */ | ||
58 | |||
59 | #define BI_LAST 0x0000 /* last record (sentinel) */ | ||
60 | #define BI_MACHTYPE 0x0001 /* machine type (u_long) */ | ||
61 | #define BI_CPUTYPE 0x0002 /* cpu type (u_long) */ | ||
62 | #define BI_FPUTYPE 0x0003 /* fpu type (u_long) */ | ||
63 | #define BI_MMUTYPE 0x0004 /* mmu type (u_long) */ | ||
64 | #define BI_MEMCHUNK 0x0005 /* memory chunk address and size */ | ||
65 | /* (struct mem_info) */ | ||
66 | #define BI_RAMDISK 0x0006 /* ramdisk address and size */ | ||
67 | /* (struct mem_info) */ | ||
68 | #define BI_COMMAND_LINE 0x0007 /* kernel command line parameters */ | ||
69 | /* (string) */ | ||
70 | |||
71 | /* | ||
72 | * Amiga-specific tags | ||
73 | */ | ||
74 | |||
75 | #define BI_AMIGA_MODEL 0x8000 /* model (u_long) */ | ||
76 | #define BI_AMIGA_AUTOCON 0x8001 /* AutoConfig device */ | ||
77 | /* (struct ConfigDev) */ | ||
78 | #define BI_AMIGA_CHIP_SIZE 0x8002 /* size of Chip RAM (u_long) */ | ||
79 | #define BI_AMIGA_VBLANK 0x8003 /* VBLANK frequency (u_char) */ | ||
80 | #define BI_AMIGA_PSFREQ 0x8004 /* power supply frequency (u_char) */ | ||
81 | #define BI_AMIGA_ECLOCK 0x8005 /* EClock frequency (u_long) */ | ||
82 | #define BI_AMIGA_CHIPSET 0x8006 /* native chipset present (u_long) */ | ||
83 | #define BI_AMIGA_SERPER 0x8007 /* serial port period (u_short) */ | ||
84 | |||
85 | /* | ||
86 | * Atari-specific tags | ||
87 | */ | ||
88 | |||
89 | #define BI_ATARI_MCH_COOKIE 0x8000 /* _MCH cookie from TOS (u_long) */ | ||
90 | #define BI_ATARI_MCH_TYPE 0x8001 /* special machine type (u_long) */ | ||
91 | /* (values are ATARI_MACH_* defines */ | ||
92 | |||
93 | /* mch_cookie values (upper word) */ | ||
94 | #define ATARI_MCH_ST 0 | ||
95 | #define ATARI_MCH_STE 1 | ||
96 | #define ATARI_MCH_TT 2 | ||
97 | #define ATARI_MCH_FALCON 3 | ||
98 | |||
99 | /* mch_type values */ | ||
100 | #define ATARI_MACH_NORMAL 0 /* no special machine type */ | ||
101 | #define ATARI_MACH_MEDUSA 1 /* Medusa 040 */ | ||
102 | #define ATARI_MACH_HADES 2 /* Hades 040 or 060 */ | ||
103 | #define ATARI_MACH_AB40 3 /* Afterburner040 on Falcon */ | ||
104 | |||
105 | /* | ||
106 | * VME-specific tags | ||
107 | */ | ||
108 | |||
109 | #define BI_VME_TYPE 0x8000 /* VME sub-architecture (u_long) */ | ||
110 | #define BI_VME_BRDINFO 0x8001 /* VME board information (struct) */ | ||
111 | |||
112 | /* BI_VME_TYPE codes */ | ||
113 | #define VME_TYPE_TP34V 0x0034 /* Tadpole TP34V */ | ||
114 | #define VME_TYPE_MVME147 0x0147 /* Motorola MVME147 */ | ||
115 | #define VME_TYPE_MVME162 0x0162 /* Motorola MVME162 */ | ||
116 | #define VME_TYPE_MVME166 0x0166 /* Motorola MVME166 */ | ||
117 | #define VME_TYPE_MVME167 0x0167 /* Motorola MVME167 */ | ||
118 | #define VME_TYPE_MVME172 0x0172 /* Motorola MVME172 */ | ||
119 | #define VME_TYPE_MVME177 0x0177 /* Motorola MVME177 */ | ||
120 | #define VME_TYPE_BVME4000 0x4000 /* BVM Ltd. BVME4000 */ | ||
121 | #define VME_TYPE_BVME6000 0x6000 /* BVM Ltd. BVME6000 */ | ||
122 | |||
123 | /* BI_VME_BRDINFO is a 32 byte struct as returned by the Bug code on | ||
124 | * Motorola VME boards. Contains board number, Bug version, board | ||
125 | * configuration options, etc. See include/asm/mvme16xhw.h for details. | ||
126 | */ | ||
127 | |||
128 | |||
129 | /* | ||
130 | * Macintosh-specific tags (all u_long) | ||
131 | */ | ||
132 | |||
133 | #define BI_MAC_MODEL 0x8000 /* Mac Gestalt ID (model type) */ | ||
134 | #define BI_MAC_VADDR 0x8001 /* Mac video base address */ | ||
135 | #define BI_MAC_VDEPTH 0x8002 /* Mac video depth */ | ||
136 | #define BI_MAC_VROW 0x8003 /* Mac video rowbytes */ | ||
137 | #define BI_MAC_VDIM 0x8004 /* Mac video dimensions */ | ||
138 | #define BI_MAC_VLOGICAL 0x8005 /* Mac video logical base */ | ||
139 | #define BI_MAC_SCCBASE 0x8006 /* Mac SCC base address */ | ||
140 | #define BI_MAC_BTIME 0x8007 /* Mac boot time */ | ||
141 | #define BI_MAC_GMTBIAS 0x8008 /* Mac GMT timezone offset */ | ||
142 | #define BI_MAC_MEMSIZE 0x8009 /* Mac RAM size (sanity check) */ | ||
143 | #define BI_MAC_CPUID 0x800a /* Mac CPU type (sanity check) */ | ||
144 | #define BI_MAC_ROMBASE 0x800b /* Mac system ROM base address */ | ||
145 | |||
146 | /* | ||
147 | * Macintosh hardware profile data - unused, see macintosh.h for | ||
148 | * resonable type values | ||
149 | */ | ||
150 | |||
151 | #define BI_MAC_VIA1BASE 0x8010 /* Mac VIA1 base address (always present) */ | ||
152 | #define BI_MAC_VIA2BASE 0x8011 /* Mac VIA2 base address (type varies) */ | ||
153 | #define BI_MAC_VIA2TYPE 0x8012 /* Mac VIA2 type (VIA, RBV, OSS) */ | ||
154 | #define BI_MAC_ADBTYPE 0x8013 /* Mac ADB interface type */ | ||
155 | #define BI_MAC_ASCBASE 0x8014 /* Mac Apple Sound Chip base address */ | ||
156 | #define BI_MAC_SCSI5380 0x8015 /* Mac NCR 5380 SCSI (base address, multi) */ | ||
157 | #define BI_MAC_SCSIDMA 0x8016 /* Mac SCSI DMA (base address) */ | ||
158 | #define BI_MAC_SCSI5396 0x8017 /* Mac NCR 53C96 SCSI (base address, multi) */ | ||
159 | #define BI_MAC_IDETYPE 0x8018 /* Mac IDE interface type */ | ||
160 | #define BI_MAC_IDEBASE 0x8019 /* Mac IDE interface base address */ | ||
161 | #define BI_MAC_NUBUS 0x801a /* Mac Nubus type (none, regular, pseudo) */ | ||
162 | #define BI_MAC_SLOTMASK 0x801b /* Mac Nubus slots present */ | ||
163 | #define BI_MAC_SCCTYPE 0x801c /* Mac SCC serial type (normal, IOP) */ | ||
164 | #define BI_MAC_ETHTYPE 0x801d /* Mac builtin ethernet type (Sonic, MACE */ | ||
165 | #define BI_MAC_ETHBASE 0x801e /* Mac builtin ethernet base address */ | ||
166 | #define BI_MAC_PMU 0x801f /* Mac power management / poweroff hardware */ | ||
167 | #define BI_MAC_IOP_SWIM 0x8020 /* Mac SWIM floppy IOP */ | ||
168 | #define BI_MAC_IOP_ADB 0x8021 /* Mac ADB IOP */ | ||
169 | |||
170 | /* | ||
171 | * Mac: compatibility with old booter data format (temporarily) | ||
172 | * Fields unused with the new bootinfo can be deleted now; instead of | ||
173 | * adding new fields the struct might be splitted into a hardware address | ||
174 | * part and a hardware type part | ||
175 | */ | ||
176 | |||
177 | #ifndef __ASSEMBLY__ | ||
178 | |||
179 | struct mac_booter_data | ||
180 | { | ||
181 | unsigned long videoaddr; | ||
182 | unsigned long videorow; | ||
183 | unsigned long videodepth; | ||
184 | unsigned long dimensions; | ||
185 | unsigned long args; | ||
186 | unsigned long boottime; | ||
187 | unsigned long gmtbias; | ||
188 | unsigned long bootver; | ||
189 | unsigned long videological; | ||
190 | unsigned long sccbase; | ||
191 | unsigned long id; | ||
192 | unsigned long memsize; | ||
193 | unsigned long serialmf; | ||
194 | unsigned long serialhsk; | ||
195 | unsigned long serialgpi; | ||
196 | unsigned long printmf; | ||
197 | unsigned long printhsk; | ||
198 | unsigned long printgpi; | ||
199 | unsigned long cpuid; | ||
200 | unsigned long rombase; | ||
201 | unsigned long adbdelay; | ||
202 | unsigned long timedbra; | ||
203 | }; | ||
204 | |||
205 | extern struct mac_booter_data | ||
206 | mac_bi_data; | ||
207 | |||
5 | #endif | 208 | #endif |
209 | |||
210 | /* | ||
211 | * Apollo-specific tags | ||
212 | */ | ||
213 | |||
214 | #define BI_APOLLO_MODEL 0x8000 /* model (u_long) */ | ||
215 | |||
216 | /* | ||
217 | * HP300-specific tags | ||
218 | */ | ||
219 | |||
220 | #define BI_HP300_MODEL 0x8000 /* model (u_long) */ | ||
221 | #define BI_HP300_UART_SCODE 0x8001 /* UART select code (u_long) */ | ||
222 | #define BI_HP300_UART_ADDR 0x8002 /* phys. addr of UART (u_long) */ | ||
223 | |||
224 | /* | ||
225 | * Stuff for bootinfo interface versioning | ||
226 | * | ||
227 | * At the start of kernel code, a 'struct bootversion' is located. | ||
228 | * bootstrap checks for a matching version of the interface before booting | ||
229 | * a kernel, to avoid user confusion if kernel and bootstrap don't work | ||
230 | * together :-) | ||
231 | * | ||
232 | * If incompatible changes are made to the bootinfo interface, the major | ||
233 | * number below should be stepped (and the minor reset to 0) for the | ||
234 | * appropriate machine. If a change is backward-compatible, the minor | ||
235 | * should be stepped. "Backwards-compatible" means that booting will work, | ||
236 | * but certain features may not. | ||
237 | */ | ||
238 | |||
239 | #define BOOTINFOV_MAGIC 0x4249561A /* 'BIV^Z' */ | ||
240 | #define MK_BI_VERSION(major,minor) (((major)<<16)+(minor)) | ||
241 | #define BI_VERSION_MAJOR(v) (((v) >> 16) & 0xffff) | ||
242 | #define BI_VERSION_MINOR(v) ((v) & 0xffff) | ||
243 | |||
244 | #ifndef __ASSEMBLY__ | ||
245 | |||
246 | struct bootversion { | ||
247 | unsigned short branch; | ||
248 | unsigned long magic; | ||
249 | struct { | ||
250 | unsigned long machtype; | ||
251 | unsigned long version; | ||
252 | } machversions[0]; | ||
253 | }; | ||
254 | |||
255 | #endif /* __ASSEMBLY__ */ | ||
256 | |||
257 | #define AMIGA_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
258 | #define ATARI_BOOTI_VERSION MK_BI_VERSION( 2, 1 ) | ||
259 | #define MAC_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
260 | #define MVME147_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
261 | #define MVME16x_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
262 | #define BVME6000_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
263 | #define Q40_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
264 | #define HP300_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
265 | |||
266 | #ifdef BOOTINFO_COMPAT_1_0 | ||
267 | |||
268 | /* | ||
269 | * Backwards compatibility with bootinfo interface version 1.0 | ||
270 | */ | ||
271 | |||
272 | #define COMPAT_AMIGA_BOOTI_VERSION MK_BI_VERSION( 1, 0 ) | ||
273 | #define COMPAT_ATARI_BOOTI_VERSION MK_BI_VERSION( 1, 0 ) | ||
274 | #define COMPAT_MAC_BOOTI_VERSION MK_BI_VERSION( 1, 0 ) | ||
275 | |||
276 | #include <linux/zorro.h> | ||
277 | |||
278 | #define COMPAT_NUM_AUTO 16 | ||
279 | |||
280 | struct compat_bi_Amiga { | ||
281 | int model; | ||
282 | int num_autocon; | ||
283 | struct ConfigDev autocon[COMPAT_NUM_AUTO]; | ||
284 | unsigned long chip_size; | ||
285 | unsigned char vblank; | ||
286 | unsigned char psfreq; | ||
287 | unsigned long eclock; | ||
288 | unsigned long chipset; | ||
289 | unsigned long hw_present; | ||
290 | }; | ||
291 | |||
292 | struct compat_bi_Atari { | ||
293 | unsigned long hw_present; | ||
294 | unsigned long mch_cookie; | ||
295 | }; | ||
296 | |||
297 | #ifndef __ASSEMBLY__ | ||
298 | |||
299 | struct compat_bi_Macintosh | ||
300 | { | ||
301 | unsigned long videoaddr; | ||
302 | unsigned long videorow; | ||
303 | unsigned long videodepth; | ||
304 | unsigned long dimensions; | ||
305 | unsigned long args; | ||
306 | unsigned long boottime; | ||
307 | unsigned long gmtbias; | ||
308 | unsigned long bootver; | ||
309 | unsigned long videological; | ||
310 | unsigned long sccbase; | ||
311 | unsigned long id; | ||
312 | unsigned long memsize; | ||
313 | unsigned long serialmf; | ||
314 | unsigned long serialhsk; | ||
315 | unsigned long serialgpi; | ||
316 | unsigned long printmf; | ||
317 | unsigned long printhsk; | ||
318 | unsigned long printgpi; | ||
319 | unsigned long cpuid; | ||
320 | unsigned long rombase; | ||
321 | unsigned long adbdelay; | ||
322 | unsigned long timedbra; | ||
323 | }; | ||
324 | |||
325 | #endif | ||
326 | |||
327 | struct compat_mem_info { | ||
328 | unsigned long addr; | ||
329 | unsigned long size; | ||
330 | }; | ||
331 | |||
332 | #define COMPAT_NUM_MEMINFO 4 | ||
333 | |||
334 | #define COMPAT_CPUB_68020 0 | ||
335 | #define COMPAT_CPUB_68030 1 | ||
336 | #define COMPAT_CPUB_68040 2 | ||
337 | #define COMPAT_CPUB_68060 3 | ||
338 | #define COMPAT_FPUB_68881 5 | ||
339 | #define COMPAT_FPUB_68882 6 | ||
340 | #define COMPAT_FPUB_68040 7 | ||
341 | #define COMPAT_FPUB_68060 8 | ||
342 | |||
343 | #define COMPAT_CPU_68020 (1<<COMPAT_CPUB_68020) | ||
344 | #define COMPAT_CPU_68030 (1<<COMPAT_CPUB_68030) | ||
345 | #define COMPAT_CPU_68040 (1<<COMPAT_CPUB_68040) | ||
346 | #define COMPAT_CPU_68060 (1<<COMPAT_CPUB_68060) | ||
347 | #define COMPAT_CPU_MASK (31) | ||
348 | #define COMPAT_FPU_68881 (1<<COMPAT_FPUB_68881) | ||
349 | #define COMPAT_FPU_68882 (1<<COMPAT_FPUB_68882) | ||
350 | #define COMPAT_FPU_68040 (1<<COMPAT_FPUB_68040) | ||
351 | #define COMPAT_FPU_68060 (1<<COMPAT_FPUB_68060) | ||
352 | #define COMPAT_FPU_MASK (0xfe0) | ||
353 | |||
354 | #define COMPAT_CL_SIZE (256) | ||
355 | |||
356 | struct compat_bootinfo { | ||
357 | unsigned long machtype; | ||
358 | unsigned long cputype; | ||
359 | struct compat_mem_info memory[COMPAT_NUM_MEMINFO]; | ||
360 | int num_memory; | ||
361 | unsigned long ramdisk_size; | ||
362 | unsigned long ramdisk_addr; | ||
363 | char command_line[COMPAT_CL_SIZE]; | ||
364 | union { | ||
365 | struct compat_bi_Amiga bi_ami; | ||
366 | struct compat_bi_Atari bi_ata; | ||
367 | struct compat_bi_Macintosh bi_mac; | ||
368 | } bi_un; | ||
369 | }; | ||
370 | |||
371 | #define bi_amiga bi_un.bi_ami | ||
372 | #define bi_atari bi_un.bi_ata | ||
373 | #define bi_mac bi_un.bi_mac | ||
374 | |||
375 | #endif /* BOOTINFO_COMPAT_1_0 */ | ||
376 | |||
377 | |||
378 | #endif /* _M68K_BOOTINFO_H */ | ||
diff --git a/arch/m68k/include/asm/bootinfo_mm.h b/arch/m68k/include/asm/bootinfo_mm.h deleted file mode 100644 index fb8a06b9ab6a..000000000000 --- a/arch/m68k/include/asm/bootinfo_mm.h +++ /dev/null | |||
@@ -1,378 +0,0 @@ | |||
1 | /* | ||
2 | ** asm/bootinfo.h -- Definition of the Linux/m68k boot information structure | ||
3 | ** | ||
4 | ** Copyright 1992 by Greg Harp | ||
5 | ** | ||
6 | ** This file is subject to the terms and conditions of the GNU General Public | ||
7 | ** License. See the file COPYING in the main directory of this archive | ||
8 | ** for more details. | ||
9 | ** | ||
10 | ** Created 09/29/92 by Greg Harp | ||
11 | ** | ||
12 | ** 5/2/94 Roman Hodek: | ||
13 | ** Added bi_atari part of the machine dependent union bi_un; for now it | ||
14 | ** contains just a model field to distinguish between TT and Falcon. | ||
15 | ** 26/7/96 Roman Zippel: | ||
16 | ** Renamed to setup.h; added some useful macros to allow gcc some | ||
17 | ** optimizations if possible. | ||
18 | ** 5/10/96 Geert Uytterhoeven: | ||
19 | ** Redesign of the boot information structure; renamed to bootinfo.h again | ||
20 | ** 27/11/96 Geert Uytterhoeven: | ||
21 | ** Backwards compatibility with bootinfo interface version 1.0 | ||
22 | */ | ||
23 | |||
24 | #ifndef _M68K_BOOTINFO_H | ||
25 | #define _M68K_BOOTINFO_H | ||
26 | |||
27 | |||
28 | /* | ||
29 | * Bootinfo definitions | ||
30 | * | ||
31 | * This is an easily parsable and extendable structure containing all | ||
32 | * information to be passed from the bootstrap to the kernel. | ||
33 | * | ||
34 | * This way I hope to keep all future changes back/forewards compatible. | ||
35 | * Thus, keep your fingers crossed... | ||
36 | * | ||
37 | * This structure is copied right after the kernel bss by the bootstrap | ||
38 | * routine. | ||
39 | */ | ||
40 | |||
41 | #ifndef __ASSEMBLY__ | ||
42 | |||
43 | struct bi_record { | ||
44 | unsigned short tag; /* tag ID */ | ||
45 | unsigned short size; /* size of record (in bytes) */ | ||
46 | unsigned long data[0]; /* data */ | ||
47 | }; | ||
48 | |||
49 | #endif /* __ASSEMBLY__ */ | ||
50 | |||
51 | |||
52 | /* | ||
53 | * Tag Definitions | ||
54 | * | ||
55 | * Machine independent tags start counting from 0x0000 | ||
56 | * Machine dependent tags start counting from 0x8000 | ||
57 | */ | ||
58 | |||
59 | #define BI_LAST 0x0000 /* last record (sentinel) */ | ||
60 | #define BI_MACHTYPE 0x0001 /* machine type (u_long) */ | ||
61 | #define BI_CPUTYPE 0x0002 /* cpu type (u_long) */ | ||
62 | #define BI_FPUTYPE 0x0003 /* fpu type (u_long) */ | ||
63 | #define BI_MMUTYPE 0x0004 /* mmu type (u_long) */ | ||
64 | #define BI_MEMCHUNK 0x0005 /* memory chunk address and size */ | ||
65 | /* (struct mem_info) */ | ||
66 | #define BI_RAMDISK 0x0006 /* ramdisk address and size */ | ||
67 | /* (struct mem_info) */ | ||
68 | #define BI_COMMAND_LINE 0x0007 /* kernel command line parameters */ | ||
69 | /* (string) */ | ||
70 | |||
71 | /* | ||
72 | * Amiga-specific tags | ||
73 | */ | ||
74 | |||
75 | #define BI_AMIGA_MODEL 0x8000 /* model (u_long) */ | ||
76 | #define BI_AMIGA_AUTOCON 0x8001 /* AutoConfig device */ | ||
77 | /* (struct ConfigDev) */ | ||
78 | #define BI_AMIGA_CHIP_SIZE 0x8002 /* size of Chip RAM (u_long) */ | ||
79 | #define BI_AMIGA_VBLANK 0x8003 /* VBLANK frequency (u_char) */ | ||
80 | #define BI_AMIGA_PSFREQ 0x8004 /* power supply frequency (u_char) */ | ||
81 | #define BI_AMIGA_ECLOCK 0x8005 /* EClock frequency (u_long) */ | ||
82 | #define BI_AMIGA_CHIPSET 0x8006 /* native chipset present (u_long) */ | ||
83 | #define BI_AMIGA_SERPER 0x8007 /* serial port period (u_short) */ | ||
84 | |||
85 | /* | ||
86 | * Atari-specific tags | ||
87 | */ | ||
88 | |||
89 | #define BI_ATARI_MCH_COOKIE 0x8000 /* _MCH cookie from TOS (u_long) */ | ||
90 | #define BI_ATARI_MCH_TYPE 0x8001 /* special machine type (u_long) */ | ||
91 | /* (values are ATARI_MACH_* defines */ | ||
92 | |||
93 | /* mch_cookie values (upper word) */ | ||
94 | #define ATARI_MCH_ST 0 | ||
95 | #define ATARI_MCH_STE 1 | ||
96 | #define ATARI_MCH_TT 2 | ||
97 | #define ATARI_MCH_FALCON 3 | ||
98 | |||
99 | /* mch_type values */ | ||
100 | #define ATARI_MACH_NORMAL 0 /* no special machine type */ | ||
101 | #define ATARI_MACH_MEDUSA 1 /* Medusa 040 */ | ||
102 | #define ATARI_MACH_HADES 2 /* Hades 040 or 060 */ | ||
103 | #define ATARI_MACH_AB40 3 /* Afterburner040 on Falcon */ | ||
104 | |||
105 | /* | ||
106 | * VME-specific tags | ||
107 | */ | ||
108 | |||
109 | #define BI_VME_TYPE 0x8000 /* VME sub-architecture (u_long) */ | ||
110 | #define BI_VME_BRDINFO 0x8001 /* VME board information (struct) */ | ||
111 | |||
112 | /* BI_VME_TYPE codes */ | ||
113 | #define VME_TYPE_TP34V 0x0034 /* Tadpole TP34V */ | ||
114 | #define VME_TYPE_MVME147 0x0147 /* Motorola MVME147 */ | ||
115 | #define VME_TYPE_MVME162 0x0162 /* Motorola MVME162 */ | ||
116 | #define VME_TYPE_MVME166 0x0166 /* Motorola MVME166 */ | ||
117 | #define VME_TYPE_MVME167 0x0167 /* Motorola MVME167 */ | ||
118 | #define VME_TYPE_MVME172 0x0172 /* Motorola MVME172 */ | ||
119 | #define VME_TYPE_MVME177 0x0177 /* Motorola MVME177 */ | ||
120 | #define VME_TYPE_BVME4000 0x4000 /* BVM Ltd. BVME4000 */ | ||
121 | #define VME_TYPE_BVME6000 0x6000 /* BVM Ltd. BVME6000 */ | ||
122 | |||
123 | /* BI_VME_BRDINFO is a 32 byte struct as returned by the Bug code on | ||
124 | * Motorola VME boards. Contains board number, Bug version, board | ||
125 | * configuration options, etc. See include/asm/mvme16xhw.h for details. | ||
126 | */ | ||
127 | |||
128 | |||
129 | /* | ||
130 | * Macintosh-specific tags (all u_long) | ||
131 | */ | ||
132 | |||
133 | #define BI_MAC_MODEL 0x8000 /* Mac Gestalt ID (model type) */ | ||
134 | #define BI_MAC_VADDR 0x8001 /* Mac video base address */ | ||
135 | #define BI_MAC_VDEPTH 0x8002 /* Mac video depth */ | ||
136 | #define BI_MAC_VROW 0x8003 /* Mac video rowbytes */ | ||
137 | #define BI_MAC_VDIM 0x8004 /* Mac video dimensions */ | ||
138 | #define BI_MAC_VLOGICAL 0x8005 /* Mac video logical base */ | ||
139 | #define BI_MAC_SCCBASE 0x8006 /* Mac SCC base address */ | ||
140 | #define BI_MAC_BTIME 0x8007 /* Mac boot time */ | ||
141 | #define BI_MAC_GMTBIAS 0x8008 /* Mac GMT timezone offset */ | ||
142 | #define BI_MAC_MEMSIZE 0x8009 /* Mac RAM size (sanity check) */ | ||
143 | #define BI_MAC_CPUID 0x800a /* Mac CPU type (sanity check) */ | ||
144 | #define BI_MAC_ROMBASE 0x800b /* Mac system ROM base address */ | ||
145 | |||
146 | /* | ||
147 | * Macintosh hardware profile data - unused, see macintosh.h for | ||
148 | * resonable type values | ||
149 | */ | ||
150 | |||
151 | #define BI_MAC_VIA1BASE 0x8010 /* Mac VIA1 base address (always present) */ | ||
152 | #define BI_MAC_VIA2BASE 0x8011 /* Mac VIA2 base address (type varies) */ | ||
153 | #define BI_MAC_VIA2TYPE 0x8012 /* Mac VIA2 type (VIA, RBV, OSS) */ | ||
154 | #define BI_MAC_ADBTYPE 0x8013 /* Mac ADB interface type */ | ||
155 | #define BI_MAC_ASCBASE 0x8014 /* Mac Apple Sound Chip base address */ | ||
156 | #define BI_MAC_SCSI5380 0x8015 /* Mac NCR 5380 SCSI (base address, multi) */ | ||
157 | #define BI_MAC_SCSIDMA 0x8016 /* Mac SCSI DMA (base address) */ | ||
158 | #define BI_MAC_SCSI5396 0x8017 /* Mac NCR 53C96 SCSI (base address, multi) */ | ||
159 | #define BI_MAC_IDETYPE 0x8018 /* Mac IDE interface type */ | ||
160 | #define BI_MAC_IDEBASE 0x8019 /* Mac IDE interface base address */ | ||
161 | #define BI_MAC_NUBUS 0x801a /* Mac Nubus type (none, regular, pseudo) */ | ||
162 | #define BI_MAC_SLOTMASK 0x801b /* Mac Nubus slots present */ | ||
163 | #define BI_MAC_SCCTYPE 0x801c /* Mac SCC serial type (normal, IOP) */ | ||
164 | #define BI_MAC_ETHTYPE 0x801d /* Mac builtin ethernet type (Sonic, MACE */ | ||
165 | #define BI_MAC_ETHBASE 0x801e /* Mac builtin ethernet base address */ | ||
166 | #define BI_MAC_PMU 0x801f /* Mac power management / poweroff hardware */ | ||
167 | #define BI_MAC_IOP_SWIM 0x8020 /* Mac SWIM floppy IOP */ | ||
168 | #define BI_MAC_IOP_ADB 0x8021 /* Mac ADB IOP */ | ||
169 | |||
170 | /* | ||
171 | * Mac: compatibility with old booter data format (temporarily) | ||
172 | * Fields unused with the new bootinfo can be deleted now; instead of | ||
173 | * adding new fields the struct might be splitted into a hardware address | ||
174 | * part and a hardware type part | ||
175 | */ | ||
176 | |||
177 | #ifndef __ASSEMBLY__ | ||
178 | |||
179 | struct mac_booter_data | ||
180 | { | ||
181 | unsigned long videoaddr; | ||
182 | unsigned long videorow; | ||
183 | unsigned long videodepth; | ||
184 | unsigned long dimensions; | ||
185 | unsigned long args; | ||
186 | unsigned long boottime; | ||
187 | unsigned long gmtbias; | ||
188 | unsigned long bootver; | ||
189 | unsigned long videological; | ||
190 | unsigned long sccbase; | ||
191 | unsigned long id; | ||
192 | unsigned long memsize; | ||
193 | unsigned long serialmf; | ||
194 | unsigned long serialhsk; | ||
195 | unsigned long serialgpi; | ||
196 | unsigned long printmf; | ||
197 | unsigned long printhsk; | ||
198 | unsigned long printgpi; | ||
199 | unsigned long cpuid; | ||
200 | unsigned long rombase; | ||
201 | unsigned long adbdelay; | ||
202 | unsigned long timedbra; | ||
203 | }; | ||
204 | |||
205 | extern struct mac_booter_data | ||
206 | mac_bi_data; | ||
207 | |||
208 | #endif | ||
209 | |||
210 | /* | ||
211 | * Apollo-specific tags | ||
212 | */ | ||
213 | |||
214 | #define BI_APOLLO_MODEL 0x8000 /* model (u_long) */ | ||
215 | |||
216 | /* | ||
217 | * HP300-specific tags | ||
218 | */ | ||
219 | |||
220 | #define BI_HP300_MODEL 0x8000 /* model (u_long) */ | ||
221 | #define BI_HP300_UART_SCODE 0x8001 /* UART select code (u_long) */ | ||
222 | #define BI_HP300_UART_ADDR 0x8002 /* phys. addr of UART (u_long) */ | ||
223 | |||
224 | /* | ||
225 | * Stuff for bootinfo interface versioning | ||
226 | * | ||
227 | * At the start of kernel code, a 'struct bootversion' is located. | ||
228 | * bootstrap checks for a matching version of the interface before booting | ||
229 | * a kernel, to avoid user confusion if kernel and bootstrap don't work | ||
230 | * together :-) | ||
231 | * | ||
232 | * If incompatible changes are made to the bootinfo interface, the major | ||
233 | * number below should be stepped (and the minor reset to 0) for the | ||
234 | * appropriate machine. If a change is backward-compatible, the minor | ||
235 | * should be stepped. "Backwards-compatible" means that booting will work, | ||
236 | * but certain features may not. | ||
237 | */ | ||
238 | |||
239 | #define BOOTINFOV_MAGIC 0x4249561A /* 'BIV^Z' */ | ||
240 | #define MK_BI_VERSION(major,minor) (((major)<<16)+(minor)) | ||
241 | #define BI_VERSION_MAJOR(v) (((v) >> 16) & 0xffff) | ||
242 | #define BI_VERSION_MINOR(v) ((v) & 0xffff) | ||
243 | |||
244 | #ifndef __ASSEMBLY__ | ||
245 | |||
246 | struct bootversion { | ||
247 | unsigned short branch; | ||
248 | unsigned long magic; | ||
249 | struct { | ||
250 | unsigned long machtype; | ||
251 | unsigned long version; | ||
252 | } machversions[0]; | ||
253 | }; | ||
254 | |||
255 | #endif /* __ASSEMBLY__ */ | ||
256 | |||
257 | #define AMIGA_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
258 | #define ATARI_BOOTI_VERSION MK_BI_VERSION( 2, 1 ) | ||
259 | #define MAC_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
260 | #define MVME147_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
261 | #define MVME16x_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
262 | #define BVME6000_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
263 | #define Q40_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
264 | #define HP300_BOOTI_VERSION MK_BI_VERSION( 2, 0 ) | ||
265 | |||
266 | #ifdef BOOTINFO_COMPAT_1_0 | ||
267 | |||
268 | /* | ||
269 | * Backwards compatibility with bootinfo interface version 1.0 | ||
270 | */ | ||
271 | |||
272 | #define COMPAT_AMIGA_BOOTI_VERSION MK_BI_VERSION( 1, 0 ) | ||
273 | #define COMPAT_ATARI_BOOTI_VERSION MK_BI_VERSION( 1, 0 ) | ||
274 | #define COMPAT_MAC_BOOTI_VERSION MK_BI_VERSION( 1, 0 ) | ||
275 | |||
276 | #include <linux/zorro.h> | ||
277 | |||
278 | #define COMPAT_NUM_AUTO 16 | ||
279 | |||
280 | struct compat_bi_Amiga { | ||
281 | int model; | ||
282 | int num_autocon; | ||
283 | struct ConfigDev autocon[COMPAT_NUM_AUTO]; | ||
284 | unsigned long chip_size; | ||
285 | unsigned char vblank; | ||
286 | unsigned char psfreq; | ||
287 | unsigned long eclock; | ||
288 | unsigned long chipset; | ||
289 | unsigned long hw_present; | ||
290 | }; | ||
291 | |||
292 | struct compat_bi_Atari { | ||
293 | unsigned long hw_present; | ||
294 | unsigned long mch_cookie; | ||
295 | }; | ||
296 | |||
297 | #ifndef __ASSEMBLY__ | ||
298 | |||
299 | struct compat_bi_Macintosh | ||
300 | { | ||
301 | unsigned long videoaddr; | ||
302 | unsigned long videorow; | ||
303 | unsigned long videodepth; | ||
304 | unsigned long dimensions; | ||
305 | unsigned long args; | ||
306 | unsigned long boottime; | ||
307 | unsigned long gmtbias; | ||
308 | unsigned long bootver; | ||
309 | unsigned long videological; | ||
310 | unsigned long sccbase; | ||
311 | unsigned long id; | ||
312 | unsigned long memsize; | ||
313 | unsigned long serialmf; | ||
314 | unsigned long serialhsk; | ||
315 | unsigned long serialgpi; | ||
316 | unsigned long printmf; | ||
317 | unsigned long printhsk; | ||
318 | unsigned long printgpi; | ||
319 | unsigned long cpuid; | ||
320 | unsigned long rombase; | ||
321 | unsigned long adbdelay; | ||
322 | unsigned long timedbra; | ||
323 | }; | ||
324 | |||
325 | #endif | ||
326 | |||
327 | struct compat_mem_info { | ||
328 | unsigned long addr; | ||
329 | unsigned long size; | ||
330 | }; | ||
331 | |||
332 | #define COMPAT_NUM_MEMINFO 4 | ||
333 | |||
334 | #define COMPAT_CPUB_68020 0 | ||
335 | #define COMPAT_CPUB_68030 1 | ||
336 | #define COMPAT_CPUB_68040 2 | ||
337 | #define COMPAT_CPUB_68060 3 | ||
338 | #define COMPAT_FPUB_68881 5 | ||
339 | #define COMPAT_FPUB_68882 6 | ||
340 | #define COMPAT_FPUB_68040 7 | ||
341 | #define COMPAT_FPUB_68060 8 | ||
342 | |||
343 | #define COMPAT_CPU_68020 (1<<COMPAT_CPUB_68020) | ||
344 | #define COMPAT_CPU_68030 (1<<COMPAT_CPUB_68030) | ||
345 | #define COMPAT_CPU_68040 (1<<COMPAT_CPUB_68040) | ||
346 | #define COMPAT_CPU_68060 (1<<COMPAT_CPUB_68060) | ||
347 | #define COMPAT_CPU_MASK (31) | ||
348 | #define COMPAT_FPU_68881 (1<<COMPAT_FPUB_68881) | ||
349 | #define COMPAT_FPU_68882 (1<<COMPAT_FPUB_68882) | ||
350 | #define COMPAT_FPU_68040 (1<<COMPAT_FPUB_68040) | ||
351 | #define COMPAT_FPU_68060 (1<<COMPAT_FPUB_68060) | ||
352 | #define COMPAT_FPU_MASK (0xfe0) | ||
353 | |||
354 | #define COMPAT_CL_SIZE (256) | ||
355 | |||
356 | struct compat_bootinfo { | ||
357 | unsigned long machtype; | ||
358 | unsigned long cputype; | ||
359 | struct compat_mem_info memory[COMPAT_NUM_MEMINFO]; | ||
360 | int num_memory; | ||
361 | unsigned long ramdisk_size; | ||
362 | unsigned long ramdisk_addr; | ||
363 | char command_line[COMPAT_CL_SIZE]; | ||
364 | union { | ||
365 | struct compat_bi_Amiga bi_ami; | ||
366 | struct compat_bi_Atari bi_ata; | ||
367 | struct compat_bi_Macintosh bi_mac; | ||
368 | } bi_un; | ||
369 | }; | ||
370 | |||
371 | #define bi_amiga bi_un.bi_ami | ||
372 | #define bi_atari bi_un.bi_ata | ||
373 | #define bi_mac bi_un.bi_mac | ||
374 | |||
375 | #endif /* BOOTINFO_COMPAT_1_0 */ | ||
376 | |||
377 | |||
378 | #endif /* _M68K_BOOTINFO_H */ | ||
diff --git a/arch/m68k/include/asm/bootinfo_no.h b/arch/m68k/include/asm/bootinfo_no.h deleted file mode 100644 index c12e526f5189..000000000000 --- a/arch/m68k/include/asm/bootinfo_no.h +++ /dev/null | |||
@@ -1,2 +0,0 @@ | |||
1 | |||
2 | /* Nothing for m68knommu */ | ||
diff --git a/arch/m68k/include/asm/bug.h b/arch/m68k/include/asm/bug.h index 997e0944ebc1..ef9a2e47352f 100644 --- a/arch/m68k/include/asm/bug.h +++ b/arch/m68k/include/asm/bug.h | |||
@@ -1,5 +1,30 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_BUG_H |
2 | #include "bug_no.h" | 2 | #define _M68K_BUG_H |
3 | |||
4 | #ifdef CONFIG_MMU | ||
5 | #ifdef CONFIG_BUG | ||
6 | #ifdef CONFIG_DEBUG_BUGVERBOSE | ||
7 | #ifndef CONFIG_SUN3 | ||
8 | #define BUG() do { \ | ||
9 | printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ | ||
10 | __builtin_trap(); \ | ||
11 | } while (0) | ||
3 | #else | 12 | #else |
4 | #include "bug_mm.h" | 13 | #define BUG() do { \ |
14 | printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ | ||
15 | panic("BUG!"); \ | ||
16 | } while (0) | ||
17 | #endif | ||
18 | #else | ||
19 | #define BUG() do { \ | ||
20 | __builtin_trap(); \ | ||
21 | } while (0) | ||
22 | #endif | ||
23 | |||
24 | #define HAVE_ARCH_BUG | ||
25 | #endif | ||
26 | #endif /* CONFIG_MMU */ | ||
27 | |||
28 | #include <asm-generic/bug.h> | ||
29 | |||
5 | #endif | 30 | #endif |
diff --git a/arch/m68k/include/asm/bug_mm.h b/arch/m68k/include/asm/bug_mm.h deleted file mode 100644 index e5b528deb8a8..000000000000 --- a/arch/m68k/include/asm/bug_mm.h +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | #ifndef _M68K_BUG_H | ||
2 | #define _M68K_BUG_H | ||
3 | |||
4 | |||
5 | #ifdef CONFIG_BUG | ||
6 | #ifdef CONFIG_DEBUG_BUGVERBOSE | ||
7 | #ifndef CONFIG_SUN3 | ||
8 | #define BUG() do { \ | ||
9 | printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ | ||
10 | __builtin_trap(); \ | ||
11 | } while (0) | ||
12 | #else | ||
13 | #define BUG() do { \ | ||
14 | printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ | ||
15 | panic("BUG!"); \ | ||
16 | } while (0) | ||
17 | #endif | ||
18 | #else | ||
19 | #define BUG() do { \ | ||
20 | __builtin_trap(); \ | ||
21 | } while (0) | ||
22 | #endif | ||
23 | |||
24 | #define HAVE_ARCH_BUG | ||
25 | #endif | ||
26 | |||
27 | #include <asm-generic/bug.h> | ||
28 | |||
29 | #endif | ||
diff --git a/arch/m68k/include/asm/bug_no.h b/arch/m68k/include/asm/bug_no.h deleted file mode 100644 index 70e7dc0af21a..000000000000 --- a/arch/m68k/include/asm/bug_no.h +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | #ifndef _M68KNOMMU_BUG_H | ||
2 | #define _M68KNOMMU_BUG_H | ||
3 | #include <asm-generic/bug.h> | ||
4 | #endif | ||
diff --git a/arch/m68k/include/asm/bugs.h b/arch/m68k/include/asm/bugs.h index 01f047d784ec..d06207b9ba5a 100644 --- a/arch/m68k/include/asm/bugs.h +++ b/arch/m68k/include/asm/bugs.h | |||
@@ -1,5 +1,20 @@ | |||
1 | #ifdef __uClinux__ | 1 | /* |
2 | #include "bugs_no.h" | 2 | * include/asm-m68k/bugs.h |
3 | * | ||
4 | * Copyright (C) 1994 Linus Torvalds | ||
5 | */ | ||
6 | |||
7 | /* | ||
8 | * This is included by init/main.c to check for architecture-dependent bugs. | ||
9 | * | ||
10 | * Needs: | ||
11 | * void check_bugs(void); | ||
12 | */ | ||
13 | |||
14 | #ifdef CONFIG_MMU | ||
15 | extern void check_bugs(void); /* in arch/m68k/kernel/setup.c */ | ||
3 | #else | 16 | #else |
4 | #include "bugs_mm.h" | 17 | static void check_bugs(void) |
18 | { | ||
19 | } | ||
5 | #endif | 20 | #endif |
diff --git a/arch/m68k/include/asm/bugs_mm.h b/arch/m68k/include/asm/bugs_mm.h deleted file mode 100644 index d01935592410..000000000000 --- a/arch/m68k/include/asm/bugs_mm.h +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | /* | ||
2 | * include/asm-m68k/bugs.h | ||
3 | * | ||
4 | * Copyright (C) 1994 Linus Torvalds | ||
5 | */ | ||
6 | |||
7 | /* | ||
8 | * This is included by init/main.c to check for architecture-dependent bugs. | ||
9 | * | ||
10 | * Needs: | ||
11 | * void check_bugs(void); | ||
12 | */ | ||
13 | |||
14 | extern void check_bugs(void); /* in arch/m68k/kernel/setup.c */ | ||
diff --git a/arch/m68k/include/asm/bugs_no.h b/arch/m68k/include/asm/bugs_no.h deleted file mode 100644 index 5f382dac3a60..000000000000 --- a/arch/m68k/include/asm/bugs_no.h +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | /* | ||
2 | * include/asm-m68k/bugs.h | ||
3 | * | ||
4 | * Copyright (C) 1994 Linus Torvalds | ||
5 | */ | ||
6 | |||
7 | /* | ||
8 | * This is included by init/main.c to check for architecture-dependent bugs. | ||
9 | * | ||
10 | * Needs: | ||
11 | * void check_bugs(void); | ||
12 | */ | ||
13 | |||
14 | static void check_bugs(void) | ||
15 | { | ||
16 | } | ||
diff --git a/arch/m68k/include/asm/cache.h b/arch/m68k/include/asm/cache.h index 599c29bc8f40..fed3fd30de7e 100644 --- a/arch/m68k/include/asm/cache.h +++ b/arch/m68k/include/asm/cache.h | |||
@@ -1,5 +1,11 @@ | |||
1 | #ifdef __uClinux__ | 1 | /* |
2 | #include "cache_no.h" | 2 | * include/asm-m68k/cache.h |
3 | #else | 3 | */ |
4 | #include "cache_mm.h" | 4 | #ifndef __ARCH_M68K_CACHE_H |
5 | #define __ARCH_M68K_CACHE_H | ||
6 | |||
7 | /* bytes per L1 cache line */ | ||
8 | #define L1_CACHE_SHIFT 4 | ||
9 | #define L1_CACHE_BYTES (1<< L1_CACHE_SHIFT) | ||
10 | |||
5 | #endif | 11 | #endif |
diff --git a/arch/m68k/include/asm/cache_mm.h b/arch/m68k/include/asm/cache_mm.h deleted file mode 100644 index fed3fd30de7e..000000000000 --- a/arch/m68k/include/asm/cache_mm.h +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | /* | ||
2 | * include/asm-m68k/cache.h | ||
3 | */ | ||
4 | #ifndef __ARCH_M68K_CACHE_H | ||
5 | #define __ARCH_M68K_CACHE_H | ||
6 | |||
7 | /* bytes per L1 cache line */ | ||
8 | #define L1_CACHE_SHIFT 4 | ||
9 | #define L1_CACHE_BYTES (1<< L1_CACHE_SHIFT) | ||
10 | |||
11 | #endif | ||
diff --git a/arch/m68k/include/asm/cache_no.h b/arch/m68k/include/asm/cache_no.h deleted file mode 100644 index 24e9eace5f8c..000000000000 --- a/arch/m68k/include/asm/cache_no.h +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | #ifndef __ARCH_M68KNOMMU_CACHE_H | ||
2 | #define __ARCH_M68KNOMMU_CACHE_H | ||
3 | |||
4 | /* bytes per L1 cache line */ | ||
5 | #define L1_CACHE_BYTES 16 /* this need to be at least 1 */ | ||
6 | |||
7 | /* m68k-elf-gcc 2.95.2 doesn't like these */ | ||
8 | |||
9 | #define __cacheline_aligned | ||
10 | #define ____cacheline_aligned | ||
11 | |||
12 | #endif | ||
diff --git a/arch/m68k/include/asm/current.h b/arch/m68k/include/asm/current.h index 51b056dfaedd..91fcc5358cfe 100644 --- a/arch/m68k/include/asm/current.h +++ b/arch/m68k/include/asm/current.h | |||
@@ -1,5 +1,28 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_CURRENT_H |
2 | #include "current_no.h" | 2 | #define _M68K_CURRENT_H |
3 | |||
4 | #ifdef CONFIG_MMU | ||
5 | |||
6 | register struct task_struct *current __asm__("%a2"); | ||
7 | |||
3 | #else | 8 | #else |
4 | #include "current_mm.h" | 9 | |
5 | #endif | 10 | /* |
11 | * Rather than dedicate a register (as the m68k source does), we | ||
12 | * just keep a global, we should probably just change it all to be | ||
13 | * current and lose _current_task. | ||
14 | */ | ||
15 | #include <linux/thread_info.h> | ||
16 | |||
17 | struct task_struct; | ||
18 | |||
19 | static inline struct task_struct *get_current(void) | ||
20 | { | ||
21 | return(current_thread_info()->task); | ||
22 | } | ||
23 | |||
24 | #define current get_current() | ||
25 | |||
26 | #endif /* CONFNIG_MMU */ | ||
27 | |||
28 | #endif /* !(_M68K_CURRENT_H) */ | ||
diff --git a/arch/m68k/include/asm/current_mm.h b/arch/m68k/include/asm/current_mm.h deleted file mode 100644 index 8de8f8ceda61..000000000000 --- a/arch/m68k/include/asm/current_mm.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef _M68K_CURRENT_H | ||
2 | #define _M68K_CURRENT_H | ||
3 | |||
4 | register struct task_struct *current __asm__("%a2"); | ||
5 | |||
6 | #endif /* !(_M68K_CURRENT_H) */ | ||
diff --git a/arch/m68k/include/asm/current_no.h b/arch/m68k/include/asm/current_no.h deleted file mode 100644 index 53ee0f9f7cef..000000000000 --- a/arch/m68k/include/asm/current_no.h +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | #ifndef _M68KNOMMU_CURRENT_H | ||
2 | #define _M68KNOMMU_CURRENT_H | ||
3 | /* | ||
4 | * current.h | ||
5 | * (C) Copyright 2000, Lineo, David McCullough <davidm@uclinux.org> | ||
6 | * (C) Copyright 2002, Greg Ungerer (gerg@snapgear.com) | ||
7 | * | ||
8 | * rather than dedicate a register (as the m68k source does), we | ||
9 | * just keep a global, we should probably just change it all to be | ||
10 | * current and lose _current_task. | ||
11 | */ | ||
12 | |||
13 | #include <linux/thread_info.h> | ||
14 | |||
15 | struct task_struct; | ||
16 | |||
17 | static inline struct task_struct *get_current(void) | ||
18 | { | ||
19 | return(current_thread_info()->task); | ||
20 | } | ||
21 | |||
22 | #define current get_current() | ||
23 | |||
24 | #endif /* _M68KNOMMU_CURRENT_H */ | ||
diff --git a/arch/m68k/include/asm/div64.h b/arch/m68k/include/asm/div64.h index d211d9f54276..edb66148a71d 100644 --- a/arch/m68k/include/asm/div64.h +++ b/arch/m68k/include/asm/div64.h | |||
@@ -1,5 +1,34 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_DIV64_H |
2 | #include "div64_no.h" | 2 | #define _M68K_DIV64_H |
3 | |||
4 | #ifdef CONFIG_MMU | ||
5 | |||
6 | #include <linux/types.h> | ||
7 | |||
8 | /* n = n / base; return rem; */ | ||
9 | |||
10 | #define do_div(n, base) ({ \ | ||
11 | union { \ | ||
12 | unsigned long n32[2]; \ | ||
13 | unsigned long long n64; \ | ||
14 | } __n; \ | ||
15 | unsigned long __rem, __upper; \ | ||
16 | \ | ||
17 | __n.n64 = (n); \ | ||
18 | if ((__upper = __n.n32[0])) { \ | ||
19 | asm ("divul.l %2,%1:%0" \ | ||
20 | : "=d" (__n.n32[0]), "=d" (__upper) \ | ||
21 | : "d" (base), "0" (__n.n32[0])); \ | ||
22 | } \ | ||
23 | asm ("divu.l %2,%1:%0" \ | ||
24 | : "=d" (__n.n32[1]), "=d" (__rem) \ | ||
25 | : "d" (base), "1" (__upper), "0" (__n.n32[1])); \ | ||
26 | (n) = __n.n64; \ | ||
27 | __rem; \ | ||
28 | }) | ||
29 | |||
3 | #else | 30 | #else |
4 | #include "div64_mm.h" | 31 | #include <asm-generic/div64.h> |
5 | #endif | 32 | #endif /* CONFIG_MMU */ |
33 | |||
34 | #endif /* _M68K_DIV64_H */ | ||
diff --git a/arch/m68k/include/asm/div64_mm.h b/arch/m68k/include/asm/div64_mm.h deleted file mode 100644 index 8243c931b5c0..000000000000 --- a/arch/m68k/include/asm/div64_mm.h +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | #ifndef _M68K_DIV64_H | ||
2 | #define _M68K_DIV64_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | |||
6 | /* n = n / base; return rem; */ | ||
7 | |||
8 | #define do_div(n, base) ({ \ | ||
9 | union { \ | ||
10 | unsigned long n32[2]; \ | ||
11 | unsigned long long n64; \ | ||
12 | } __n; \ | ||
13 | unsigned long __rem, __upper; \ | ||
14 | \ | ||
15 | __n.n64 = (n); \ | ||
16 | if ((__upper = __n.n32[0])) { \ | ||
17 | asm ("divul.l %2,%1:%0" \ | ||
18 | : "=d" (__n.n32[0]), "=d" (__upper) \ | ||
19 | : "d" (base), "0" (__n.n32[0])); \ | ||
20 | } \ | ||
21 | asm ("divu.l %2,%1:%0" \ | ||
22 | : "=d" (__n.n32[1]), "=d" (__rem) \ | ||
23 | : "d" (base), "1" (__upper), "0" (__n.n32[1])); \ | ||
24 | (n) = __n.n64; \ | ||
25 | __rem; \ | ||
26 | }) | ||
27 | |||
28 | #endif /* _M68K_DIV64_H */ | ||
diff --git a/arch/m68k/include/asm/div64_no.h b/arch/m68k/include/asm/div64_no.h deleted file mode 100644 index 6cd978cefb28..000000000000 --- a/arch/m68k/include/asm/div64_no.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-generic/div64.h> | ||
diff --git a/arch/m68k/include/asm/dma-mapping.h b/arch/m68k/include/asm/dma-mapping.h index f4a4c7638f89..26f505488c11 100644 --- a/arch/m68k/include/asm/dma-mapping.h +++ b/arch/m68k/include/asm/dma-mapping.h | |||
@@ -1,5 +1,112 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_DMA_MAPPING_H |
2 | #include "dma-mapping_no.h" | 2 | #define _M68K_DMA_MAPPING_H |
3 | |||
4 | #include <asm/cache.h> | ||
5 | |||
6 | struct scatterlist; | ||
7 | |||
8 | #ifndef CONFIG_MMU_SUN3 | ||
9 | static inline int dma_supported(struct device *dev, u64 mask) | ||
10 | { | ||
11 | return 1; | ||
12 | } | ||
13 | |||
14 | static inline int dma_set_mask(struct device *dev, u64 mask) | ||
15 | { | ||
16 | return 0; | ||
17 | } | ||
18 | |||
19 | static inline int dma_get_cache_alignment(void) | ||
20 | { | ||
21 | return 1 << L1_CACHE_SHIFT; | ||
22 | } | ||
23 | |||
24 | static inline int dma_is_consistent(struct device *dev, dma_addr_t dma_addr) | ||
25 | { | ||
26 | return 0; | ||
27 | } | ||
28 | |||
29 | extern void *dma_alloc_coherent(struct device *, size_t, | ||
30 | dma_addr_t *, gfp_t); | ||
31 | extern void dma_free_coherent(struct device *, size_t, | ||
32 | void *, dma_addr_t); | ||
33 | |||
34 | static inline void *dma_alloc_noncoherent(struct device *dev, size_t size, | ||
35 | dma_addr_t *handle, gfp_t flag) | ||
36 | { | ||
37 | return dma_alloc_coherent(dev, size, handle, flag); | ||
38 | } | ||
39 | static inline void dma_free_noncoherent(struct device *dev, size_t size, | ||
40 | void *addr, dma_addr_t handle) | ||
41 | { | ||
42 | dma_free_coherent(dev, size, addr, handle); | ||
43 | } | ||
44 | static inline void dma_cache_sync(struct device *dev, void *vaddr, size_t size, | ||
45 | enum dma_data_direction dir) | ||
46 | { | ||
47 | /* we use coherent allocation, so not much to do here. */ | ||
48 | } | ||
49 | |||
50 | extern dma_addr_t dma_map_single(struct device *, void *, size_t, | ||
51 | enum dma_data_direction); | ||
52 | static inline void dma_unmap_single(struct device *dev, dma_addr_t addr, | ||
53 | size_t size, enum dma_data_direction dir) | ||
54 | { | ||
55 | } | ||
56 | |||
57 | extern dma_addr_t dma_map_page(struct device *, struct page *, | ||
58 | unsigned long, size_t size, | ||
59 | enum dma_data_direction); | ||
60 | static inline void dma_unmap_page(struct device *dev, dma_addr_t address, | ||
61 | size_t size, enum dma_data_direction dir) | ||
62 | { | ||
63 | } | ||
64 | |||
65 | extern int dma_map_sg(struct device *, struct scatterlist *, int, | ||
66 | enum dma_data_direction); | ||
67 | static inline void dma_unmap_sg(struct device *dev, struct scatterlist *sg, | ||
68 | int nhwentries, enum dma_data_direction dir) | ||
69 | { | ||
70 | } | ||
71 | |||
72 | extern void dma_sync_single_for_device(struct device *, dma_addr_t, size_t, | ||
73 | enum dma_data_direction); | ||
74 | extern void dma_sync_sg_for_device(struct device *, struct scatterlist *, int, | ||
75 | enum dma_data_direction); | ||
76 | |||
77 | static inline void dma_sync_single_range_for_device(struct device *dev, | ||
78 | dma_addr_t dma_handle, unsigned long offset, size_t size, | ||
79 | enum dma_data_direction direction) | ||
80 | { | ||
81 | /* just sync everything for now */ | ||
82 | dma_sync_single_for_device(dev, dma_handle, offset + size, direction); | ||
83 | } | ||
84 | |||
85 | static inline void dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, | ||
86 | size_t size, enum dma_data_direction dir) | ||
87 | { | ||
88 | } | ||
89 | |||
90 | static inline void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, | ||
91 | int nents, enum dma_data_direction dir) | ||
92 | { | ||
93 | } | ||
94 | |||
95 | static inline void dma_sync_single_range_for_cpu(struct device *dev, | ||
96 | dma_addr_t dma_handle, unsigned long offset, size_t size, | ||
97 | enum dma_data_direction direction) | ||
98 | { | ||
99 | /* just sync everything for now */ | ||
100 | dma_sync_single_for_cpu(dev, dma_handle, offset + size, direction); | ||
101 | } | ||
102 | |||
103 | static inline int dma_mapping_error(struct device *dev, dma_addr_t handle) | ||
104 | { | ||
105 | return 0; | ||
106 | } | ||
107 | |||
3 | #else | 108 | #else |
4 | #include "dma-mapping_mm.h" | 109 | #include <asm-generic/dma-mapping-broken.h> |
5 | #endif | 110 | #endif |
111 | |||
112 | #endif /* _M68K_DMA_MAPPING_H */ | ||
diff --git a/arch/m68k/include/asm/dma-mapping_mm.h b/arch/m68k/include/asm/dma-mapping_mm.h deleted file mode 100644 index 26f505488c11..000000000000 --- a/arch/m68k/include/asm/dma-mapping_mm.h +++ /dev/null | |||
@@ -1,112 +0,0 @@ | |||
1 | #ifndef _M68K_DMA_MAPPING_H | ||
2 | #define _M68K_DMA_MAPPING_H | ||
3 | |||
4 | #include <asm/cache.h> | ||
5 | |||
6 | struct scatterlist; | ||
7 | |||
8 | #ifndef CONFIG_MMU_SUN3 | ||
9 | static inline int dma_supported(struct device *dev, u64 mask) | ||
10 | { | ||
11 | return 1; | ||
12 | } | ||
13 | |||
14 | static inline int dma_set_mask(struct device *dev, u64 mask) | ||
15 | { | ||
16 | return 0; | ||
17 | } | ||
18 | |||
19 | static inline int dma_get_cache_alignment(void) | ||
20 | { | ||
21 | return 1 << L1_CACHE_SHIFT; | ||
22 | } | ||
23 | |||
24 | static inline int dma_is_consistent(struct device *dev, dma_addr_t dma_addr) | ||
25 | { | ||
26 | return 0; | ||
27 | } | ||
28 | |||
29 | extern void *dma_alloc_coherent(struct device *, size_t, | ||
30 | dma_addr_t *, gfp_t); | ||
31 | extern void dma_free_coherent(struct device *, size_t, | ||
32 | void *, dma_addr_t); | ||
33 | |||
34 | static inline void *dma_alloc_noncoherent(struct device *dev, size_t size, | ||
35 | dma_addr_t *handle, gfp_t flag) | ||
36 | { | ||
37 | return dma_alloc_coherent(dev, size, handle, flag); | ||
38 | } | ||
39 | static inline void dma_free_noncoherent(struct device *dev, size_t size, | ||
40 | void *addr, dma_addr_t handle) | ||
41 | { | ||
42 | dma_free_coherent(dev, size, addr, handle); | ||
43 | } | ||
44 | static inline void dma_cache_sync(struct device *dev, void *vaddr, size_t size, | ||
45 | enum dma_data_direction dir) | ||
46 | { | ||
47 | /* we use coherent allocation, so not much to do here. */ | ||
48 | } | ||
49 | |||
50 | extern dma_addr_t dma_map_single(struct device *, void *, size_t, | ||
51 | enum dma_data_direction); | ||
52 | static inline void dma_unmap_single(struct device *dev, dma_addr_t addr, | ||
53 | size_t size, enum dma_data_direction dir) | ||
54 | { | ||
55 | } | ||
56 | |||
57 | extern dma_addr_t dma_map_page(struct device *, struct page *, | ||
58 | unsigned long, size_t size, | ||
59 | enum dma_data_direction); | ||
60 | static inline void dma_unmap_page(struct device *dev, dma_addr_t address, | ||
61 | size_t size, enum dma_data_direction dir) | ||
62 | { | ||
63 | } | ||
64 | |||
65 | extern int dma_map_sg(struct device *, struct scatterlist *, int, | ||
66 | enum dma_data_direction); | ||
67 | static inline void dma_unmap_sg(struct device *dev, struct scatterlist *sg, | ||
68 | int nhwentries, enum dma_data_direction dir) | ||
69 | { | ||
70 | } | ||
71 | |||
72 | extern void dma_sync_single_for_device(struct device *, dma_addr_t, size_t, | ||
73 | enum dma_data_direction); | ||
74 | extern void dma_sync_sg_for_device(struct device *, struct scatterlist *, int, | ||
75 | enum dma_data_direction); | ||
76 | |||
77 | static inline void dma_sync_single_range_for_device(struct device *dev, | ||
78 | dma_addr_t dma_handle, unsigned long offset, size_t size, | ||
79 | enum dma_data_direction direction) | ||
80 | { | ||
81 | /* just sync everything for now */ | ||
82 | dma_sync_single_for_device(dev, dma_handle, offset + size, direction); | ||
83 | } | ||
84 | |||
85 | static inline void dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, | ||
86 | size_t size, enum dma_data_direction dir) | ||
87 | { | ||
88 | } | ||
89 | |||
90 | static inline void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, | ||
91 | int nents, enum dma_data_direction dir) | ||
92 | { | ||
93 | } | ||
94 | |||
95 | static inline void dma_sync_single_range_for_cpu(struct device *dev, | ||
96 | dma_addr_t dma_handle, unsigned long offset, size_t size, | ||
97 | enum dma_data_direction direction) | ||
98 | { | ||
99 | /* just sync everything for now */ | ||
100 | dma_sync_single_for_cpu(dev, dma_handle, offset + size, direction); | ||
101 | } | ||
102 | |||
103 | static inline int dma_mapping_error(struct device *dev, dma_addr_t handle) | ||
104 | { | ||
105 | return 0; | ||
106 | } | ||
107 | |||
108 | #else | ||
109 | #include <asm-generic/dma-mapping-broken.h> | ||
110 | #endif | ||
111 | |||
112 | #endif /* _M68K_DMA_MAPPING_H */ | ||
diff --git a/arch/m68k/include/asm/dma-mapping_no.h b/arch/m68k/include/asm/dma-mapping_no.h deleted file mode 100644 index 1748f2bca940..000000000000 --- a/arch/m68k/include/asm/dma-mapping_no.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef _M68KNOMMU_DMA_MAPPING_H | ||
2 | #define _M68KNOMMU_DMA_MAPPING_H | ||
3 | |||
4 | #include <asm-generic/dma-mapping-broken.h> | ||
5 | |||
6 | #endif /* _M68KNOMMU_DMA_MAPPING_H */ | ||
diff --git a/arch/m68k/include/asm/elf.h b/arch/m68k/include/asm/elf.h index 04ce488bc63f..0b0f49eb876b 100644 --- a/arch/m68k/include/asm/elf.h +++ b/arch/m68k/include/asm/elf.h | |||
@@ -1,5 +1,119 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef __ASMm68k_ELF_H |
2 | #include "elf_no.h" | 2 | #define __ASMm68k_ELF_H |
3 | |||
4 | /* | ||
5 | * ELF register definitions.. | ||
6 | */ | ||
7 | |||
8 | #include <asm/ptrace.h> | ||
9 | #include <asm/user.h> | ||
10 | |||
11 | /* | ||
12 | * 68k ELF relocation types | ||
13 | */ | ||
14 | #define R_68K_NONE 0 | ||
15 | #define R_68K_32 1 | ||
16 | #define R_68K_16 2 | ||
17 | #define R_68K_8 3 | ||
18 | #define R_68K_PC32 4 | ||
19 | #define R_68K_PC16 5 | ||
20 | #define R_68K_PC8 6 | ||
21 | #define R_68K_GOT32 7 | ||
22 | #define R_68K_GOT16 8 | ||
23 | #define R_68K_GOT8 9 | ||
24 | #define R_68K_GOT32O 10 | ||
25 | #define R_68K_GOT16O 11 | ||
26 | #define R_68K_GOT8O 12 | ||
27 | #define R_68K_PLT32 13 | ||
28 | #define R_68K_PLT16 14 | ||
29 | #define R_68K_PLT8 15 | ||
30 | #define R_68K_PLT32O 16 | ||
31 | #define R_68K_PLT16O 17 | ||
32 | #define R_68K_PLT8O 18 | ||
33 | #define R_68K_COPY 19 | ||
34 | #define R_68K_GLOB_DAT 20 | ||
35 | #define R_68K_JMP_SLOT 21 | ||
36 | #define R_68K_RELATIVE 22 | ||
37 | |||
38 | typedef unsigned long elf_greg_t; | ||
39 | |||
40 | #define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) | ||
41 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | ||
42 | |||
43 | typedef struct user_m68kfp_struct elf_fpregset_t; | ||
44 | |||
45 | /* | ||
46 | * This is used to ensure we don't load something for the wrong architecture. | ||
47 | */ | ||
48 | #define elf_check_arch(x) ((x)->e_machine == EM_68K) | ||
49 | |||
50 | /* | ||
51 | * These are used to set parameters in the core dumps. | ||
52 | */ | ||
53 | #define ELF_CLASS ELFCLASS32 | ||
54 | #define ELF_DATA ELFDATA2MSB | ||
55 | #define ELF_ARCH EM_68K | ||
56 | |||
57 | /* For SVR4/m68k the function pointer to be registered with `atexit' is | ||
58 | passed in %a1. Although my copy of the ABI has no such statement, it | ||
59 | is actually used on ASV. */ | ||
60 | #define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0 | ||
61 | |||
62 | #define USE_ELF_CORE_DUMP | ||
63 | #ifndef CONFIG_SUN3 | ||
64 | #define ELF_EXEC_PAGESIZE 4096 | ||
3 | #else | 65 | #else |
4 | #include "elf_mm.h" | 66 | #define ELF_EXEC_PAGESIZE 8192 |
67 | #endif | ||
68 | |||
69 | /* This is the location that an ET_DYN program is loaded if exec'ed. Typical | ||
70 | use of this is to invoke "./ld.so someprog" to test out a new version of | ||
71 | the loader. We need to make sure that it is out of the way of the program | ||
72 | that it will "exec", and that there is sufficient room for the brk. */ | ||
73 | |||
74 | #ifndef CONFIG_SUN3 | ||
75 | #define ELF_ET_DYN_BASE 0xD0000000UL | ||
76 | #else | ||
77 | #define ELF_ET_DYN_BASE 0x0D800000UL | ||
78 | #endif | ||
79 | |||
80 | #define ELF_CORE_COPY_REGS(pr_reg, regs) \ | ||
81 | /* Bleech. */ \ | ||
82 | pr_reg[0] = regs->d1; \ | ||
83 | pr_reg[1] = regs->d2; \ | ||
84 | pr_reg[2] = regs->d3; \ | ||
85 | pr_reg[3] = regs->d4; \ | ||
86 | pr_reg[4] = regs->d5; \ | ||
87 | pr_reg[7] = regs->a0; \ | ||
88 | pr_reg[8] = regs->a1; \ | ||
89 | pr_reg[9] = regs->a2; \ | ||
90 | pr_reg[14] = regs->d0; \ | ||
91 | pr_reg[15] = rdusp(); \ | ||
92 | pr_reg[16] = regs->orig_d0; \ | ||
93 | pr_reg[17] = regs->sr; \ | ||
94 | pr_reg[18] = regs->pc; \ | ||
95 | pr_reg[19] = (regs->format << 12) | regs->vector; \ | ||
96 | { \ | ||
97 | struct switch_stack *sw = ((struct switch_stack *)regs) - 1; \ | ||
98 | pr_reg[5] = sw->d6; \ | ||
99 | pr_reg[6] = sw->d7; \ | ||
100 | pr_reg[10] = sw->a3; \ | ||
101 | pr_reg[11] = sw->a4; \ | ||
102 | pr_reg[12] = sw->a5; \ | ||
103 | pr_reg[13] = sw->a6; \ | ||
104 | } | ||
105 | |||
106 | /* This yields a mask that user programs can use to figure out what | ||
107 | instruction set this cpu supports. */ | ||
108 | |||
109 | #define ELF_HWCAP (0) | ||
110 | |||
111 | /* This yields a string that ld.so will use to load implementation | ||
112 | specific libraries for optimization. This is more specific in | ||
113 | intent than poking at uname or /proc/cpuinfo. */ | ||
114 | |||
115 | #define ELF_PLATFORM (NULL) | ||
116 | |||
117 | #define SET_PERSONALITY(ex) set_personality(PER_LINUX) | ||
118 | |||
5 | #endif | 119 | #endif |
diff --git a/arch/m68k/include/asm/elf_mm.h b/arch/m68k/include/asm/elf_mm.h deleted file mode 100644 index 0b0f49eb876b..000000000000 --- a/arch/m68k/include/asm/elf_mm.h +++ /dev/null | |||
@@ -1,119 +0,0 @@ | |||
1 | #ifndef __ASMm68k_ELF_H | ||
2 | #define __ASMm68k_ELF_H | ||
3 | |||
4 | /* | ||
5 | * ELF register definitions.. | ||
6 | */ | ||
7 | |||
8 | #include <asm/ptrace.h> | ||
9 | #include <asm/user.h> | ||
10 | |||
11 | /* | ||
12 | * 68k ELF relocation types | ||
13 | */ | ||
14 | #define R_68K_NONE 0 | ||
15 | #define R_68K_32 1 | ||
16 | #define R_68K_16 2 | ||
17 | #define R_68K_8 3 | ||
18 | #define R_68K_PC32 4 | ||
19 | #define R_68K_PC16 5 | ||
20 | #define R_68K_PC8 6 | ||
21 | #define R_68K_GOT32 7 | ||
22 | #define R_68K_GOT16 8 | ||
23 | #define R_68K_GOT8 9 | ||
24 | #define R_68K_GOT32O 10 | ||
25 | #define R_68K_GOT16O 11 | ||
26 | #define R_68K_GOT8O 12 | ||
27 | #define R_68K_PLT32 13 | ||
28 | #define R_68K_PLT16 14 | ||
29 | #define R_68K_PLT8 15 | ||
30 | #define R_68K_PLT32O 16 | ||
31 | #define R_68K_PLT16O 17 | ||
32 | #define R_68K_PLT8O 18 | ||
33 | #define R_68K_COPY 19 | ||
34 | #define R_68K_GLOB_DAT 20 | ||
35 | #define R_68K_JMP_SLOT 21 | ||
36 | #define R_68K_RELATIVE 22 | ||
37 | |||
38 | typedef unsigned long elf_greg_t; | ||
39 | |||
40 | #define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) | ||
41 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | ||
42 | |||
43 | typedef struct user_m68kfp_struct elf_fpregset_t; | ||
44 | |||
45 | /* | ||
46 | * This is used to ensure we don't load something for the wrong architecture. | ||
47 | */ | ||
48 | #define elf_check_arch(x) ((x)->e_machine == EM_68K) | ||
49 | |||
50 | /* | ||
51 | * These are used to set parameters in the core dumps. | ||
52 | */ | ||
53 | #define ELF_CLASS ELFCLASS32 | ||
54 | #define ELF_DATA ELFDATA2MSB | ||
55 | #define ELF_ARCH EM_68K | ||
56 | |||
57 | /* For SVR4/m68k the function pointer to be registered with `atexit' is | ||
58 | passed in %a1. Although my copy of the ABI has no such statement, it | ||
59 | is actually used on ASV. */ | ||
60 | #define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0 | ||
61 | |||
62 | #define USE_ELF_CORE_DUMP | ||
63 | #ifndef CONFIG_SUN3 | ||
64 | #define ELF_EXEC_PAGESIZE 4096 | ||
65 | #else | ||
66 | #define ELF_EXEC_PAGESIZE 8192 | ||
67 | #endif | ||
68 | |||
69 | /* This is the location that an ET_DYN program is loaded if exec'ed. Typical | ||
70 | use of this is to invoke "./ld.so someprog" to test out a new version of | ||
71 | the loader. We need to make sure that it is out of the way of the program | ||
72 | that it will "exec", and that there is sufficient room for the brk. */ | ||
73 | |||
74 | #ifndef CONFIG_SUN3 | ||
75 | #define ELF_ET_DYN_BASE 0xD0000000UL | ||
76 | #else | ||
77 | #define ELF_ET_DYN_BASE 0x0D800000UL | ||
78 | #endif | ||
79 | |||
80 | #define ELF_CORE_COPY_REGS(pr_reg, regs) \ | ||
81 | /* Bleech. */ \ | ||
82 | pr_reg[0] = regs->d1; \ | ||
83 | pr_reg[1] = regs->d2; \ | ||
84 | pr_reg[2] = regs->d3; \ | ||
85 | pr_reg[3] = regs->d4; \ | ||
86 | pr_reg[4] = regs->d5; \ | ||
87 | pr_reg[7] = regs->a0; \ | ||
88 | pr_reg[8] = regs->a1; \ | ||
89 | pr_reg[9] = regs->a2; \ | ||
90 | pr_reg[14] = regs->d0; \ | ||
91 | pr_reg[15] = rdusp(); \ | ||
92 | pr_reg[16] = regs->orig_d0; \ | ||
93 | pr_reg[17] = regs->sr; \ | ||
94 | pr_reg[18] = regs->pc; \ | ||
95 | pr_reg[19] = (regs->format << 12) | regs->vector; \ | ||
96 | { \ | ||
97 | struct switch_stack *sw = ((struct switch_stack *)regs) - 1; \ | ||
98 | pr_reg[5] = sw->d6; \ | ||
99 | pr_reg[6] = sw->d7; \ | ||
100 | pr_reg[10] = sw->a3; \ | ||
101 | pr_reg[11] = sw->a4; \ | ||
102 | pr_reg[12] = sw->a5; \ | ||
103 | pr_reg[13] = sw->a6; \ | ||
104 | } | ||
105 | |||
106 | /* This yields a mask that user programs can use to figure out what | ||
107 | instruction set this cpu supports. */ | ||
108 | |||
109 | #define ELF_HWCAP (0) | ||
110 | |||
111 | /* This yields a string that ld.so will use to load implementation | ||
112 | specific libraries for optimization. This is more specific in | ||
113 | intent than poking at uname or /proc/cpuinfo. */ | ||
114 | |||
115 | #define ELF_PLATFORM (NULL) | ||
116 | |||
117 | #define SET_PERSONALITY(ex) set_personality(PER_LINUX) | ||
118 | |||
119 | #endif | ||
diff --git a/arch/m68k/include/asm/elf_no.h b/arch/m68k/include/asm/elf_no.h deleted file mode 100644 index b8046837f384..000000000000 --- a/arch/m68k/include/asm/elf_no.h +++ /dev/null | |||
@@ -1,110 +0,0 @@ | |||
1 | #ifndef __ASMm68k_ELF_H | ||
2 | #define __ASMm68k_ELF_H | ||
3 | |||
4 | /* | ||
5 | * ELF register definitions.. | ||
6 | */ | ||
7 | |||
8 | #include <asm/ptrace.h> | ||
9 | #include <asm/user.h> | ||
10 | |||
11 | /* | ||
12 | * 68k ELF relocation types | ||
13 | */ | ||
14 | #define R_68K_NONE 0 | ||
15 | #define R_68K_32 1 | ||
16 | #define R_68K_16 2 | ||
17 | #define R_68K_8 3 | ||
18 | #define R_68K_PC32 4 | ||
19 | #define R_68K_PC16 5 | ||
20 | #define R_68K_PC8 6 | ||
21 | #define R_68K_GOT32 7 | ||
22 | #define R_68K_GOT16 8 | ||
23 | #define R_68K_GOT8 9 | ||
24 | #define R_68K_GOT32O 10 | ||
25 | #define R_68K_GOT16O 11 | ||
26 | #define R_68K_GOT8O 12 | ||
27 | #define R_68K_PLT32 13 | ||
28 | #define R_68K_PLT16 14 | ||
29 | #define R_68K_PLT8 15 | ||
30 | #define R_68K_PLT32O 16 | ||
31 | #define R_68K_PLT16O 17 | ||
32 | #define R_68K_PLT8O 18 | ||
33 | #define R_68K_COPY 19 | ||
34 | #define R_68K_GLOB_DAT 20 | ||
35 | #define R_68K_JMP_SLOT 21 | ||
36 | #define R_68K_RELATIVE 22 | ||
37 | |||
38 | typedef unsigned long elf_greg_t; | ||
39 | |||
40 | #define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) | ||
41 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | ||
42 | |||
43 | typedef struct user_m68kfp_struct elf_fpregset_t; | ||
44 | |||
45 | /* | ||
46 | * This is used to ensure we don't load something for the wrong architecture. | ||
47 | */ | ||
48 | #define elf_check_arch(x) ((x)->e_machine == EM_68K) | ||
49 | |||
50 | /* | ||
51 | * These are used to set parameters in the core dumps. | ||
52 | */ | ||
53 | #define ELF_CLASS ELFCLASS32 | ||
54 | #define ELF_DATA ELFDATA2MSB | ||
55 | #define ELF_ARCH EM_68K | ||
56 | |||
57 | /* For SVR4/m68k the function pointer to be registered with `atexit' is | ||
58 | passed in %a1. Although my copy of the ABI has no such statement, it | ||
59 | is actually used on ASV. */ | ||
60 | #define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0 | ||
61 | |||
62 | #define USE_ELF_CORE_DUMP | ||
63 | #define ELF_EXEC_PAGESIZE 4096 | ||
64 | |||
65 | /* This is the location that an ET_DYN program is loaded if exec'ed. Typical | ||
66 | use of this is to invoke "./ld.so someprog" to test out a new version of | ||
67 | the loader. We need to make sure that it is out of the way of the program | ||
68 | that it will "exec", and that there is sufficient room for the brk. */ | ||
69 | |||
70 | #define ELF_ET_DYN_BASE 0xD0000000UL | ||
71 | |||
72 | #define ELF_CORE_COPY_REGS(pr_reg, regs) \ | ||
73 | /* Bleech. */ \ | ||
74 | pr_reg[0] = regs->d1; \ | ||
75 | pr_reg[1] = regs->d2; \ | ||
76 | pr_reg[2] = regs->d3; \ | ||
77 | pr_reg[3] = regs->d4; \ | ||
78 | pr_reg[4] = regs->d5; \ | ||
79 | pr_reg[7] = regs->a0; \ | ||
80 | pr_reg[8] = regs->a1; \ | ||
81 | pr_reg[14] = regs->d0; \ | ||
82 | pr_reg[15] = rdusp(); \ | ||
83 | pr_reg[16] = 0 /* regs->orig_d0 */; \ | ||
84 | pr_reg[17] = regs->sr; \ | ||
85 | pr_reg[18] = regs->pc; \ | ||
86 | /* pr_reg[19] = (regs->format << 12) | regs->vector; */ \ | ||
87 | { \ | ||
88 | struct switch_stack *sw = ((struct switch_stack *)regs) - 1; \ | ||
89 | pr_reg[5] = sw->d6; \ | ||
90 | pr_reg[6] = sw->d7; \ | ||
91 | pr_reg[10] = sw->a3; \ | ||
92 | pr_reg[11] = sw->a4; \ | ||
93 | pr_reg[12] = sw->a5; \ | ||
94 | pr_reg[13] = sw->a6; \ | ||
95 | } | ||
96 | |||
97 | /* This yields a mask that user programs can use to figure out what | ||
98 | instruction set this cpu supports. */ | ||
99 | |||
100 | #define ELF_HWCAP (0) | ||
101 | |||
102 | /* This yields a string that ld.so will use to load implementation | ||
103 | specific libraries for optimization. This is more specific in | ||
104 | intent than poking at uname or /proc/cpuinfo. */ | ||
105 | |||
106 | #define ELF_PLATFORM (NULL) | ||
107 | |||
108 | #define SET_PERSONALITY(ex) set_personality(PER_LINUX) | ||
109 | |||
110 | #endif | ||
diff --git a/arch/m68k/include/asm/fb.h b/arch/m68k/include/asm/fb.h index 97bcaefd2064..be4e4c6797e8 100644 --- a/arch/m68k/include/asm/fb.h +++ b/arch/m68k/include/asm/fb.h | |||
@@ -1,5 +1,38 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _ASM_FB_H_ |
2 | #include "fb_no.h" | 2 | #define _ASM_FB_H_ |
3 | |||
4 | #include <linux/fb.h> | ||
5 | #include <linux/fs.h> | ||
6 | #include <asm/page.h> | ||
7 | #include <asm/setup.h> | ||
8 | |||
9 | #ifdef CONFIG_MMU | ||
10 | #ifdef CONFIG_SUN3 | ||
11 | static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma, | ||
12 | unsigned long off) | ||
13 | { | ||
14 | pgprot_val(vma->vm_page_prot) |= SUN3_PAGE_NOCACHE; | ||
15 | } | ||
3 | #else | 16 | #else |
4 | #include "fb_mm.h" | 17 | static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma, |
5 | #endif | 18 | unsigned long off) |
19 | { | ||
20 | if (CPU_IS_020_OR_030) | ||
21 | pgprot_val(vma->vm_page_prot) |= _PAGE_NOCACHE030; | ||
22 | if (CPU_IS_040_OR_060) { | ||
23 | pgprot_val(vma->vm_page_prot) &= _CACHEMASK040; | ||
24 | /* Use no-cache mode, serialized */ | ||
25 | pgprot_val(vma->vm_page_prot) |= _PAGE_NOCACHE_S; | ||
26 | } | ||
27 | } | ||
28 | #endif /* CONFIG_SUN3 */ | ||
29 | #else | ||
30 | #define fb_pgprotect(...) do {} while (0) | ||
31 | #endif /* CONFIG_MMU */ | ||
32 | |||
33 | static inline int fb_is_primary_device(struct fb_info *info) | ||
34 | { | ||
35 | return 0; | ||
36 | } | ||
37 | |||
38 | #endif /* _ASM_FB_H_ */ | ||
diff --git a/arch/m68k/include/asm/fb_mm.h b/arch/m68k/include/asm/fb_mm.h deleted file mode 100644 index 380b97ae8157..000000000000 --- a/arch/m68k/include/asm/fb_mm.h +++ /dev/null | |||
@@ -1,34 +0,0 @@ | |||
1 | #ifndef _ASM_FB_H_ | ||
2 | #define _ASM_FB_H_ | ||
3 | |||
4 | #include <linux/fb.h> | ||
5 | #include <linux/fs.h> | ||
6 | #include <asm/page.h> | ||
7 | #include <asm/setup.h> | ||
8 | |||
9 | #ifdef CONFIG_SUN3 | ||
10 | static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma, | ||
11 | unsigned long off) | ||
12 | { | ||
13 | pgprot_val(vma->vm_page_prot) |= SUN3_PAGE_NOCACHE; | ||
14 | } | ||
15 | #else | ||
16 | static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma, | ||
17 | unsigned long off) | ||
18 | { | ||
19 | if (CPU_IS_020_OR_030) | ||
20 | pgprot_val(vma->vm_page_prot) |= _PAGE_NOCACHE030; | ||
21 | if (CPU_IS_040_OR_060) { | ||
22 | pgprot_val(vma->vm_page_prot) &= _CACHEMASK040; | ||
23 | /* Use no-cache mode, serialized */ | ||
24 | pgprot_val(vma->vm_page_prot) |= _PAGE_NOCACHE_S; | ||
25 | } | ||
26 | } | ||
27 | #endif /* CONFIG_SUN3 */ | ||
28 | |||
29 | static inline int fb_is_primary_device(struct fb_info *info) | ||
30 | { | ||
31 | return 0; | ||
32 | } | ||
33 | |||
34 | #endif /* _ASM_FB_H_ */ | ||
diff --git a/arch/m68k/include/asm/fb_no.h b/arch/m68k/include/asm/fb_no.h deleted file mode 100644 index c7df38030992..000000000000 --- a/arch/m68k/include/asm/fb_no.h +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | #ifndef _ASM_FB_H_ | ||
2 | #define _ASM_FB_H_ | ||
3 | #include <linux/fb.h> | ||
4 | |||
5 | #define fb_pgprotect(...) do {} while (0) | ||
6 | |||
7 | static inline int fb_is_primary_device(struct fb_info *info) | ||
8 | { | ||
9 | return 0; | ||
10 | } | ||
11 | |||
12 | #endif /* _ASM_FB_H_ */ | ||
diff --git a/arch/m68k/include/asm/fpu.h b/arch/m68k/include/asm/fpu.h index e19bc5ed9c37..ffb6b8cfc6d5 100644 --- a/arch/m68k/include/asm/fpu.h +++ b/arch/m68k/include/asm/fpu.h | |||
@@ -1,5 +1,21 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef __M68K_FPU_H |
2 | #include "fpu_no.h" | 2 | #define __M68K_FPU_H |
3 | |||
4 | |||
5 | /* | ||
6 | * MAX floating point unit state size (FSAVE/FRESTORE) | ||
7 | */ | ||
8 | |||
9 | #if defined(CONFIG_M68020) || defined(CONFIG_M68030) | ||
10 | #define FPSTATESIZE (216) | ||
11 | #elif defined(CONFIG_M68040) | ||
12 | #define FPSTATESIZE (96) | ||
13 | #elif defined(CONFIG_M68KFPU_EMU) | ||
14 | #define FPSTATESIZE (28) | ||
15 | #elif defined(CONFIG_M68060) | ||
16 | #define FPSTATESIZE (12) | ||
3 | #else | 17 | #else |
4 | #include "fpu_mm.h" | 18 | #define FPSTATESIZE (0) |
5 | #endif | 19 | #endif |
20 | |||
21 | #endif /* __M68K_FPU_H */ | ||
diff --git a/arch/m68k/include/asm/fpu_mm.h b/arch/m68k/include/asm/fpu_mm.h deleted file mode 100644 index ffb6b8cfc6d5..000000000000 --- a/arch/m68k/include/asm/fpu_mm.h +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | #ifndef __M68K_FPU_H | ||
2 | #define __M68K_FPU_H | ||
3 | |||
4 | |||
5 | /* | ||
6 | * MAX floating point unit state size (FSAVE/FRESTORE) | ||
7 | */ | ||
8 | |||
9 | #if defined(CONFIG_M68020) || defined(CONFIG_M68030) | ||
10 | #define FPSTATESIZE (216) | ||
11 | #elif defined(CONFIG_M68040) | ||
12 | #define FPSTATESIZE (96) | ||
13 | #elif defined(CONFIG_M68KFPU_EMU) | ||
14 | #define FPSTATESIZE (28) | ||
15 | #elif defined(CONFIG_M68060) | ||
16 | #define FPSTATESIZE (12) | ||
17 | #else | ||
18 | #define FPSTATESIZE (0) | ||
19 | #endif | ||
20 | |||
21 | #endif /* __M68K_FPU_H */ | ||
diff --git a/arch/m68k/include/asm/fpu_no.h b/arch/m68k/include/asm/fpu_no.h deleted file mode 100644 index b16b2e4fca2a..000000000000 --- a/arch/m68k/include/asm/fpu_no.h +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | #ifndef __M68KNOMMU_FPU_H | ||
2 | #define __M68KNOMMU_FPU_H | ||
3 | |||
4 | |||
5 | /* | ||
6 | * MAX floating point unit state size (FSAVE/FRESTORE) | ||
7 | */ | ||
8 | #if defined(CONFIG_M68020) || defined(CONFIG_M68030) | ||
9 | #define FPSTATESIZE (216/sizeof(unsigned char)) | ||
10 | #elif defined(CONFIG_M68040) | ||
11 | #define FPSTATESIZE (96/sizeof(unsigned char)) | ||
12 | #elif defined(CONFIG_M68KFPU_EMU) | ||
13 | #define FPSTATESIZE (28/sizeof(unsigned char)) | ||
14 | #elif defined(CONFIG_M68060) | ||
15 | #define FPSTATESIZE (12/sizeof(unsigned char)) | ||
16 | #else | ||
17 | /* Assume no FP unit present then... */ | ||
18 | #define FPSTATESIZE (2) /* dummy size */ | ||
19 | #endif | ||
20 | |||
21 | #endif /* __M68K_FPU_H */ | ||
diff --git a/arch/m68k/include/asm/hw_irq.h b/arch/m68k/include/asm/hw_irq.h index e19526015890..eacef0951fbf 100644 --- a/arch/m68k/include/asm/hw_irq.h +++ b/arch/m68k/include/asm/hw_irq.h | |||
@@ -1,5 +1,6 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef __ASM_M68K_HW_IRQ_H |
2 | #include "hw_irq_no.h" | 2 | #define __ASM_M68K_HW_IRQ_H |
3 | #else | 3 | |
4 | #include "hw_irq_mm.h" | 4 | /* Dummy include. */ |
5 | |||
5 | #endif | 6 | #endif |
diff --git a/arch/m68k/include/asm/hw_irq_mm.h b/arch/m68k/include/asm/hw_irq_mm.h deleted file mode 100644 index eacef0951fbf..000000000000 --- a/arch/m68k/include/asm/hw_irq_mm.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef __ASM_M68K_HW_IRQ_H | ||
2 | #define __ASM_M68K_HW_IRQ_H | ||
3 | |||
4 | /* Dummy include. */ | ||
5 | |||
6 | #endif | ||
diff --git a/arch/m68k/include/asm/hw_irq_no.h b/arch/m68k/include/asm/hw_irq_no.h deleted file mode 100644 index f3ec9e5ae049..000000000000 --- a/arch/m68k/include/asm/hw_irq_no.h +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | #ifndef __M68KNOMMU_HW_IRQ_H__ | ||
2 | #define __M68KNOMMU_HW_IRQ_H__ | ||
3 | |||
4 | #endif /* __M68KNOMMU_HW_IRQ_H__ */ | ||
diff --git a/arch/m68k/include/asm/kmap_types.h b/arch/m68k/include/asm/kmap_types.h index 045d9fd122a2..c843c63d3801 100644 --- a/arch/m68k/include/asm/kmap_types.h +++ b/arch/m68k/include/asm/kmap_types.h | |||
@@ -1,5 +1,21 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef __ASM_M68K_KMAP_TYPES_H |
2 | #include "kmap_types_no.h" | 2 | #define __ASM_M68K_KMAP_TYPES_H |
3 | #else | 3 | |
4 | #include "kmap_types_mm.h" | 4 | enum km_type { |
5 | #endif | 5 | KM_BOUNCE_READ, |
6 | KM_SKB_SUNRPC_DATA, | ||
7 | KM_SKB_DATA_SOFTIRQ, | ||
8 | KM_USER0, | ||
9 | KM_USER1, | ||
10 | KM_BIO_SRC_IRQ, | ||
11 | KM_BIO_DST_IRQ, | ||
12 | KM_PTE0, | ||
13 | KM_PTE1, | ||
14 | KM_IRQ0, | ||
15 | KM_IRQ1, | ||
16 | KM_SOFTIRQ0, | ||
17 | KM_SOFTIRQ1, | ||
18 | KM_TYPE_NR | ||
19 | }; | ||
20 | |||
21 | #endif /* __ASM_M68K_KMAP_TYPES_H */ | ||
diff --git a/arch/m68k/include/asm/kmap_types_mm.h b/arch/m68k/include/asm/kmap_types_mm.h deleted file mode 100644 index c843c63d3801..000000000000 --- a/arch/m68k/include/asm/kmap_types_mm.h +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | #ifndef __ASM_M68K_KMAP_TYPES_H | ||
2 | #define __ASM_M68K_KMAP_TYPES_H | ||
3 | |||
4 | enum km_type { | ||
5 | KM_BOUNCE_READ, | ||
6 | KM_SKB_SUNRPC_DATA, | ||
7 | KM_SKB_DATA_SOFTIRQ, | ||
8 | KM_USER0, | ||
9 | KM_USER1, | ||
10 | KM_BIO_SRC_IRQ, | ||
11 | KM_BIO_DST_IRQ, | ||
12 | KM_PTE0, | ||
13 | KM_PTE1, | ||
14 | KM_IRQ0, | ||
15 | KM_IRQ1, | ||
16 | KM_SOFTIRQ0, | ||
17 | KM_SOFTIRQ1, | ||
18 | KM_TYPE_NR | ||
19 | }; | ||
20 | |||
21 | #endif /* __ASM_M68K_KMAP_TYPES_H */ | ||
diff --git a/arch/m68k/include/asm/kmap_types_no.h b/arch/m68k/include/asm/kmap_types_no.h deleted file mode 100644 index bfb6707575d1..000000000000 --- a/arch/m68k/include/asm/kmap_types_no.h +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | #ifndef __ASM_M68K_KMAP_TYPES_H | ||
2 | #define __ASM_M68K_KMAP_TYPES_H | ||
3 | |||
4 | enum km_type { | ||
5 | KM_BOUNCE_READ, | ||
6 | KM_SKB_SUNRPC_DATA, | ||
7 | KM_SKB_DATA_SOFTIRQ, | ||
8 | KM_USER0, | ||
9 | KM_USER1, | ||
10 | KM_BIO_SRC_IRQ, | ||
11 | KM_BIO_DST_IRQ, | ||
12 | KM_PTE0, | ||
13 | KM_PTE1, | ||
14 | KM_IRQ0, | ||
15 | KM_IRQ1, | ||
16 | KM_SOFTIRQ0, | ||
17 | KM_SOFTIRQ1, | ||
18 | KM_TYPE_NR | ||
19 | }; | ||
20 | |||
21 | #endif | ||
diff --git a/arch/m68k/include/asm/m532xsim.h b/arch/m68k/include/asm/m532xsim.h index 1835fd20a82c..ce603451b55e 100644 --- a/arch/m68k/include/asm/m532xsim.h +++ b/arch/m68k/include/asm/m532xsim.h | |||
@@ -16,6 +16,7 @@ | |||
16 | #define MCFINT_VECBASE 64 | 16 | #define MCFINT_VECBASE 64 |
17 | #define MCFINT_UART0 26 /* Interrupt number for UART0 */ | 17 | #define MCFINT_UART0 26 /* Interrupt number for UART0 */ |
18 | #define MCFINT_UART1 27 /* Interrupt number for UART1 */ | 18 | #define MCFINT_UART1 27 /* Interrupt number for UART1 */ |
19 | #define MCFINT_UART2 28 /* Interrupt number for UART2 */ | ||
19 | 20 | ||
20 | #define MCF_WTM_WCR MCF_REG16(0xFC098000) | 21 | #define MCF_WTM_WCR MCF_REG16(0xFC098000) |
21 | 22 | ||
diff --git a/arch/m68k/include/asm/mc146818rtc.h b/arch/m68k/include/asm/mc146818rtc.h index fb90dcf78426..9f70a01f73dc 100644 --- a/arch/m68k/include/asm/mc146818rtc.h +++ b/arch/m68k/include/asm/mc146818rtc.h | |||
@@ -1,5 +1,26 @@ | |||
1 | #ifdef __uClinux__ | 1 | /* |
2 | #include "mc146818rtc_no.h" | 2 | * Machine dependent access functions for RTC registers. |
3 | #else | 3 | */ |
4 | #include "mc146818rtc_mm.h" | 4 | #ifndef _ASM_MC146818RTC_H |
5 | #endif | 5 | #define _ASM_MC146818RTC_H |
6 | |||
7 | |||
8 | #ifdef CONFIG_ATARI | ||
9 | /* RTC in Atari machines */ | ||
10 | |||
11 | #include <asm/atarihw.h> | ||
12 | |||
13 | #define RTC_PORT(x) (TT_RTC_BAS + 2*(x)) | ||
14 | #define RTC_ALWAYS_BCD 0 | ||
15 | |||
16 | #define CMOS_READ(addr) ({ \ | ||
17 | atari_outb_p((addr),RTC_PORT(0)); \ | ||
18 | atari_inb_p(RTC_PORT(1)); \ | ||
19 | }) | ||
20 | #define CMOS_WRITE(val, addr) ({ \ | ||
21 | atari_outb_p((addr),RTC_PORT(0)); \ | ||
22 | atari_outb_p((val),RTC_PORT(1)); \ | ||
23 | }) | ||
24 | #endif /* CONFIG_ATARI */ | ||
25 | |||
26 | #endif /* _ASM_MC146818RTC_H */ | ||
diff --git a/arch/m68k/include/asm/mc146818rtc_mm.h b/arch/m68k/include/asm/mc146818rtc_mm.h deleted file mode 100644 index 9f70a01f73dc..000000000000 --- a/arch/m68k/include/asm/mc146818rtc_mm.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* | ||
2 | * Machine dependent access functions for RTC registers. | ||
3 | */ | ||
4 | #ifndef _ASM_MC146818RTC_H | ||
5 | #define _ASM_MC146818RTC_H | ||
6 | |||
7 | |||
8 | #ifdef CONFIG_ATARI | ||
9 | /* RTC in Atari machines */ | ||
10 | |||
11 | #include <asm/atarihw.h> | ||
12 | |||
13 | #define RTC_PORT(x) (TT_RTC_BAS + 2*(x)) | ||
14 | #define RTC_ALWAYS_BCD 0 | ||
15 | |||
16 | #define CMOS_READ(addr) ({ \ | ||
17 | atari_outb_p((addr),RTC_PORT(0)); \ | ||
18 | atari_inb_p(RTC_PORT(1)); \ | ||
19 | }) | ||
20 | #define CMOS_WRITE(val, addr) ({ \ | ||
21 | atari_outb_p((addr),RTC_PORT(0)); \ | ||
22 | atari_outb_p((val),RTC_PORT(1)); \ | ||
23 | }) | ||
24 | #endif /* CONFIG_ATARI */ | ||
25 | |||
26 | #endif /* _ASM_MC146818RTC_H */ | ||
diff --git a/arch/m68k/include/asm/mc146818rtc_no.h b/arch/m68k/include/asm/mc146818rtc_no.h deleted file mode 100644 index 907a0481a140..000000000000 --- a/arch/m68k/include/asm/mc146818rtc_no.h +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | /* | ||
2 | * Machine dependent access functions for RTC registers. | ||
3 | */ | ||
4 | #ifndef _M68KNOMMU_MC146818RTC_H | ||
5 | #define _M68KNOMMU_MC146818RTC_H | ||
6 | |||
7 | /* empty include file to satisfy the include in genrtc.c/ide-geometry.c */ | ||
8 | |||
9 | #endif /* _M68KNOMMU_MC146818RTC_H */ | ||
diff --git a/arch/m68k/include/asm/mcfpci.h b/arch/m68k/include/asm/mcfpci.h deleted file mode 100644 index f1507dd06ec6..000000000000 --- a/arch/m68k/include/asm/mcfpci.h +++ /dev/null | |||
@@ -1,119 +0,0 @@ | |||
1 | /****************************************************************************/ | ||
2 | |||
3 | /* | ||
4 | * mcfpci.h -- PCI bridge on ColdFire eval boards. | ||
5 | * | ||
6 | * (C) Copyright 2000, Greg Ungerer (gerg@snapgear.com) | ||
7 | * (C) Copyright 2000, Lineo Inc. (www.lineo.com) | ||
8 | */ | ||
9 | |||
10 | /****************************************************************************/ | ||
11 | #ifndef mcfpci_h | ||
12 | #define mcfpci_h | ||
13 | /****************************************************************************/ | ||
14 | |||
15 | |||
16 | #ifdef CONFIG_PCI | ||
17 | |||
18 | /* | ||
19 | * Address regions in the PCI address space are not mapped into the | ||
20 | * normal memory space of the ColdFire. They must be accessed via | ||
21 | * handler routines. This is easy for I/O space (inb/outb/etc) but | ||
22 | * needs some code changes to support ordinary memory. Interrupts | ||
23 | * also need to be vectored through the PCI handler first, then it | ||
24 | * will call the actual driver sub-handlers. | ||
25 | */ | ||
26 | |||
27 | /* | ||
28 | * Un-define all the standard I/O access routines. | ||
29 | */ | ||
30 | #undef inb | ||
31 | #undef inw | ||
32 | #undef inl | ||
33 | #undef inb_p | ||
34 | #undef inw_p | ||
35 | #undef insb | ||
36 | #undef insw | ||
37 | #undef insl | ||
38 | #undef outb | ||
39 | #undef outw | ||
40 | #undef outl | ||
41 | #undef outb_p | ||
42 | #undef outw_p | ||
43 | #undef outsb | ||
44 | #undef outsw | ||
45 | #undef outsl | ||
46 | |||
47 | #undef request_irq | ||
48 | #undef free_irq | ||
49 | |||
50 | #undef bus_to_virt | ||
51 | #undef virt_to_bus | ||
52 | |||
53 | |||
54 | /* | ||
55 | * Re-direct all I/O memory accesses functions to PCI specific ones. | ||
56 | */ | ||
57 | #define inb pci_inb | ||
58 | #define inw pci_inw | ||
59 | #define inl pci_inl | ||
60 | #define inb_p pci_inb | ||
61 | #define inw_p pci_inw | ||
62 | #define insb pci_insb | ||
63 | #define insw pci_insw | ||
64 | #define insl pci_insl | ||
65 | |||
66 | #define outb pci_outb | ||
67 | #define outw pci_outw | ||
68 | #define outl pci_outl | ||
69 | #define outb_p pci_outb | ||
70 | #define outw_p pci_outw | ||
71 | #define outsb pci_outsb | ||
72 | #define outsw pci_outsw | ||
73 | #define outsl pci_outsl | ||
74 | |||
75 | #define request_irq pci_request_irq | ||
76 | #define free_irq pci_free_irq | ||
77 | |||
78 | #define virt_to_bus pci_virt_to_bus | ||
79 | #define bus_to_virt pci_bus_to_virt | ||
80 | |||
81 | #define CONFIG_COMEMPCI 1 | ||
82 | |||
83 | |||
84 | /* | ||
85 | * Prototypes of the real PCI functions (defined in bios32.c). | ||
86 | */ | ||
87 | unsigned char pci_inb(unsigned int addr); | ||
88 | unsigned short pci_inw(unsigned int addr); | ||
89 | unsigned int pci_inl(unsigned int addr); | ||
90 | void pci_insb(void *addr, void *buf, int len); | ||
91 | void pci_insw(void *addr, void *buf, int len); | ||
92 | void pci_insl(void *addr, void *buf, int len); | ||
93 | |||
94 | void pci_outb(unsigned char val, unsigned int addr); | ||
95 | void pci_outw(unsigned short val, unsigned int addr); | ||
96 | void pci_outl(unsigned int val, unsigned int addr); | ||
97 | void pci_outsb(void *addr, void *buf, int len); | ||
98 | void pci_outsw(void *addr, void *buf, int len); | ||
99 | void pci_outsl(void *addr, void *buf, int len); | ||
100 | |||
101 | int pci_request_irq(unsigned int irq, | ||
102 | void (*handler)(int, void *, struct pt_regs *), | ||
103 | unsigned long flags, | ||
104 | const char *device, | ||
105 | void *dev_id); | ||
106 | void pci_free_irq(unsigned int irq, void *dev_id); | ||
107 | |||
108 | void *pci_bmalloc(int size); | ||
109 | void pci_bmfree(void *bmp, int len); | ||
110 | void pci_copytoshmem(unsigned long bmp, void *src, int size); | ||
111 | void pci_copyfromshmem(void *dst, unsigned long bmp, int size); | ||
112 | unsigned long pci_virt_to_bus(volatile void *address); | ||
113 | void *pci_bus_to_virt(unsigned long address); | ||
114 | void pci_bmcpyto(void *dst, void *src, int len); | ||
115 | void pci_bmcpyfrom(void *dst, void *src, int len); | ||
116 | |||
117 | #endif /* CONFIG_PCI */ | ||
118 | /****************************************************************************/ | ||
119 | #endif /* mcfpci_h */ | ||
diff --git a/arch/m68k/include/asm/mmu.h b/arch/m68k/include/asm/mmu.h index a81d3946675f..8a11a63ee15a 100644 --- a/arch/m68k/include/asm/mmu.h +++ b/arch/m68k/include/asm/mmu.h | |||
@@ -1,5 +1,13 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef __MMU_H |
2 | #include "mmu_no.h" | 2 | #define __MMU_H |
3 | |||
4 | #ifdef CONFIG_MMU | ||
5 | /* Default "unsigned long" context */ | ||
6 | typedef unsigned long mm_context_t; | ||
3 | #else | 7 | #else |
4 | #include "mmu_mm.h" | 8 | typedef struct { |
9 | unsigned long end_brk; | ||
10 | } mm_context_t; | ||
11 | #endif | ||
12 | |||
5 | #endif | 13 | #endif |
diff --git a/arch/m68k/include/asm/mmu_context.h b/arch/m68k/include/asm/mmu_context.h index b440928fc6c7..7d4341e55a99 100644 --- a/arch/m68k/include/asm/mmu_context.h +++ b/arch/m68k/include/asm/mmu_context.h | |||
@@ -1,5 +1,175 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef __M68K_MMU_CONTEXT_H |
2 | #include "mmu_context_no.h" | 2 | #define __M68K_MMU_CONTEXT_H |
3 | |||
4 | #include <asm-generic/mm_hooks.h> | ||
5 | |||
6 | static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk) | ||
7 | { | ||
8 | } | ||
9 | |||
10 | #ifdef CONFIG_MMU | ||
11 | #ifndef CONFIG_SUN3 | ||
12 | |||
13 | #include <asm/setup.h> | ||
14 | #include <asm/page.h> | ||
15 | #include <asm/pgalloc.h> | ||
16 | |||
17 | static inline int init_new_context(struct task_struct *tsk, | ||
18 | struct mm_struct *mm) | ||
19 | { | ||
20 | mm->context = virt_to_phys(mm->pgd); | ||
21 | return 0; | ||
22 | } | ||
23 | |||
24 | #define destroy_context(mm) do { } while(0) | ||
25 | |||
26 | static inline void switch_mm_0230(struct mm_struct *mm) | ||
27 | { | ||
28 | unsigned long crp[2] = { | ||
29 | 0x80000000 | _PAGE_TABLE, mm->context | ||
30 | }; | ||
31 | unsigned long tmp; | ||
32 | |||
33 | asm volatile (".chip 68030"); | ||
34 | |||
35 | /* flush MC68030/MC68020 caches (they are virtually addressed) */ | ||
36 | asm volatile ( | ||
37 | "movec %%cacr,%0;" | ||
38 | "orw %1,%0; " | ||
39 | "movec %0,%%cacr" | ||
40 | : "=d" (tmp) : "di" (FLUSH_I_AND_D)); | ||
41 | |||
42 | /* Switch the root pointer. For a 030-only kernel, | ||
43 | * avoid flushing the whole ATC, we only need to | ||
44 | * flush the user entries. The 68851 does this by | ||
45 | * itself. Avoid a runtime check here. | ||
46 | */ | ||
47 | asm volatile ( | ||
48 | #ifdef CPU_M68030_ONLY | ||
49 | "pmovefd %0,%%crp; " | ||
50 | "pflush #0,#4" | ||
3 | #else | 51 | #else |
4 | #include "mmu_context_mm.h" | 52 | "pmove %0,%%crp" |
5 | #endif | 53 | #endif |
54 | : : "m" (crp[0])); | ||
55 | |||
56 | asm volatile (".chip 68k"); | ||
57 | } | ||
58 | |||
59 | static inline void switch_mm_0460(struct mm_struct *mm) | ||
60 | { | ||
61 | asm volatile (".chip 68040"); | ||
62 | |||
63 | /* flush address translation cache (user entries) */ | ||
64 | asm volatile ("pflushan"); | ||
65 | |||
66 | /* switch the root pointer */ | ||
67 | asm volatile ("movec %0,%%urp" : : "r" (mm->context)); | ||
68 | |||
69 | if (CPU_IS_060) { | ||
70 | unsigned long tmp; | ||
71 | |||
72 | /* clear user entries in the branch cache */ | ||
73 | asm volatile ( | ||
74 | "movec %%cacr,%0; " | ||
75 | "orl %1,%0; " | ||
76 | "movec %0,%%cacr" | ||
77 | : "=d" (tmp): "di" (0x00200000)); | ||
78 | } | ||
79 | |||
80 | asm volatile (".chip 68k"); | ||
81 | } | ||
82 | |||
83 | static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, struct task_struct *tsk) | ||
84 | { | ||
85 | if (prev != next) { | ||
86 | if (CPU_IS_020_OR_030) | ||
87 | switch_mm_0230(next); | ||
88 | else | ||
89 | switch_mm_0460(next); | ||
90 | } | ||
91 | } | ||
92 | |||
93 | #define deactivate_mm(tsk,mm) do { } while (0) | ||
94 | |||
95 | static inline void activate_mm(struct mm_struct *prev_mm, | ||
96 | struct mm_struct *next_mm) | ||
97 | { | ||
98 | next_mm->context = virt_to_phys(next_mm->pgd); | ||
99 | |||
100 | if (CPU_IS_020_OR_030) | ||
101 | switch_mm_0230(next_mm); | ||
102 | else | ||
103 | switch_mm_0460(next_mm); | ||
104 | } | ||
105 | |||
106 | #else /* CONFIG_SUN3 */ | ||
107 | #include <asm/sun3mmu.h> | ||
108 | #include <linux/sched.h> | ||
109 | |||
110 | extern unsigned long get_free_context(struct mm_struct *mm); | ||
111 | extern void clear_context(unsigned long context); | ||
112 | |||
113 | /* set the context for a new task to unmapped */ | ||
114 | static inline int init_new_context(struct task_struct *tsk, struct mm_struct *mm) | ||
115 | { | ||
116 | mm->context = SUN3_INVALID_CONTEXT; | ||
117 | return 0; | ||
118 | } | ||
119 | |||
120 | /* find the context given to this process, and if it hasn't already | ||
121 | got one, go get one for it. */ | ||
122 | static inline void get_mmu_context(struct mm_struct *mm) | ||
123 | { | ||
124 | if(mm->context == SUN3_INVALID_CONTEXT) | ||
125 | mm->context = get_free_context(mm); | ||
126 | } | ||
127 | |||
128 | /* flush context if allocated... */ | ||
129 | static inline void destroy_context(struct mm_struct *mm) | ||
130 | { | ||
131 | if(mm->context != SUN3_INVALID_CONTEXT) | ||
132 | clear_context(mm->context); | ||
133 | } | ||
134 | |||
135 | static inline void activate_context(struct mm_struct *mm) | ||
136 | { | ||
137 | get_mmu_context(mm); | ||
138 | sun3_put_context(mm->context); | ||
139 | } | ||
140 | |||
141 | static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, struct task_struct *tsk) | ||
142 | { | ||
143 | activate_context(tsk->mm); | ||
144 | } | ||
145 | |||
146 | #define deactivate_mm(tsk,mm) do { } while (0) | ||
147 | |||
148 | static inline void activate_mm(struct mm_struct *prev_mm, | ||
149 | struct mm_struct *next_mm) | ||
150 | { | ||
151 | activate_context(next_mm); | ||
152 | } | ||
153 | |||
154 | #endif | ||
155 | #else /* !CONFIG_MMU */ | ||
156 | |||
157 | static inline int init_new_context(struct task_struct *tsk, struct mm_struct *mm) | ||
158 | { | ||
159 | return 0; | ||
160 | } | ||
161 | |||
162 | |||
163 | static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, struct task_struct *tsk) | ||
164 | { | ||
165 | } | ||
166 | |||
167 | #define destroy_context(mm) do { } while (0) | ||
168 | #define deactivate_mm(tsk,mm) do { } while (0) | ||
169 | |||
170 | static inline void activate_mm(struct mm_struct *prev_mm, struct mm_struct *next_mm) | ||
171 | { | ||
172 | } | ||
173 | |||
174 | #endif /* CONFIG_MMU */ | ||
175 | #endif /* __M68K_MMU_CONTEXT_H */ | ||
diff --git a/arch/m68k/include/asm/mmu_context_mm.h b/arch/m68k/include/asm/mmu_context_mm.h deleted file mode 100644 index 894dacbcee14..000000000000 --- a/arch/m68k/include/asm/mmu_context_mm.h +++ /dev/null | |||
@@ -1,154 +0,0 @@ | |||
1 | #ifndef __M68K_MMU_CONTEXT_H | ||
2 | #define __M68K_MMU_CONTEXT_H | ||
3 | |||
4 | #include <asm-generic/mm_hooks.h> | ||
5 | |||
6 | static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk) | ||
7 | { | ||
8 | } | ||
9 | |||
10 | #ifndef CONFIG_SUN3 | ||
11 | |||
12 | #include <asm/setup.h> | ||
13 | #include <asm/page.h> | ||
14 | #include <asm/pgalloc.h> | ||
15 | |||
16 | static inline int init_new_context(struct task_struct *tsk, | ||
17 | struct mm_struct *mm) | ||
18 | { | ||
19 | mm->context = virt_to_phys(mm->pgd); | ||
20 | return 0; | ||
21 | } | ||
22 | |||
23 | #define destroy_context(mm) do { } while(0) | ||
24 | |||
25 | static inline void switch_mm_0230(struct mm_struct *mm) | ||
26 | { | ||
27 | unsigned long crp[2] = { | ||
28 | 0x80000000 | _PAGE_TABLE, mm->context | ||
29 | }; | ||
30 | unsigned long tmp; | ||
31 | |||
32 | asm volatile (".chip 68030"); | ||
33 | |||
34 | /* flush MC68030/MC68020 caches (they are virtually addressed) */ | ||
35 | asm volatile ( | ||
36 | "movec %%cacr,%0;" | ||
37 | "orw %1,%0; " | ||
38 | "movec %0,%%cacr" | ||
39 | : "=d" (tmp) : "di" (FLUSH_I_AND_D)); | ||
40 | |||
41 | /* Switch the root pointer. For a 030-only kernel, | ||
42 | * avoid flushing the whole ATC, we only need to | ||
43 | * flush the user entries. The 68851 does this by | ||
44 | * itself. Avoid a runtime check here. | ||
45 | */ | ||
46 | asm volatile ( | ||
47 | #ifdef CPU_M68030_ONLY | ||
48 | "pmovefd %0,%%crp; " | ||
49 | "pflush #0,#4" | ||
50 | #else | ||
51 | "pmove %0,%%crp" | ||
52 | #endif | ||
53 | : : "m" (crp[0])); | ||
54 | |||
55 | asm volatile (".chip 68k"); | ||
56 | } | ||
57 | |||
58 | static inline void switch_mm_0460(struct mm_struct *mm) | ||
59 | { | ||
60 | asm volatile (".chip 68040"); | ||
61 | |||
62 | /* flush address translation cache (user entries) */ | ||
63 | asm volatile ("pflushan"); | ||
64 | |||
65 | /* switch the root pointer */ | ||
66 | asm volatile ("movec %0,%%urp" : : "r" (mm->context)); | ||
67 | |||
68 | if (CPU_IS_060) { | ||
69 | unsigned long tmp; | ||
70 | |||
71 | /* clear user entries in the branch cache */ | ||
72 | asm volatile ( | ||
73 | "movec %%cacr,%0; " | ||
74 | "orl %1,%0; " | ||
75 | "movec %0,%%cacr" | ||
76 | : "=d" (tmp): "di" (0x00200000)); | ||
77 | } | ||
78 | |||
79 | asm volatile (".chip 68k"); | ||
80 | } | ||
81 | |||
82 | static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, struct task_struct *tsk) | ||
83 | { | ||
84 | if (prev != next) { | ||
85 | if (CPU_IS_020_OR_030) | ||
86 | switch_mm_0230(next); | ||
87 | else | ||
88 | switch_mm_0460(next); | ||
89 | } | ||
90 | } | ||
91 | |||
92 | #define deactivate_mm(tsk,mm) do { } while (0) | ||
93 | |||
94 | static inline void activate_mm(struct mm_struct *prev_mm, | ||
95 | struct mm_struct *next_mm) | ||
96 | { | ||
97 | next_mm->context = virt_to_phys(next_mm->pgd); | ||
98 | |||
99 | if (CPU_IS_020_OR_030) | ||
100 | switch_mm_0230(next_mm); | ||
101 | else | ||
102 | switch_mm_0460(next_mm); | ||
103 | } | ||
104 | |||
105 | #else /* CONFIG_SUN3 */ | ||
106 | #include <asm/sun3mmu.h> | ||
107 | #include <linux/sched.h> | ||
108 | |||
109 | extern unsigned long get_free_context(struct mm_struct *mm); | ||
110 | extern void clear_context(unsigned long context); | ||
111 | |||
112 | /* set the context for a new task to unmapped */ | ||
113 | static inline int init_new_context(struct task_struct *tsk, struct mm_struct *mm) | ||
114 | { | ||
115 | mm->context = SUN3_INVALID_CONTEXT; | ||
116 | return 0; | ||
117 | } | ||
118 | |||
119 | /* find the context given to this process, and if it hasn't already | ||
120 | got one, go get one for it. */ | ||
121 | static inline void get_mmu_context(struct mm_struct *mm) | ||
122 | { | ||
123 | if(mm->context == SUN3_INVALID_CONTEXT) | ||
124 | mm->context = get_free_context(mm); | ||
125 | } | ||
126 | |||
127 | /* flush context if allocated... */ | ||
128 | static inline void destroy_context(struct mm_struct *mm) | ||
129 | { | ||
130 | if(mm->context != SUN3_INVALID_CONTEXT) | ||
131 | clear_context(mm->context); | ||
132 | } | ||
133 | |||
134 | static inline void activate_context(struct mm_struct *mm) | ||
135 | { | ||
136 | get_mmu_context(mm); | ||
137 | sun3_put_context(mm->context); | ||
138 | } | ||
139 | |||
140 | static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, struct task_struct *tsk) | ||
141 | { | ||
142 | activate_context(tsk->mm); | ||
143 | } | ||
144 | |||
145 | #define deactivate_mm(tsk,mm) do { } while (0) | ||
146 | |||
147 | static inline void activate_mm(struct mm_struct *prev_mm, | ||
148 | struct mm_struct *next_mm) | ||
149 | { | ||
150 | activate_context(next_mm); | ||
151 | } | ||
152 | |||
153 | #endif | ||
154 | #endif | ||
diff --git a/arch/m68k/include/asm/mmu_context_no.h b/arch/m68k/include/asm/mmu_context_no.h deleted file mode 100644 index 9ccee4278c97..000000000000 --- a/arch/m68k/include/asm/mmu_context_no.h +++ /dev/null | |||
@@ -1,33 +0,0 @@ | |||
1 | #ifndef __M68KNOMMU_MMU_CONTEXT_H | ||
2 | #define __M68KNOMMU_MMU_CONTEXT_H | ||
3 | |||
4 | #include <asm/setup.h> | ||
5 | #include <asm/page.h> | ||
6 | #include <asm/pgalloc.h> | ||
7 | #include <asm-generic/mm_hooks.h> | ||
8 | |||
9 | static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk) | ||
10 | { | ||
11 | } | ||
12 | |||
13 | static inline int | ||
14 | init_new_context(struct task_struct *tsk, struct mm_struct *mm) | ||
15 | { | ||
16 | // mm->context = virt_to_phys(mm->pgd); | ||
17 | return(0); | ||
18 | } | ||
19 | |||
20 | #define destroy_context(mm) do { } while(0) | ||
21 | |||
22 | static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, struct task_struct *tsk) | ||
23 | { | ||
24 | } | ||
25 | |||
26 | #define deactivate_mm(tsk,mm) do { } while (0) | ||
27 | |||
28 | static inline void activate_mm(struct mm_struct *prev_mm, | ||
29 | struct mm_struct *next_mm) | ||
30 | { | ||
31 | } | ||
32 | |||
33 | #endif | ||
diff --git a/arch/m68k/include/asm/mmu_mm.h b/arch/m68k/include/asm/mmu_mm.h deleted file mode 100644 index ccd36d26615a..000000000000 --- a/arch/m68k/include/asm/mmu_mm.h +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | #ifndef __MMU_H | ||
2 | #define __MMU_H | ||
3 | |||
4 | /* Default "unsigned long" context */ | ||
5 | typedef unsigned long mm_context_t; | ||
6 | |||
7 | #endif | ||
diff --git a/arch/m68k/include/asm/mmu_no.h b/arch/m68k/include/asm/mmu_no.h deleted file mode 100644 index e2da1e6f09fe..000000000000 --- a/arch/m68k/include/asm/mmu_no.h +++ /dev/null | |||
@@ -1,10 +0,0 @@ | |||
1 | #ifndef __M68KNOMMU_MMU_H | ||
2 | #define __M68KNOMMU_MMU_H | ||
3 | |||
4 | /* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */ | ||
5 | |||
6 | typedef struct { | ||
7 | unsigned long end_brk; | ||
8 | } mm_context_t; | ||
9 | |||
10 | #endif /* __M68KNOMMU_MMU_H */ | ||
diff --git a/arch/m68k/include/asm/module.h b/arch/m68k/include/asm/module.h index 79b59d137dd0..5f21e11071bd 100644 --- a/arch/m68k/include/asm/module.h +++ b/arch/m68k/include/asm/module.h | |||
@@ -1,5 +1,48 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _ASM_M68K_MODULE_H |
2 | #include "module_no.h" | 2 | #define _ASM_M68K_MODULE_H |
3 | |||
4 | #ifdef CONFIG_MMU | ||
5 | |||
6 | struct mod_arch_specific { | ||
7 | struct m68k_fixup_info *fixup_start, *fixup_end; | ||
8 | }; | ||
9 | |||
10 | #define MODULE_ARCH_INIT { \ | ||
11 | .fixup_start = __start_fixup, \ | ||
12 | .fixup_end = __stop_fixup, \ | ||
13 | } | ||
14 | |||
15 | |||
16 | enum m68k_fixup_type { | ||
17 | m68k_fixup_memoffset, | ||
18 | m68k_fixup_vnode_shift, | ||
19 | }; | ||
20 | |||
21 | struct m68k_fixup_info { | ||
22 | enum m68k_fixup_type type; | ||
23 | void *addr; | ||
24 | }; | ||
25 | |||
26 | #define m68k_fixup(type, addr) \ | ||
27 | " .section \".m68k_fixup\",\"aw\"\n" \ | ||
28 | " .long " #type "," #addr "\n" \ | ||
29 | " .previous\n" | ||
30 | |||
31 | extern struct m68k_fixup_info __start_fixup[], __stop_fixup[]; | ||
32 | |||
33 | struct module; | ||
34 | extern void module_fixup(struct module *mod, struct m68k_fixup_info *start, | ||
35 | struct m68k_fixup_info *end); | ||
36 | |||
3 | #else | 37 | #else |
4 | #include "module_mm.h" | 38 | |
5 | #endif | 39 | struct mod_arch_specific { |
40 | }; | ||
41 | |||
42 | #endif /* CONFIG_MMU */ | ||
43 | |||
44 | #define Elf_Shdr Elf32_Shdr | ||
45 | #define Elf_Sym Elf32_Sym | ||
46 | #define Elf_Ehdr Elf32_Ehdr | ||
47 | |||
48 | #endif /* _ASM_M68K_MODULE_H */ | ||
diff --git a/arch/m68k/include/asm/module_mm.h b/arch/m68k/include/asm/module_mm.h deleted file mode 100644 index 382d20a6fc18..000000000000 --- a/arch/m68k/include/asm/module_mm.h +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | #ifndef _ASM_M68K_MODULE_H | ||
2 | #define _ASM_M68K_MODULE_H | ||
3 | |||
4 | struct mod_arch_specific { | ||
5 | struct m68k_fixup_info *fixup_start, *fixup_end; | ||
6 | }; | ||
7 | |||
8 | #define MODULE_ARCH_INIT { \ | ||
9 | .fixup_start = __start_fixup, \ | ||
10 | .fixup_end = __stop_fixup, \ | ||
11 | } | ||
12 | |||
13 | #define Elf_Shdr Elf32_Shdr | ||
14 | #define Elf_Sym Elf32_Sym | ||
15 | #define Elf_Ehdr Elf32_Ehdr | ||
16 | |||
17 | |||
18 | enum m68k_fixup_type { | ||
19 | m68k_fixup_memoffset, | ||
20 | m68k_fixup_vnode_shift, | ||
21 | }; | ||
22 | |||
23 | struct m68k_fixup_info { | ||
24 | enum m68k_fixup_type type; | ||
25 | void *addr; | ||
26 | }; | ||
27 | |||
28 | #define m68k_fixup(type, addr) \ | ||
29 | " .section \".m68k_fixup\",\"aw\"\n" \ | ||
30 | " .long " #type "," #addr "\n" \ | ||
31 | " .previous\n" | ||
32 | |||
33 | extern struct m68k_fixup_info __start_fixup[], __stop_fixup[]; | ||
34 | |||
35 | struct module; | ||
36 | extern void module_fixup(struct module *mod, struct m68k_fixup_info *start, | ||
37 | struct m68k_fixup_info *end); | ||
38 | |||
39 | #endif /* _ASM_M68K_MODULE_H */ | ||
diff --git a/arch/m68k/include/asm/module_no.h b/arch/m68k/include/asm/module_no.h deleted file mode 100644 index 2e45ab50b232..000000000000 --- a/arch/m68k/include/asm/module_no.h +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | #ifndef ASM_M68KNOMMU_MODULE_H | ||
2 | #define ASM_M68KNOMMU_MODULE_H | ||
3 | |||
4 | struct mod_arch_specific { | ||
5 | }; | ||
6 | |||
7 | #define Elf_Shdr Elf32_Shdr | ||
8 | #define Elf_Sym Elf32_Sym | ||
9 | #define Elf_Ehdr Elf32_Ehdr | ||
10 | |||
11 | #endif /* ASM_M68KNOMMU_MODULE_H */ | ||
diff --git a/arch/m68k/include/asm/page_offset.h b/arch/m68k/include/asm/page_offset.h index 66455c849fbb..1780152d81da 100644 --- a/arch/m68k/include/asm/page_offset.h +++ b/arch/m68k/include/asm/page_offset.h | |||
@@ -1,5 +1,11 @@ | |||
1 | #ifdef __uClinux__ | 1 | /* This handles the memory map.. */ |
2 | #include "page_offset_no.h" | 2 | |
3 | #ifdef CONFIG_MMU | ||
4 | #ifndef CONFIG_SUN3 | ||
5 | #define PAGE_OFFSET_RAW 0x00000000 | ||
3 | #else | 6 | #else |
4 | #include "page_offset_mm.h" | 7 | #define PAGE_OFFSET_RAW 0x0E000000 |
8 | #endif | ||
9 | #else | ||
10 | #define PAGE_OFFSET_RAW CONFIG_RAMBASE | ||
5 | #endif | 11 | #endif |
diff --git a/arch/m68k/include/asm/page_offset_mm.h b/arch/m68k/include/asm/page_offset_mm.h deleted file mode 100644 index 1cbdb7f30ac2..000000000000 --- a/arch/m68k/include/asm/page_offset_mm.h +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | |||
2 | /* This handles the memory map.. */ | ||
3 | #ifndef CONFIG_SUN3 | ||
4 | #define PAGE_OFFSET_RAW 0x00000000 | ||
5 | #else | ||
6 | #define PAGE_OFFSET_RAW 0x0E000000 | ||
7 | #endif | ||
8 | |||
diff --git a/arch/m68k/include/asm/page_offset_no.h b/arch/m68k/include/asm/page_offset_no.h deleted file mode 100644 index d4e73e0ba646..000000000000 --- a/arch/m68k/include/asm/page_offset_no.h +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | |||
2 | |||
3 | /* This handles the memory map.. */ | ||
4 | #define PAGE_OFFSET_RAW CONFIG_RAMBASE | ||
5 | |||
diff --git a/arch/m68k/include/asm/pci.h b/arch/m68k/include/asm/pci.h index dbea95373080..4ad0aea48ab4 100644 --- a/arch/m68k/include/asm/pci.h +++ b/arch/m68k/include/asm/pci.h | |||
@@ -1,5 +1,12 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _ASM_M68K_PCI_H |
2 | #include "pci_no.h" | 2 | #define _ASM_M68K_PCI_H |
3 | #else | 3 | |
4 | #include "pci_mm.h" | 4 | #include <asm-generic/pci-dma-compat.h> |
5 | #endif | 5 | |
6 | /* The PCI address space does equal the physical memory | ||
7 | * address space. The networking and block device layers use | ||
8 | * this boolean for bounce buffer decisions. | ||
9 | */ | ||
10 | #define PCI_DMA_BUS_IS_PHYS (1) | ||
11 | |||
12 | #endif /* _ASM_M68K_PCI_H */ | ||
diff --git a/arch/m68k/include/asm/pci_mm.h b/arch/m68k/include/asm/pci_mm.h deleted file mode 100644 index 4ad0aea48ab4..000000000000 --- a/arch/m68k/include/asm/pci_mm.h +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | #ifndef _ASM_M68K_PCI_H | ||
2 | #define _ASM_M68K_PCI_H | ||
3 | |||
4 | #include <asm-generic/pci-dma-compat.h> | ||
5 | |||
6 | /* The PCI address space does equal the physical memory | ||
7 | * address space. The networking and block device layers use | ||
8 | * this boolean for bounce buffer decisions. | ||
9 | */ | ||
10 | #define PCI_DMA_BUS_IS_PHYS (1) | ||
11 | |||
12 | #endif /* _ASM_M68K_PCI_H */ | ||
diff --git a/arch/m68k/include/asm/pci_no.h b/arch/m68k/include/asm/pci_no.h deleted file mode 100644 index 9abbc03c73ee..000000000000 --- a/arch/m68k/include/asm/pci_no.h +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | #ifndef M68KNOMMU_PCI_H | ||
2 | #define M68KNOMMU_PCI_H | ||
3 | |||
4 | #include <asm/pci_mm.h> | ||
5 | |||
6 | #ifdef CONFIG_COMEMPCI | ||
7 | /* | ||
8 | * These are pretty much arbitary with the CoMEM implementation. | ||
9 | * We have the whole address space to ourselves. | ||
10 | */ | ||
11 | #define PCIBIOS_MIN_IO 0x100 | ||
12 | #define PCIBIOS_MIN_MEM 0x00010000 | ||
13 | |||
14 | #define pcibios_scan_all_fns(a, b) 0 | ||
15 | |||
16 | /* | ||
17 | * Return whether the given PCI device DMA address mask can | ||
18 | * be supported properly. For example, if your device can | ||
19 | * only drive the low 24-bits during PCI bus mastering, then | ||
20 | * you would pass 0x00ffffff as the mask to this function. | ||
21 | */ | ||
22 | static inline int pci_dma_supported(struct pci_dev *hwdev, u64 mask) | ||
23 | { | ||
24 | return 1; | ||
25 | } | ||
26 | |||
27 | #endif /* CONFIG_COMEMPCI */ | ||
28 | |||
29 | #endif /* M68KNOMMU_PCI_H */ | ||
diff --git a/arch/m68k/include/asm/pgalloc.h b/arch/m68k/include/asm/pgalloc.h index 059cb73e78fc..c294aad8a900 100644 --- a/arch/m68k/include/asm/pgalloc.h +++ b/arch/m68k/include/asm/pgalloc.h | |||
@@ -1,5 +1,19 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef M68K_PGALLOC_H |
2 | #include "pgalloc_no.h" | 2 | #define M68K_PGALLOC_H |
3 | |||
4 | #include <linux/mm.h> | ||
5 | #include <linux/highmem.h> | ||
6 | #include <asm/setup.h> | ||
7 | |||
8 | #ifdef CONFIG_MMU | ||
9 | #include <asm/virtconvert.h> | ||
10 | #ifdef CONFIG_SUN3 | ||
11 | #include <asm/sun3_pgalloc.h> | ||
3 | #else | 12 | #else |
4 | #include "pgalloc_mm.h" | 13 | #include <asm/motorola_pgalloc.h> |
5 | #endif | 14 | #endif |
15 | |||
16 | extern void m68k_setup_node(int node); | ||
17 | #endif | ||
18 | |||
19 | #endif /* M68K_PGALLOC_H */ | ||
diff --git a/arch/m68k/include/asm/pgalloc_mm.h b/arch/m68k/include/asm/pgalloc_mm.h deleted file mode 100644 index 4cb1a57ab763..000000000000 --- a/arch/m68k/include/asm/pgalloc_mm.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | |||
2 | #ifndef M68K_PGALLOC_H | ||
3 | #define M68K_PGALLOC_H | ||
4 | |||
5 | #include <linux/mm.h> | ||
6 | #include <linux/highmem.h> | ||
7 | #include <asm/setup.h> | ||
8 | #include <asm/virtconvert.h> | ||
9 | |||
10 | |||
11 | #ifdef CONFIG_SUN3 | ||
12 | #include <asm/sun3_pgalloc.h> | ||
13 | #else | ||
14 | #include <asm/motorola_pgalloc.h> | ||
15 | #endif | ||
16 | |||
17 | extern void m68k_setup_node(int node); | ||
18 | |||
19 | #endif /* M68K_PGALLOC_H */ | ||
diff --git a/arch/m68k/include/asm/pgalloc_no.h b/arch/m68k/include/asm/pgalloc_no.h deleted file mode 100644 index d6352f671ec0..000000000000 --- a/arch/m68k/include/asm/pgalloc_no.h +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | #ifndef _M68KNOMMU_PGALLOC_H | ||
2 | #define _M68KNOMMU_PGALLOC_H | ||
3 | |||
4 | #include <asm/setup.h> | ||
5 | |||
6 | #define check_pgt_cache() do { } while (0) | ||
7 | |||
8 | #endif /* _M68KNOMMU_PGALLOC_H */ | ||
diff --git a/arch/m68k/include/asm/pgtable_no.h b/arch/m68k/include/asm/pgtable_no.h index 46251016e821..bf86b29fe64a 100644 --- a/arch/m68k/include/asm/pgtable_no.h +++ b/arch/m68k/include/asm/pgtable_no.h | |||
@@ -67,4 +67,6 @@ extern unsigned int kobjsize(const void *objp); | |||
67 | 67 | ||
68 | #include <asm-generic/pgtable.h> | 68 | #include <asm-generic/pgtable.h> |
69 | 69 | ||
70 | #define check_pgt_cache() do { } while (0) | ||
71 | |||
70 | #endif /* _M68KNOMMU_PGTABLE_H */ | 72 | #endif /* _M68KNOMMU_PGTABLE_H */ |
diff --git a/arch/m68k/include/asm/scatterlist.h b/arch/m68k/include/asm/scatterlist.h index b7e528636252..e27ad902b1cf 100644 --- a/arch/m68k/include/asm/scatterlist.h +++ b/arch/m68k/include/asm/scatterlist.h | |||
@@ -1,5 +1,23 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_SCATTERLIST_H |
2 | #include "scatterlist_no.h" | 2 | #define _M68K_SCATTERLIST_H |
3 | #else | 3 | |
4 | #include "scatterlist_mm.h" | 4 | #include <linux/types.h> |
5 | |||
6 | struct scatterlist { | ||
7 | #ifdef CONFIG_DEBUG_SG | ||
8 | unsigned long sg_magic; | ||
5 | #endif | 9 | #endif |
10 | unsigned long page_link; | ||
11 | unsigned int offset; | ||
12 | unsigned int length; | ||
13 | |||
14 | dma_addr_t dma_address; /* A place to hang host-specific addresses at. */ | ||
15 | }; | ||
16 | |||
17 | /* This is bogus and should go away. */ | ||
18 | #define ISA_DMA_THRESHOLD (0x00ffffff) | ||
19 | |||
20 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
21 | #define sg_dma_len(sg) ((sg)->length) | ||
22 | |||
23 | #endif /* !(_M68K_SCATTERLIST_H) */ | ||
diff --git a/arch/m68k/include/asm/scatterlist_mm.h b/arch/m68k/include/asm/scatterlist_mm.h deleted file mode 100644 index d3a7a0edfeca..000000000000 --- a/arch/m68k/include/asm/scatterlist_mm.h +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | #ifndef _M68K_SCATTERLIST_H | ||
2 | #define _M68K_SCATTERLIST_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | |||
6 | struct scatterlist { | ||
7 | #ifdef CONFIG_DEBUG_SG | ||
8 | unsigned long sg_magic; | ||
9 | #endif | ||
10 | unsigned long page_link; | ||
11 | unsigned int offset; | ||
12 | unsigned int length; | ||
13 | |||
14 | __u32 dma_address; /* A place to hang host-specific addresses at. */ | ||
15 | }; | ||
16 | |||
17 | /* This is bogus and should go away. */ | ||
18 | #define ISA_DMA_THRESHOLD (0x00ffffff) | ||
19 | |||
20 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
21 | #define sg_dma_len(sg) ((sg)->length) | ||
22 | |||
23 | #endif /* !(_M68K_SCATTERLIST_H) */ | ||
diff --git a/arch/m68k/include/asm/scatterlist_no.h b/arch/m68k/include/asm/scatterlist_no.h deleted file mode 100644 index afc4788b0d2c..000000000000 --- a/arch/m68k/include/asm/scatterlist_no.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | #ifndef _M68KNOMMU_SCATTERLIST_H | ||
2 | #define _M68KNOMMU_SCATTERLIST_H | ||
3 | |||
4 | #include <linux/mm.h> | ||
5 | #include <asm/types.h> | ||
6 | |||
7 | struct scatterlist { | ||
8 | #ifdef CONFIG_DEBUG_SG | ||
9 | unsigned long sg_magic; | ||
10 | #endif | ||
11 | unsigned long page_link; | ||
12 | unsigned int offset; | ||
13 | dma_addr_t dma_address; | ||
14 | unsigned int length; | ||
15 | }; | ||
16 | |||
17 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
18 | #define sg_dma_len(sg) ((sg)->length) | ||
19 | |||
20 | #define ISA_DMA_THRESHOLD (0xffffffff) | ||
21 | |||
22 | #endif /* !(_M68KNOMMU_SCATTERLIST_H) */ | ||
diff --git a/arch/m68k/include/asm/segment.h b/arch/m68k/include/asm/segment.h index 82583bc004bd..ee959219fdfe 100644 --- a/arch/m68k/include/asm/segment.h +++ b/arch/m68k/include/asm/segment.h | |||
@@ -1,5 +1,63 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_SEGMENT_H |
2 | #include "segment_no.h" | 2 | #define _M68K_SEGMENT_H |
3 | |||
4 | /* define constants */ | ||
5 | /* Address spaces (FC0-FC2) */ | ||
6 | #define USER_DATA (1) | ||
7 | #ifndef __USER_DS | ||
8 | #define __USER_DS (USER_DATA) | ||
9 | #endif | ||
10 | #define USER_PROGRAM (2) | ||
11 | #define SUPER_DATA (5) | ||
12 | #ifndef __KERNEL_DS | ||
13 | #define __KERNEL_DS (SUPER_DATA) | ||
14 | #endif | ||
15 | #define SUPER_PROGRAM (6) | ||
16 | #define CPU_SPACE (7) | ||
17 | |||
18 | #ifndef __ASSEMBLY__ | ||
19 | |||
20 | typedef struct { | ||
21 | unsigned long seg; | ||
22 | } mm_segment_t; | ||
23 | |||
24 | #define MAKE_MM_SEG(s) ((mm_segment_t) { (s) }) | ||
25 | #define USER_DS MAKE_MM_SEG(__USER_DS) | ||
26 | #define KERNEL_DS MAKE_MM_SEG(__KERNEL_DS) | ||
27 | |||
28 | /* | ||
29 | * Get/set the SFC/DFC registers for MOVES instructions | ||
30 | */ | ||
31 | |||
32 | static inline mm_segment_t get_fs(void) | ||
33 | { | ||
34 | #ifdef CONFIG_MMU | ||
35 | mm_segment_t _v; | ||
36 | __asm__ ("movec %/dfc,%0":"=r" (_v.seg):); | ||
37 | |||
38 | return _v; | ||
3 | #else | 39 | #else |
4 | #include "segment_mm.h" | 40 | return USER_DS; |
41 | #endif | ||
42 | } | ||
43 | |||
44 | static inline mm_segment_t get_ds(void) | ||
45 | { | ||
46 | /* return the supervisor data space code */ | ||
47 | return KERNEL_DS; | ||
48 | } | ||
49 | |||
50 | static inline void set_fs(mm_segment_t val) | ||
51 | { | ||
52 | #ifdef CONFIG_MMU | ||
53 | __asm__ __volatile__ ("movec %0,%/sfc\n\t" | ||
54 | "movec %0,%/dfc\n\t" | ||
55 | : /* no outputs */ : "r" (val.seg) : "memory"); | ||
5 | #endif | 56 | #endif |
57 | } | ||
58 | |||
59 | #define segment_eq(a,b) ((a).seg == (b).seg) | ||
60 | |||
61 | #endif /* __ASSEMBLY__ */ | ||
62 | |||
63 | #endif /* _M68K_SEGMENT_H */ | ||
diff --git a/arch/m68k/include/asm/segment_mm.h b/arch/m68k/include/asm/segment_mm.h deleted file mode 100644 index 7b0b2d3127f9..000000000000 --- a/arch/m68k/include/asm/segment_mm.h +++ /dev/null | |||
@@ -1,57 +0,0 @@ | |||
1 | #ifndef _M68K_SEGMENT_H | ||
2 | #define _M68K_SEGMENT_H | ||
3 | |||
4 | /* define constants */ | ||
5 | /* Address spaces (FC0-FC2) */ | ||
6 | #define USER_DATA (1) | ||
7 | #ifndef __USER_DS | ||
8 | #define __USER_DS (USER_DATA) | ||
9 | #endif | ||
10 | #define USER_PROGRAM (2) | ||
11 | #define SUPER_DATA (5) | ||
12 | #ifndef __KERNEL_DS | ||
13 | #define __KERNEL_DS (SUPER_DATA) | ||
14 | #endif | ||
15 | #define SUPER_PROGRAM (6) | ||
16 | #define CPU_SPACE (7) | ||
17 | |||
18 | #ifndef __ASSEMBLY__ | ||
19 | |||
20 | typedef struct { | ||
21 | unsigned long seg; | ||
22 | } mm_segment_t; | ||
23 | |||
24 | #define MAKE_MM_SEG(s) ((mm_segment_t) { (s) }) | ||
25 | #define USER_DS MAKE_MM_SEG(__USER_DS) | ||
26 | #define KERNEL_DS MAKE_MM_SEG(__KERNEL_DS) | ||
27 | |||
28 | /* | ||
29 | * Get/set the SFC/DFC registers for MOVES instructions | ||
30 | */ | ||
31 | |||
32 | static inline mm_segment_t get_fs(void) | ||
33 | { | ||
34 | mm_segment_t _v; | ||
35 | __asm__ ("movec %/dfc,%0":"=r" (_v.seg):); | ||
36 | |||
37 | return _v; | ||
38 | } | ||
39 | |||
40 | static inline mm_segment_t get_ds(void) | ||
41 | { | ||
42 | /* return the supervisor data space code */ | ||
43 | return KERNEL_DS; | ||
44 | } | ||
45 | |||
46 | static inline void set_fs(mm_segment_t val) | ||
47 | { | ||
48 | __asm__ __volatile__ ("movec %0,%/sfc\n\t" | ||
49 | "movec %0,%/dfc\n\t" | ||
50 | : /* no outputs */ : "r" (val.seg) : "memory"); | ||
51 | } | ||
52 | |||
53 | #define segment_eq(a,b) ((a).seg == (b).seg) | ||
54 | |||
55 | #endif /* __ASSEMBLY__ */ | ||
56 | |||
57 | #endif /* _M68K_SEGMENT_H */ | ||
diff --git a/arch/m68k/include/asm/segment_no.h b/arch/m68k/include/asm/segment_no.h deleted file mode 100644 index 42318ebec7ec..000000000000 --- a/arch/m68k/include/asm/segment_no.h +++ /dev/null | |||
@@ -1,51 +0,0 @@ | |||
1 | #ifndef _M68K_SEGMENT_H | ||
2 | #define _M68K_SEGMENT_H | ||
3 | |||
4 | /* define constants */ | ||
5 | /* Address spaces (FC0-FC2) */ | ||
6 | #define USER_DATA (1) | ||
7 | #ifndef __USER_DS | ||
8 | #define __USER_DS (USER_DATA) | ||
9 | #endif | ||
10 | #define USER_PROGRAM (2) | ||
11 | #define SUPER_DATA (5) | ||
12 | #ifndef __KERNEL_DS | ||
13 | #define __KERNEL_DS (SUPER_DATA) | ||
14 | #endif | ||
15 | #define SUPER_PROGRAM (6) | ||
16 | #define CPU_SPACE (7) | ||
17 | |||
18 | #ifndef __ASSEMBLY__ | ||
19 | |||
20 | typedef struct { | ||
21 | unsigned long seg; | ||
22 | } mm_segment_t; | ||
23 | |||
24 | #define MAKE_MM_SEG(s) ((mm_segment_t) { (s) }) | ||
25 | #define USER_DS MAKE_MM_SEG(__USER_DS) | ||
26 | #define KERNEL_DS MAKE_MM_SEG(__KERNEL_DS) | ||
27 | |||
28 | /* | ||
29 | * Get/set the SFC/DFC registers for MOVES instructions | ||
30 | */ | ||
31 | |||
32 | static inline mm_segment_t get_fs(void) | ||
33 | { | ||
34 | return USER_DS; | ||
35 | } | ||
36 | |||
37 | static inline mm_segment_t get_ds(void) | ||
38 | { | ||
39 | /* return the supervisor data space code */ | ||
40 | return KERNEL_DS; | ||
41 | } | ||
42 | |||
43 | static inline void set_fs(mm_segment_t val) | ||
44 | { | ||
45 | } | ||
46 | |||
47 | #define segment_eq(a,b) ((a).seg == (b).seg) | ||
48 | |||
49 | #endif /* __ASSEMBLY__ */ | ||
50 | |||
51 | #endif /* _M68K_SEGMENT_H */ | ||
diff --git a/arch/m68k/include/asm/timex.h b/arch/m68k/include/asm/timex.h index 719762980578..b87f2f278f67 100644 --- a/arch/m68k/include/asm/timex.h +++ b/arch/m68k/include/asm/timex.h | |||
@@ -1,5 +1,18 @@ | |||
1 | #ifdef __uClinux__ | 1 | /* |
2 | #include "timex_no.h" | 2 | * linux/include/asm-m68k/timex.h |
3 | #else | 3 | * |
4 | #include "timex_mm.h" | 4 | * m68k architecture timex specifications |
5 | */ | ||
6 | #ifndef _ASMm68k_TIMEX_H | ||
7 | #define _ASMm68k_TIMEX_H | ||
8 | |||
9 | #define CLOCK_TICK_RATE 1193180 /* Underlying HZ */ | ||
10 | |||
11 | typedef unsigned long cycles_t; | ||
12 | |||
13 | static inline cycles_t get_cycles(void) | ||
14 | { | ||
15 | return 0; | ||
16 | } | ||
17 | |||
5 | #endif | 18 | #endif |
diff --git a/arch/m68k/include/asm/timex_mm.h b/arch/m68k/include/asm/timex_mm.h deleted file mode 100644 index b87f2f278f67..000000000000 --- a/arch/m68k/include/asm/timex_mm.h +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | /* | ||
2 | * linux/include/asm-m68k/timex.h | ||
3 | * | ||
4 | * m68k architecture timex specifications | ||
5 | */ | ||
6 | #ifndef _ASMm68k_TIMEX_H | ||
7 | #define _ASMm68k_TIMEX_H | ||
8 | |||
9 | #define CLOCK_TICK_RATE 1193180 /* Underlying HZ */ | ||
10 | |||
11 | typedef unsigned long cycles_t; | ||
12 | |||
13 | static inline cycles_t get_cycles(void) | ||
14 | { | ||
15 | return 0; | ||
16 | } | ||
17 | |||
18 | #endif | ||
diff --git a/arch/m68k/include/asm/timex_no.h b/arch/m68k/include/asm/timex_no.h deleted file mode 100644 index 109050f3fe91..000000000000 --- a/arch/m68k/include/asm/timex_no.h +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | /* | ||
2 | * linux/include/asm-m68knommu/timex.h | ||
3 | * | ||
4 | * m68knommu architecture timex specifications | ||
5 | */ | ||
6 | #ifndef _ASM_M68KNOMMU_TIMEX_H | ||
7 | #define _ASM_M68KNOMMU_TIMEX_H | ||
8 | |||
9 | #ifdef CONFIG_COLDFIRE | ||
10 | #include <asm/coldfire.h> | ||
11 | #define CLOCK_TICK_RATE MCF_CLK | ||
12 | #else | ||
13 | #define CLOCK_TICK_RATE 1193180 /* Underlying HZ */ | ||
14 | #endif | ||
15 | |||
16 | typedef unsigned long cycles_t; | ||
17 | |||
18 | static inline cycles_t get_cycles(void) | ||
19 | { | ||
20 | return 0; | ||
21 | } | ||
22 | |||
23 | #endif | ||
diff --git a/arch/m68k/include/asm/tlbflush.h b/arch/m68k/include/asm/tlbflush.h index b6f93b30951e..a6b4ed4fc90f 100644 --- a/arch/m68k/include/asm/tlbflush.h +++ b/arch/m68k/include/asm/tlbflush.h | |||
@@ -1,5 +1,267 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_TLBFLUSH_H |
2 | #include "tlbflush_no.h" | 2 | #define _M68K_TLBFLUSH_H |
3 | |||
4 | #ifdef CONFIG_MMU | ||
5 | #ifndef CONFIG_SUN3 | ||
6 | |||
7 | #include <asm/current.h> | ||
8 | |||
9 | static inline void flush_tlb_kernel_page(void *addr) | ||
10 | { | ||
11 | if (CPU_IS_040_OR_060) { | ||
12 | mm_segment_t old_fs = get_fs(); | ||
13 | set_fs(KERNEL_DS); | ||
14 | __asm__ __volatile__(".chip 68040\n\t" | ||
15 | "pflush (%0)\n\t" | ||
16 | ".chip 68k" | ||
17 | : : "a" (addr)); | ||
18 | set_fs(old_fs); | ||
19 | } else if (CPU_IS_020_OR_030) | ||
20 | __asm__ __volatile__("pflush #4,#4,(%0)" : : "a" (addr)); | ||
21 | } | ||
22 | |||
23 | /* | ||
24 | * flush all user-space atc entries. | ||
25 | */ | ||
26 | static inline void __flush_tlb(void) | ||
27 | { | ||
28 | if (CPU_IS_040_OR_060) | ||
29 | __asm__ __volatile__(".chip 68040\n\t" | ||
30 | "pflushan\n\t" | ||
31 | ".chip 68k"); | ||
32 | else if (CPU_IS_020_OR_030) | ||
33 | __asm__ __volatile__("pflush #0,#4"); | ||
34 | } | ||
35 | |||
36 | static inline void __flush_tlb040_one(unsigned long addr) | ||
37 | { | ||
38 | __asm__ __volatile__(".chip 68040\n\t" | ||
39 | "pflush (%0)\n\t" | ||
40 | ".chip 68k" | ||
41 | : : "a" (addr)); | ||
42 | } | ||
43 | |||
44 | static inline void __flush_tlb_one(unsigned long addr) | ||
45 | { | ||
46 | if (CPU_IS_040_OR_060) | ||
47 | __flush_tlb040_one(addr); | ||
48 | else if (CPU_IS_020_OR_030) | ||
49 | __asm__ __volatile__("pflush #0,#4,(%0)" : : "a" (addr)); | ||
50 | } | ||
51 | |||
52 | #define flush_tlb() __flush_tlb() | ||
53 | |||
54 | /* | ||
55 | * flush all atc entries (both kernel and user-space entries). | ||
56 | */ | ||
57 | static inline void flush_tlb_all(void) | ||
58 | { | ||
59 | if (CPU_IS_040_OR_060) | ||
60 | __asm__ __volatile__(".chip 68040\n\t" | ||
61 | "pflusha\n\t" | ||
62 | ".chip 68k"); | ||
63 | else if (CPU_IS_020_OR_030) | ||
64 | __asm__ __volatile__("pflusha"); | ||
65 | } | ||
66 | |||
67 | static inline void flush_tlb_mm(struct mm_struct *mm) | ||
68 | { | ||
69 | if (mm == current->active_mm) | ||
70 | __flush_tlb(); | ||
71 | } | ||
72 | |||
73 | static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) | ||
74 | { | ||
75 | if (vma->vm_mm == current->active_mm) { | ||
76 | mm_segment_t old_fs = get_fs(); | ||
77 | set_fs(USER_DS); | ||
78 | __flush_tlb_one(addr); | ||
79 | set_fs(old_fs); | ||
80 | } | ||
81 | } | ||
82 | |||
83 | static inline void flush_tlb_range(struct vm_area_struct *vma, | ||
84 | unsigned long start, unsigned long end) | ||
85 | { | ||
86 | if (vma->vm_mm == current->active_mm) | ||
87 | __flush_tlb(); | ||
88 | } | ||
89 | |||
90 | static inline void flush_tlb_kernel_range(unsigned long start, unsigned long end) | ||
91 | { | ||
92 | flush_tlb_all(); | ||
93 | } | ||
94 | |||
3 | #else | 95 | #else |
4 | #include "tlbflush_mm.h" | 96 | |
97 | |||
98 | /* Reserved PMEGs. */ | ||
99 | extern char sun3_reserved_pmeg[SUN3_PMEGS_NUM]; | ||
100 | extern unsigned long pmeg_vaddr[SUN3_PMEGS_NUM]; | ||
101 | extern unsigned char pmeg_alloc[SUN3_PMEGS_NUM]; | ||
102 | extern unsigned char pmeg_ctx[SUN3_PMEGS_NUM]; | ||
103 | |||
104 | /* Flush all userspace mappings one by one... (why no flush command, | ||
105 | sun?) */ | ||
106 | static inline void flush_tlb_all(void) | ||
107 | { | ||
108 | unsigned long addr; | ||
109 | unsigned char ctx, oldctx; | ||
110 | |||
111 | oldctx = sun3_get_context(); | ||
112 | for(addr = 0x00000000; addr < TASK_SIZE; addr += SUN3_PMEG_SIZE) { | ||
113 | for(ctx = 0; ctx < 8; ctx++) { | ||
114 | sun3_put_context(ctx); | ||
115 | sun3_put_segmap(addr, SUN3_INVALID_PMEG); | ||
116 | } | ||
117 | } | ||
118 | |||
119 | sun3_put_context(oldctx); | ||
120 | /* erase all of the userspace pmeg maps, we've clobbered them | ||
121 | all anyway */ | ||
122 | for(addr = 0; addr < SUN3_INVALID_PMEG; addr++) { | ||
123 | if(pmeg_alloc[addr] == 1) { | ||
124 | pmeg_alloc[addr] = 0; | ||
125 | pmeg_ctx[addr] = 0; | ||
126 | pmeg_vaddr[addr] = 0; | ||
127 | } | ||
128 | } | ||
129 | |||
130 | } | ||
131 | |||
132 | /* Clear user TLB entries within the context named in mm */ | ||
133 | static inline void flush_tlb_mm (struct mm_struct *mm) | ||
134 | { | ||
135 | unsigned char oldctx; | ||
136 | unsigned char seg; | ||
137 | unsigned long i; | ||
138 | |||
139 | oldctx = sun3_get_context(); | ||
140 | sun3_put_context(mm->context); | ||
141 | |||
142 | for(i = 0; i < TASK_SIZE; i += SUN3_PMEG_SIZE) { | ||
143 | seg = sun3_get_segmap(i); | ||
144 | if(seg == SUN3_INVALID_PMEG) | ||
145 | continue; | ||
146 | |||
147 | sun3_put_segmap(i, SUN3_INVALID_PMEG); | ||
148 | pmeg_alloc[seg] = 0; | ||
149 | pmeg_ctx[seg] = 0; | ||
150 | pmeg_vaddr[seg] = 0; | ||
151 | } | ||
152 | |||
153 | sun3_put_context(oldctx); | ||
154 | |||
155 | } | ||
156 | |||
157 | /* Flush a single TLB page. In this case, we're limited to flushing a | ||
158 | single PMEG */ | ||
159 | static inline void flush_tlb_page (struct vm_area_struct *vma, | ||
160 | unsigned long addr) | ||
161 | { | ||
162 | unsigned char oldctx; | ||
163 | unsigned char i; | ||
164 | |||
165 | oldctx = sun3_get_context(); | ||
166 | sun3_put_context(vma->vm_mm->context); | ||
167 | addr &= ~SUN3_PMEG_MASK; | ||
168 | if((i = sun3_get_segmap(addr)) != SUN3_INVALID_PMEG) | ||
169 | { | ||
170 | pmeg_alloc[i] = 0; | ||
171 | pmeg_ctx[i] = 0; | ||
172 | pmeg_vaddr[i] = 0; | ||
173 | sun3_put_segmap (addr, SUN3_INVALID_PMEG); | ||
174 | } | ||
175 | sun3_put_context(oldctx); | ||
176 | |||
177 | } | ||
178 | /* Flush a range of pages from TLB. */ | ||
179 | |||
180 | static inline void flush_tlb_range (struct vm_area_struct *vma, | ||
181 | unsigned long start, unsigned long end) | ||
182 | { | ||
183 | struct mm_struct *mm = vma->vm_mm; | ||
184 | unsigned char seg, oldctx; | ||
185 | |||
186 | start &= ~SUN3_PMEG_MASK; | ||
187 | |||
188 | oldctx = sun3_get_context(); | ||
189 | sun3_put_context(mm->context); | ||
190 | |||
191 | while(start < end) | ||
192 | { | ||
193 | if((seg = sun3_get_segmap(start)) == SUN3_INVALID_PMEG) | ||
194 | goto next; | ||
195 | if(pmeg_ctx[seg] == mm->context) { | ||
196 | pmeg_alloc[seg] = 0; | ||
197 | pmeg_ctx[seg] = 0; | ||
198 | pmeg_vaddr[seg] = 0; | ||
199 | } | ||
200 | sun3_put_segmap(start, SUN3_INVALID_PMEG); | ||
201 | next: | ||
202 | start += SUN3_PMEG_SIZE; | ||
203 | } | ||
204 | } | ||
205 | |||
206 | static inline void flush_tlb_kernel_range(unsigned long start, unsigned long end) | ||
207 | { | ||
208 | flush_tlb_all(); | ||
209 | } | ||
210 | |||
211 | /* Flush kernel page from TLB. */ | ||
212 | static inline void flush_tlb_kernel_page (unsigned long addr) | ||
213 | { | ||
214 | sun3_put_segmap (addr & ~(SUN3_PMEG_SIZE - 1), SUN3_INVALID_PMEG); | ||
215 | } | ||
216 | |||
5 | #endif | 217 | #endif |
218 | |||
219 | #else /* !CONFIG_MMU */ | ||
220 | |||
221 | /* | ||
222 | * flush all user-space atc entries. | ||
223 | */ | ||
224 | static inline void __flush_tlb(void) | ||
225 | { | ||
226 | BUG(); | ||
227 | } | ||
228 | |||
229 | static inline void __flush_tlb_one(unsigned long addr) | ||
230 | { | ||
231 | BUG(); | ||
232 | } | ||
233 | |||
234 | #define flush_tlb() __flush_tlb() | ||
235 | |||
236 | /* | ||
237 | * flush all atc entries (both kernel and user-space entries). | ||
238 | */ | ||
239 | static inline void flush_tlb_all(void) | ||
240 | { | ||
241 | BUG(); | ||
242 | } | ||
243 | |||
244 | static inline void flush_tlb_mm(struct mm_struct *mm) | ||
245 | { | ||
246 | BUG(); | ||
247 | } | ||
248 | |||
249 | static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) | ||
250 | { | ||
251 | BUG(); | ||
252 | } | ||
253 | |||
254 | static inline void flush_tlb_range(struct mm_struct *mm, | ||
255 | unsigned long start, unsigned long end) | ||
256 | { | ||
257 | BUG(); | ||
258 | } | ||
259 | |||
260 | static inline void flush_tlb_kernel_page(unsigned long addr) | ||
261 | { | ||
262 | BUG(); | ||
263 | } | ||
264 | |||
265 | #endif /* CONFIG_MMU */ | ||
266 | |||
267 | #endif /* _M68K_TLBFLUSH_H */ | ||
diff --git a/arch/m68k/include/asm/tlbflush_mm.h b/arch/m68k/include/asm/tlbflush_mm.h deleted file mode 100644 index acb6bf21a321..000000000000 --- a/arch/m68k/include/asm/tlbflush_mm.h +++ /dev/null | |||
@@ -1,219 +0,0 @@ | |||
1 | #ifndef _M68K_TLBFLUSH_H | ||
2 | #define _M68K_TLBFLUSH_H | ||
3 | |||
4 | |||
5 | #ifndef CONFIG_SUN3 | ||
6 | |||
7 | #include <asm/current.h> | ||
8 | |||
9 | static inline void flush_tlb_kernel_page(void *addr) | ||
10 | { | ||
11 | if (CPU_IS_040_OR_060) { | ||
12 | mm_segment_t old_fs = get_fs(); | ||
13 | set_fs(KERNEL_DS); | ||
14 | __asm__ __volatile__(".chip 68040\n\t" | ||
15 | "pflush (%0)\n\t" | ||
16 | ".chip 68k" | ||
17 | : : "a" (addr)); | ||
18 | set_fs(old_fs); | ||
19 | } else if (CPU_IS_020_OR_030) | ||
20 | __asm__ __volatile__("pflush #4,#4,(%0)" : : "a" (addr)); | ||
21 | } | ||
22 | |||
23 | /* | ||
24 | * flush all user-space atc entries. | ||
25 | */ | ||
26 | static inline void __flush_tlb(void) | ||
27 | { | ||
28 | if (CPU_IS_040_OR_060) | ||
29 | __asm__ __volatile__(".chip 68040\n\t" | ||
30 | "pflushan\n\t" | ||
31 | ".chip 68k"); | ||
32 | else if (CPU_IS_020_OR_030) | ||
33 | __asm__ __volatile__("pflush #0,#4"); | ||
34 | } | ||
35 | |||
36 | static inline void __flush_tlb040_one(unsigned long addr) | ||
37 | { | ||
38 | __asm__ __volatile__(".chip 68040\n\t" | ||
39 | "pflush (%0)\n\t" | ||
40 | ".chip 68k" | ||
41 | : : "a" (addr)); | ||
42 | } | ||
43 | |||
44 | static inline void __flush_tlb_one(unsigned long addr) | ||
45 | { | ||
46 | if (CPU_IS_040_OR_060) | ||
47 | __flush_tlb040_one(addr); | ||
48 | else if (CPU_IS_020_OR_030) | ||
49 | __asm__ __volatile__("pflush #0,#4,(%0)" : : "a" (addr)); | ||
50 | } | ||
51 | |||
52 | #define flush_tlb() __flush_tlb() | ||
53 | |||
54 | /* | ||
55 | * flush all atc entries (both kernel and user-space entries). | ||
56 | */ | ||
57 | static inline void flush_tlb_all(void) | ||
58 | { | ||
59 | if (CPU_IS_040_OR_060) | ||
60 | __asm__ __volatile__(".chip 68040\n\t" | ||
61 | "pflusha\n\t" | ||
62 | ".chip 68k"); | ||
63 | else if (CPU_IS_020_OR_030) | ||
64 | __asm__ __volatile__("pflusha"); | ||
65 | } | ||
66 | |||
67 | static inline void flush_tlb_mm(struct mm_struct *mm) | ||
68 | { | ||
69 | if (mm == current->active_mm) | ||
70 | __flush_tlb(); | ||
71 | } | ||
72 | |||
73 | static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) | ||
74 | { | ||
75 | if (vma->vm_mm == current->active_mm) { | ||
76 | mm_segment_t old_fs = get_fs(); | ||
77 | set_fs(USER_DS); | ||
78 | __flush_tlb_one(addr); | ||
79 | set_fs(old_fs); | ||
80 | } | ||
81 | } | ||
82 | |||
83 | static inline void flush_tlb_range(struct vm_area_struct *vma, | ||
84 | unsigned long start, unsigned long end) | ||
85 | { | ||
86 | if (vma->vm_mm == current->active_mm) | ||
87 | __flush_tlb(); | ||
88 | } | ||
89 | |||
90 | static inline void flush_tlb_kernel_range(unsigned long start, unsigned long end) | ||
91 | { | ||
92 | flush_tlb_all(); | ||
93 | } | ||
94 | |||
95 | #else | ||
96 | |||
97 | |||
98 | /* Reserved PMEGs. */ | ||
99 | extern char sun3_reserved_pmeg[SUN3_PMEGS_NUM]; | ||
100 | extern unsigned long pmeg_vaddr[SUN3_PMEGS_NUM]; | ||
101 | extern unsigned char pmeg_alloc[SUN3_PMEGS_NUM]; | ||
102 | extern unsigned char pmeg_ctx[SUN3_PMEGS_NUM]; | ||
103 | |||
104 | /* Flush all userspace mappings one by one... (why no flush command, | ||
105 | sun?) */ | ||
106 | static inline void flush_tlb_all(void) | ||
107 | { | ||
108 | unsigned long addr; | ||
109 | unsigned char ctx, oldctx; | ||
110 | |||
111 | oldctx = sun3_get_context(); | ||
112 | for(addr = 0x00000000; addr < TASK_SIZE; addr += SUN3_PMEG_SIZE) { | ||
113 | for(ctx = 0; ctx < 8; ctx++) { | ||
114 | sun3_put_context(ctx); | ||
115 | sun3_put_segmap(addr, SUN3_INVALID_PMEG); | ||
116 | } | ||
117 | } | ||
118 | |||
119 | sun3_put_context(oldctx); | ||
120 | /* erase all of the userspace pmeg maps, we've clobbered them | ||
121 | all anyway */ | ||
122 | for(addr = 0; addr < SUN3_INVALID_PMEG; addr++) { | ||
123 | if(pmeg_alloc[addr] == 1) { | ||
124 | pmeg_alloc[addr] = 0; | ||
125 | pmeg_ctx[addr] = 0; | ||
126 | pmeg_vaddr[addr] = 0; | ||
127 | } | ||
128 | } | ||
129 | |||
130 | } | ||
131 | |||
132 | /* Clear user TLB entries within the context named in mm */ | ||
133 | static inline void flush_tlb_mm (struct mm_struct *mm) | ||
134 | { | ||
135 | unsigned char oldctx; | ||
136 | unsigned char seg; | ||
137 | unsigned long i; | ||
138 | |||
139 | oldctx = sun3_get_context(); | ||
140 | sun3_put_context(mm->context); | ||
141 | |||
142 | for(i = 0; i < TASK_SIZE; i += SUN3_PMEG_SIZE) { | ||
143 | seg = sun3_get_segmap(i); | ||
144 | if(seg == SUN3_INVALID_PMEG) | ||
145 | continue; | ||
146 | |||
147 | sun3_put_segmap(i, SUN3_INVALID_PMEG); | ||
148 | pmeg_alloc[seg] = 0; | ||
149 | pmeg_ctx[seg] = 0; | ||
150 | pmeg_vaddr[seg] = 0; | ||
151 | } | ||
152 | |||
153 | sun3_put_context(oldctx); | ||
154 | |||
155 | } | ||
156 | |||
157 | /* Flush a single TLB page. In this case, we're limited to flushing a | ||
158 | single PMEG */ | ||
159 | static inline void flush_tlb_page (struct vm_area_struct *vma, | ||
160 | unsigned long addr) | ||
161 | { | ||
162 | unsigned char oldctx; | ||
163 | unsigned char i; | ||
164 | |||
165 | oldctx = sun3_get_context(); | ||
166 | sun3_put_context(vma->vm_mm->context); | ||
167 | addr &= ~SUN3_PMEG_MASK; | ||
168 | if((i = sun3_get_segmap(addr)) != SUN3_INVALID_PMEG) | ||
169 | { | ||
170 | pmeg_alloc[i] = 0; | ||
171 | pmeg_ctx[i] = 0; | ||
172 | pmeg_vaddr[i] = 0; | ||
173 | sun3_put_segmap (addr, SUN3_INVALID_PMEG); | ||
174 | } | ||
175 | sun3_put_context(oldctx); | ||
176 | |||
177 | } | ||
178 | /* Flush a range of pages from TLB. */ | ||
179 | |||
180 | static inline void flush_tlb_range (struct vm_area_struct *vma, | ||
181 | unsigned long start, unsigned long end) | ||
182 | { | ||
183 | struct mm_struct *mm = vma->vm_mm; | ||
184 | unsigned char seg, oldctx; | ||
185 | |||
186 | start &= ~SUN3_PMEG_MASK; | ||
187 | |||
188 | oldctx = sun3_get_context(); | ||
189 | sun3_put_context(mm->context); | ||
190 | |||
191 | while(start < end) | ||
192 | { | ||
193 | if((seg = sun3_get_segmap(start)) == SUN3_INVALID_PMEG) | ||
194 | goto next; | ||
195 | if(pmeg_ctx[seg] == mm->context) { | ||
196 | pmeg_alloc[seg] = 0; | ||
197 | pmeg_ctx[seg] = 0; | ||
198 | pmeg_vaddr[seg] = 0; | ||
199 | } | ||
200 | sun3_put_segmap(start, SUN3_INVALID_PMEG); | ||
201 | next: | ||
202 | start += SUN3_PMEG_SIZE; | ||
203 | } | ||
204 | } | ||
205 | |||
206 | static inline void flush_tlb_kernel_range(unsigned long start, unsigned long end) | ||
207 | { | ||
208 | flush_tlb_all(); | ||
209 | } | ||
210 | |||
211 | /* Flush kernel page from TLB. */ | ||
212 | static inline void flush_tlb_kernel_page (unsigned long addr) | ||
213 | { | ||
214 | sun3_put_segmap (addr & ~(SUN3_PMEG_SIZE - 1), SUN3_INVALID_PMEG); | ||
215 | } | ||
216 | |||
217 | #endif | ||
218 | |||
219 | #endif /* _M68K_TLBFLUSH_H */ | ||
diff --git a/arch/m68k/include/asm/tlbflush_no.h b/arch/m68k/include/asm/tlbflush_no.h deleted file mode 100644 index a470cfb803eb..000000000000 --- a/arch/m68k/include/asm/tlbflush_no.h +++ /dev/null | |||
@@ -1,55 +0,0 @@ | |||
1 | #ifndef _M68KNOMMU_TLBFLUSH_H | ||
2 | #define _M68KNOMMU_TLBFLUSH_H | ||
3 | |||
4 | /* | ||
5 | * Copyright (C) 2000 Lineo, David McCullough <davidm@uclinux.org> | ||
6 | * Copyright (C) 2000-2002, Greg Ungerer <gerg@snapgear.com> | ||
7 | */ | ||
8 | |||
9 | #include <asm/setup.h> | ||
10 | |||
11 | /* | ||
12 | * flush all user-space atc entries. | ||
13 | */ | ||
14 | static inline void __flush_tlb(void) | ||
15 | { | ||
16 | BUG(); | ||
17 | } | ||
18 | |||
19 | static inline void __flush_tlb_one(unsigned long addr) | ||
20 | { | ||
21 | BUG(); | ||
22 | } | ||
23 | |||
24 | #define flush_tlb() __flush_tlb() | ||
25 | |||
26 | /* | ||
27 | * flush all atc entries (both kernel and user-space entries). | ||
28 | */ | ||
29 | static inline void flush_tlb_all(void) | ||
30 | { | ||
31 | BUG(); | ||
32 | } | ||
33 | |||
34 | static inline void flush_tlb_mm(struct mm_struct *mm) | ||
35 | { | ||
36 | BUG(); | ||
37 | } | ||
38 | |||
39 | static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) | ||
40 | { | ||
41 | BUG(); | ||
42 | } | ||
43 | |||
44 | static inline void flush_tlb_range(struct mm_struct *mm, | ||
45 | unsigned long start, unsigned long end) | ||
46 | { | ||
47 | BUG(); | ||
48 | } | ||
49 | |||
50 | static inline void flush_tlb_kernel_page(unsigned long addr) | ||
51 | { | ||
52 | BUG(); | ||
53 | } | ||
54 | |||
55 | #endif /* _M68KNOMMU_TLBFLUSH_H */ | ||
diff --git a/arch/m68k/include/asm/ucontext.h b/arch/m68k/include/asm/ucontext.h index b53cd160c0b3..e4e22669edc0 100644 --- a/arch/m68k/include/asm/ucontext.h +++ b/arch/m68k/include/asm/ucontext.h | |||
@@ -1,5 +1,30 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_UCONTEXT_H |
2 | #include "ucontext_no.h" | 2 | #define _M68K_UCONTEXT_H |
3 | #else | 3 | |
4 | #include "ucontext_mm.h" | 4 | typedef int greg_t; |
5 | #define NGREG 18 | ||
6 | typedef greg_t gregset_t[NGREG]; | ||
7 | |||
8 | typedef struct fpregset { | ||
9 | int f_fpcntl[3]; | ||
10 | int f_fpregs[8*3]; | ||
11 | } fpregset_t; | ||
12 | |||
13 | struct mcontext { | ||
14 | int version; | ||
15 | gregset_t gregs; | ||
16 | fpregset_t fpregs; | ||
17 | }; | ||
18 | |||
19 | #define MCONTEXT_VERSION 2 | ||
20 | |||
21 | struct ucontext { | ||
22 | unsigned long uc_flags; | ||
23 | struct ucontext *uc_link; | ||
24 | stack_t uc_stack; | ||
25 | struct mcontext uc_mcontext; | ||
26 | unsigned long uc_filler[80]; | ||
27 | sigset_t uc_sigmask; /* mask last for extensibility */ | ||
28 | }; | ||
29 | |||
5 | #endif | 30 | #endif |
diff --git a/arch/m68k/include/asm/ucontext_mm.h b/arch/m68k/include/asm/ucontext_mm.h deleted file mode 100644 index e4e22669edc0..000000000000 --- a/arch/m68k/include/asm/ucontext_mm.h +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | #ifndef _M68K_UCONTEXT_H | ||
2 | #define _M68K_UCONTEXT_H | ||
3 | |||
4 | typedef int greg_t; | ||
5 | #define NGREG 18 | ||
6 | typedef greg_t gregset_t[NGREG]; | ||
7 | |||
8 | typedef struct fpregset { | ||
9 | int f_fpcntl[3]; | ||
10 | int f_fpregs[8*3]; | ||
11 | } fpregset_t; | ||
12 | |||
13 | struct mcontext { | ||
14 | int version; | ||
15 | gregset_t gregs; | ||
16 | fpregset_t fpregs; | ||
17 | }; | ||
18 | |||
19 | #define MCONTEXT_VERSION 2 | ||
20 | |||
21 | struct ucontext { | ||
22 | unsigned long uc_flags; | ||
23 | struct ucontext *uc_link; | ||
24 | stack_t uc_stack; | ||
25 | struct mcontext uc_mcontext; | ||
26 | unsigned long uc_filler[80]; | ||
27 | sigset_t uc_sigmask; /* mask last for extensibility */ | ||
28 | }; | ||
29 | |||
30 | #endif | ||
diff --git a/arch/m68k/include/asm/ucontext_no.h b/arch/m68k/include/asm/ucontext_no.h deleted file mode 100644 index 713a27f901cd..000000000000 --- a/arch/m68k/include/asm/ucontext_no.h +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | #ifndef _M68KNOMMU_UCONTEXT_H | ||
2 | #define _M68KNOMMU_UCONTEXT_H | ||
3 | |||
4 | typedef int greg_t; | ||
5 | #define NGREG 18 | ||
6 | typedef greg_t gregset_t[NGREG]; | ||
7 | |||
8 | typedef struct fpregset { | ||
9 | int f_pcr; | ||
10 | int f_psr; | ||
11 | int f_fpiaddr; | ||
12 | int f_fpregs[8][3]; | ||
13 | } fpregset_t; | ||
14 | |||
15 | struct mcontext { | ||
16 | int version; | ||
17 | gregset_t gregs; | ||
18 | fpregset_t fpregs; | ||
19 | }; | ||
20 | |||
21 | #define MCONTEXT_VERSION 2 | ||
22 | |||
23 | struct ucontext { | ||
24 | unsigned long uc_flags; | ||
25 | struct ucontext *uc_link; | ||
26 | stack_t uc_stack; | ||
27 | struct mcontext uc_mcontext; | ||
28 | unsigned long uc_filler[80]; | ||
29 | sigset_t uc_sigmask; /* mask last for extensibility */ | ||
30 | }; | ||
31 | |||
32 | #endif | ||
diff --git a/arch/m68k/include/asm/unaligned.h b/arch/m68k/include/asm/unaligned.h index c640bba3bdf4..019caa740c21 100644 --- a/arch/m68k/include/asm/unaligned.h +++ b/arch/m68k/include/asm/unaligned.h | |||
@@ -1,5 +1,25 @@ | |||
1 | #ifdef __uClinux__ | 1 | #ifndef _ASM_M68K_UNALIGNED_H |
2 | #include "unaligned_no.h" | 2 | #define _ASM_M68K_UNALIGNED_H |
3 | |||
4 | |||
5 | #ifdef CONFIG_COLDFIRE | ||
6 | #include <linux/unaligned/be_struct.h> | ||
7 | #include <linux/unaligned/le_byteshift.h> | ||
8 | #include <linux/unaligned/generic.h> | ||
9 | |||
10 | #define get_unaligned __get_unaligned_be | ||
11 | #define put_unaligned __put_unaligned_be | ||
12 | |||
3 | #else | 13 | #else |
4 | #include "unaligned_mm.h" | 14 | /* |
15 | * The m68k can do unaligned accesses itself. | ||
16 | */ | ||
17 | #include <linux/unaligned/access_ok.h> | ||
18 | #include <linux/unaligned/generic.h> | ||
19 | |||
20 | #define get_unaligned __get_unaligned_be | ||
21 | #define put_unaligned __put_unaligned_be | ||
22 | |||
5 | #endif | 23 | #endif |
24 | |||
25 | #endif /* _ASM_M68K_UNALIGNED_H */ | ||
diff --git a/arch/m68k/include/asm/unaligned_mm.h b/arch/m68k/include/asm/unaligned_mm.h deleted file mode 100644 index 77698f2dc33c..000000000000 --- a/arch/m68k/include/asm/unaligned_mm.h +++ /dev/null | |||
@@ -1,13 +0,0 @@ | |||
1 | #ifndef _ASM_M68K_UNALIGNED_H | ||
2 | #define _ASM_M68K_UNALIGNED_H | ||
3 | |||
4 | /* | ||
5 | * The m68k can do unaligned accesses itself. | ||
6 | */ | ||
7 | #include <linux/unaligned/access_ok.h> | ||
8 | #include <linux/unaligned/generic.h> | ||
9 | |||
10 | #define get_unaligned __get_unaligned_be | ||
11 | #define put_unaligned __put_unaligned_be | ||
12 | |||
13 | #endif /* _ASM_M68K_UNALIGNED_H */ | ||
diff --git a/arch/m68k/include/asm/unaligned_no.h b/arch/m68k/include/asm/unaligned_no.h deleted file mode 100644 index eb1ea4cb9a59..000000000000 --- a/arch/m68k/include/asm/unaligned_no.h +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | #ifndef _ASM_M68KNOMMU_UNALIGNED_H | ||
2 | #define _ASM_M68KNOMMU_UNALIGNED_H | ||
3 | |||
4 | |||
5 | #ifdef CONFIG_COLDFIRE | ||
6 | #include <linux/unaligned/be_struct.h> | ||
7 | #include <linux/unaligned/le_byteshift.h> | ||
8 | #include <linux/unaligned/generic.h> | ||
9 | |||
10 | #define get_unaligned __get_unaligned_be | ||
11 | #define put_unaligned __put_unaligned_be | ||
12 | |||
13 | #else | ||
14 | /* | ||
15 | * The m68k can do unaligned accesses itself. | ||
16 | */ | ||
17 | #include <linux/unaligned/access_ok.h> | ||
18 | #include <linux/unaligned/generic.h> | ||
19 | |||
20 | #define get_unaligned __get_unaligned_be | ||
21 | #define put_unaligned __put_unaligned_be | ||
22 | |||
23 | #endif | ||
24 | |||
25 | #endif /* _ASM_M68KNOMMU_UNALIGNED_H */ | ||
diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c index 632ce016014d..ec37fb56c127 100644 --- a/arch/m68k/kernel/process.c +++ b/arch/m68k/kernel/process.c | |||
@@ -233,7 +233,7 @@ asmlinkage int m68k_clone(struct pt_regs *regs) | |||
233 | parent_tidptr, child_tidptr); | 233 | parent_tidptr, child_tidptr); |
234 | } | 234 | } |
235 | 235 | ||
236 | int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | 236 | int copy_thread(unsigned long clone_flags, unsigned long usp, |
237 | unsigned long unused, | 237 | unsigned long unused, |
238 | struct task_struct * p, struct pt_regs * regs) | 238 | struct task_struct * p, struct pt_regs * regs) |
239 | { | 239 | { |
diff --git a/arch/m68knommu/Makefile b/arch/m68knommu/Makefile index fd0fb303d885..ce404bc9ccbd 100644 --- a/arch/m68knommu/Makefile +++ b/arch/m68knommu/Makefile | |||
@@ -88,18 +88,18 @@ export PLATFORM BOARD MODEL CPUCLASS | |||
88 | # | 88 | # |
89 | # Some CFLAG additions based on specific CPU type. | 89 | # Some CFLAG additions based on specific CPU type. |
90 | # | 90 | # |
91 | cflags-$(CONFIG_M5206) := -m5200 | 91 | cflags-$(CONFIG_M5206) := $(call cc-option,-mcpu=5206,-m5200) |
92 | cflags-$(CONFIG_M5206e) := -m5200 | 92 | cflags-$(CONFIG_M5206e) := $(call cc-option,-m5206e,-m5200) |
93 | cflags-$(CONFIG_M520x) := -m5307 | 93 | 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) := -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) := -m5307 | 97 | cflags-$(CONFIG_M5272) := $(call cc-option,-mcpu=5271,-m5200) |
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) := -m5307 | 100 | cflags-$(CONFIG_M5307) := $(call cc-option,-m5307,-m5200) |
101 | cflags-$(CONFIG_M532x) := $(call cc-option,-mcpu=532x,-m5307) | 101 | cflags-$(CONFIG_M532x) := $(call cc-option,-mcpu=532x,-m5307) |
102 | cflags-$(CONFIG_M5407) := -m5200 | 102 | cflags-$(CONFIG_M5407) := $(call cc-option,-m5407,-m5200) |
103 | cflags-$(CONFIG_M68328) := -m68000 | 103 | cflags-$(CONFIG_M68328) := -m68000 |
104 | cflags-$(CONFIG_M68EZ328) := -m68000 | 104 | cflags-$(CONFIG_M68EZ328) := -m68000 |
105 | cflags-$(CONFIG_M68VZ328) := -m68000 | 105 | cflags-$(CONFIG_M68VZ328) := -m68000 |
diff --git a/arch/m68knommu/kernel/dma.c b/arch/m68knommu/kernel/dma.c index e10eafc52789..936125806638 100644 --- a/arch/m68knommu/kernel/dma.c +++ b/arch/m68knommu/kernel/dma.c | |||
@@ -9,10 +9,11 @@ | |||
9 | #include <linux/mm.h> | 9 | #include <linux/mm.h> |
10 | #include <linux/string.h> | 10 | #include <linux/string.h> |
11 | #include <linux/device.h> | 11 | #include <linux/device.h> |
12 | #include <linux/dma-mapping.h> | ||
12 | #include <asm/io.h> | 13 | #include <asm/io.h> |
13 | 14 | ||
14 | void *dma_alloc_coherent(struct device *dev, size_t size, | 15 | void *dma_alloc_coherent(struct device *dev, size_t size, |
15 | dma_addr_t *dma_handle, int gfp) | 16 | dma_addr_t *dma_handle, gfp_t gfp) |
16 | { | 17 | { |
17 | void *ret; | 18 | void *ret; |
18 | /* ignore region specifiers */ | 19 | /* ignore region specifiers */ |
@@ -34,3 +35,8 @@ void dma_free_coherent(struct device *dev, size_t size, | |||
34 | { | 35 | { |
35 | free_pages((unsigned long)vaddr, get_order(size)); | 36 | free_pages((unsigned long)vaddr, get_order(size)); |
36 | } | 37 | } |
38 | |||
39 | void dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, size_t size, enum dma_data_direction dir) | ||
40 | { | ||
41 | } | ||
42 | |||
diff --git a/arch/m68knommu/kernel/irq.c b/arch/m68knommu/kernel/irq.c index bba1bb48a21f..56e0f4c55a67 100644 --- a/arch/m68knommu/kernel/irq.c +++ b/arch/m68knommu/kernel/irq.c | |||
@@ -23,7 +23,7 @@ asmlinkage void do_IRQ(int irq, struct pt_regs *regs) | |||
23 | struct pt_regs *oldregs = set_irq_regs(regs); | 23 | struct pt_regs *oldregs = set_irq_regs(regs); |
24 | 24 | ||
25 | irq_enter(); | 25 | irq_enter(); |
26 | __do_IRQ(irq); | 26 | generic_handle_irq(irq); |
27 | irq_exit(); | 27 | irq_exit(); |
28 | 28 | ||
29 | set_irq_regs(oldregs); | 29 | set_irq_regs(oldregs); |
diff --git a/arch/m68knommu/kernel/process.c b/arch/m68knommu/kernel/process.c index 3f2d7745f31e..1e96c6eb6312 100644 --- a/arch/m68knommu/kernel/process.c +++ b/arch/m68knommu/kernel/process.c | |||
@@ -199,7 +199,7 @@ asmlinkage int m68k_clone(struct pt_regs *regs) | |||
199 | return do_fork(clone_flags, newsp, regs, 0, NULL, NULL); | 199 | return do_fork(clone_flags, newsp, regs, 0, NULL, NULL); |
200 | } | 200 | } |
201 | 201 | ||
202 | int copy_thread(int nr, unsigned long clone_flags, | 202 | int copy_thread(unsigned long clone_flags, |
203 | unsigned long usp, unsigned long topstk, | 203 | unsigned long usp, unsigned long topstk, |
204 | struct task_struct * p, struct pt_regs * regs) | 204 | struct task_struct * p, struct pt_regs * regs) |
205 | { | 205 | { |
diff --git a/arch/m68knommu/mm/init.c b/arch/m68knommu/mm/init.c index 3bf249c53e41..7befc0c357e0 100644 --- a/arch/m68knommu/mm/init.c +++ b/arch/m68knommu/mm/init.c | |||
@@ -111,11 +111,7 @@ void __init paging_init(void) | |||
111 | { | 111 | { |
112 | unsigned long zones_size[MAX_NR_ZONES] = {0, }; | 112 | unsigned long zones_size[MAX_NR_ZONES] = {0, }; |
113 | 113 | ||
114 | zones_size[ZONE_DMA] = 0 >> PAGE_SHIFT; | 114 | zones_size[ZONE_DMA] = (end_mem - PAGE_OFFSET) >> PAGE_SHIFT; |
115 | zones_size[ZONE_NORMAL] = (end_mem - PAGE_OFFSET) >> PAGE_SHIFT; | ||
116 | #ifdef CONFIG_HIGHMEM | ||
117 | zones_size[ZONE_HIGHMEM] = 0; | ||
118 | #endif | ||
119 | free_area_init(zones_size); | 115 | free_area_init(zones_size); |
120 | } | 116 | } |
121 | } | 117 | } |
diff --git a/arch/m68knommu/platform/5249/config.c b/arch/m68knommu/platform/5249/config.c index d299f7b8768a..9eab19d01eb1 100644 --- a/arch/m68knommu/platform/5249/config.c +++ b/arch/m68knommu/platform/5249/config.c | |||
@@ -32,7 +32,8 @@ static struct mcf_platform_uart m5249_uart_platform[] = { | |||
32 | { | 32 | { |
33 | .mapbase = MCF_MBAR + MCFUART_BASE2, | 33 | .mapbase = MCF_MBAR + MCFUART_BASE2, |
34 | .irq = 74, | 34 | .irq = 74, |
35 | } | 35 | }, |
36 | { }, | ||
36 | }; | 37 | }; |
37 | 38 | ||
38 | static struct platform_device m5249_uart = { | 39 | static struct platform_device m5249_uart = { |
@@ -50,12 +51,12 @@ static struct platform_device *m5249_devices[] __initdata = { | |||
50 | static void __init m5249_uart_init_line(int line, int irq) | 51 | static void __init m5249_uart_init_line(int line, int irq) |
51 | { | 52 | { |
52 | if (line == 0) { | 53 | if (line == 0) { |
53 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); | 54 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); |
54 | writeb(irq, MCFUART_BASE1 + MCFUART_UIVR); | 55 | writeb(irq, MCF_MBAR + MCFUART_BASE1 + MCFUART_UIVR); |
55 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART1); | 56 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART1); |
56 | } else if (line == 1) { | 57 | } else if (line == 1) { |
57 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); | 58 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); |
58 | writeb(irq, MCFUART_BASE2 + MCFUART_UIVR); | 59 | writeb(irq, MCF_MBAR + MCFUART_BASE2 + MCFUART_UIVR); |
59 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART2); | 60 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART2); |
60 | } | 61 | } |
61 | } | 62 | } |
diff --git a/arch/m68knommu/platform/5307/config.c b/arch/m68knommu/platform/5307/config.c index 724faf05852a..44803bf70a6e 100644 --- a/arch/m68knommu/platform/5307/config.c +++ b/arch/m68knommu/platform/5307/config.c | |||
@@ -65,12 +65,12 @@ static struct platform_device *m5307_devices[] __initdata = { | |||
65 | static void __init m5307_uart_init_line(int line, int irq) | 65 | static void __init m5307_uart_init_line(int line, int irq) |
66 | { | 66 | { |
67 | if (line == 0) { | 67 | if (line == 0) { |
68 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); | 68 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); |
69 | writeb(irq, MCFUART_BASE1 + MCFUART_UIVR); | 69 | writeb(irq, MCF_MBAR + MCFUART_BASE1 + MCFUART_UIVR); |
70 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART1); | 70 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART1); |
71 | } else if (line == 1) { | 71 | } else if (line == 1) { |
72 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); | 72 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); |
73 | writeb(irq, MCFUART_BASE2 + MCFUART_UIVR); | 73 | writeb(irq, MCF_MBAR + MCFUART_BASE2 + MCFUART_UIVR); |
74 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART2); | 74 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART2); |
75 | } | 75 | } |
76 | } | 76 | } |
diff --git a/arch/m68knommu/platform/5407/config.c b/arch/m68knommu/platform/5407/config.c index 648b8b778211..0ee8c1a200c8 100644 --- a/arch/m68knommu/platform/5407/config.c +++ b/arch/m68knommu/platform/5407/config.c | |||
@@ -56,12 +56,12 @@ static struct platform_device *m5407_devices[] __initdata = { | |||
56 | static void __init m5407_uart_init_line(int line, int irq) | 56 | static void __init m5407_uart_init_line(int line, int irq) |
57 | { | 57 | { |
58 | if (line == 0) { | 58 | if (line == 0) { |
59 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); | 59 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); |
60 | writeb(irq, MCFUART_BASE1 + MCFUART_UIVR); | 60 | writeb(irq, MCF_MBAR + MCFUART_BASE1 + MCFUART_UIVR); |
61 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART1); | 61 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART1); |
62 | } else if (line == 1) { | 62 | } else if (line == 1) { |
63 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); | 63 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); |
64 | writeb(irq, MCFUART_BASE2 + MCFUART_UIVR); | 64 | writeb(irq, MCF_MBAR + MCFUART_BASE2 + MCFUART_UIVR); |
65 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART2); | 65 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART2); |
66 | } | 66 | } |
67 | } | 67 | } |
diff --git a/arch/m68knommu/platform/coldfire/Makefile b/arch/m68knommu/platform/coldfire/Makefile index 4f416a91a829..1bcb9372353f 100644 --- a/arch/m68knommu/platform/coldfire/Makefile +++ b/arch/m68knommu/platform/coldfire/Makefile | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1 | 15 | asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1 |
16 | 16 | ||
17 | obj-$(CONFIG_COLDFIRE) += dma.o entry.o vectors.o | 17 | obj-$(CONFIG_COLDFIRE) += clk.o dma.o entry.o vectors.o |
18 | obj-$(CONFIG_M5206) += timers.o | 18 | obj-$(CONFIG_M5206) += timers.o |
19 | obj-$(CONFIG_M5206e) += timers.o | 19 | obj-$(CONFIG_M5206e) += timers.o |
20 | obj-$(CONFIG_M520x) += pit.o | 20 | obj-$(CONFIG_M520x) += pit.o |
diff --git a/arch/m68knommu/platform/coldfire/clk.c b/arch/m68knommu/platform/coldfire/clk.c new file mode 100644 index 000000000000..7cdbf445b28f --- /dev/null +++ b/arch/m68knommu/platform/coldfire/clk.c | |||
@@ -0,0 +1,40 @@ | |||
1 | /***************************************************************************/ | ||
2 | |||
3 | /* | ||
4 | * clk.c -- general ColdFire CPU kernel clk handling | ||
5 | * | ||
6 | * Copyright (C) 2009, Greg Ungerer (gerg@snapgear.com) | ||
7 | */ | ||
8 | |||
9 | /***************************************************************************/ | ||
10 | |||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/clk.h> | ||
13 | #include <asm/coldfire.h> | ||
14 | |||
15 | /***************************************************************************/ | ||
16 | |||
17 | struct clk *clk_get(struct device *dev, const char *id) | ||
18 | { | ||
19 | return NULL; | ||
20 | } | ||
21 | |||
22 | int clk_enable(struct clk *clk) | ||
23 | { | ||
24 | return 0; | ||
25 | } | ||
26 | |||
27 | void clk_disable(struct clk *clk) | ||
28 | { | ||
29 | } | ||
30 | |||
31 | void clk_put(struct clk *clk) | ||
32 | { | ||
33 | } | ||
34 | |||
35 | unsigned long clk_get_rate(struct clk *clk) | ||
36 | { | ||
37 | return MCF_CLK; | ||
38 | } | ||
39 | |||
40 | /***************************************************************************/ | ||
diff --git a/arch/mips/include/asm/spinlock.h b/arch/mips/include/asm/spinlock.h index 10e82441b496..5b60a09a0f08 100644 --- a/arch/mips/include/asm/spinlock.h +++ b/arch/mips/include/asm/spinlock.h | |||
@@ -480,6 +480,8 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw) | |||
480 | return ret; | 480 | return ret; |
481 | } | 481 | } |
482 | 482 | ||
483 | #define __raw_read_lock_flags(lock, flags) __raw_read_lock(lock) | ||
484 | #define __raw_write_lock_flags(lock, flags) __raw_write_lock(lock) | ||
483 | 485 | ||
484 | #define _raw_spin_relax(lock) cpu_relax() | 486 | #define _raw_spin_relax(lock) cpu_relax() |
485 | #define _raw_read_relax(lock) cpu_relax() | 487 | #define _raw_read_relax(lock) cpu_relax() |
diff --git a/arch/mips/include/asm/unistd.h b/arch/mips/include/asm/unistd.h index a73e1531e151..40005010827c 100644 --- a/arch/mips/include/asm/unistd.h +++ b/arch/mips/include/asm/unistd.h | |||
@@ -350,16 +350,18 @@ | |||
350 | #define __NR_dup3 (__NR_Linux + 327) | 350 | #define __NR_dup3 (__NR_Linux + 327) |
351 | #define __NR_pipe2 (__NR_Linux + 328) | 351 | #define __NR_pipe2 (__NR_Linux + 328) |
352 | #define __NR_inotify_init1 (__NR_Linux + 329) | 352 | #define __NR_inotify_init1 (__NR_Linux + 329) |
353 | #define __NR_preadv (__NR_Linux + 330) | ||
354 | #define __NR_pwritev (__NR_Linux + 331) | ||
353 | 355 | ||
354 | /* | 356 | /* |
355 | * Offset of the last Linux o32 flavoured syscall | 357 | * Offset of the last Linux o32 flavoured syscall |
356 | */ | 358 | */ |
357 | #define __NR_Linux_syscalls 329 | 359 | #define __NR_Linux_syscalls 331 |
358 | 360 | ||
359 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ | 361 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ |
360 | 362 | ||
361 | #define __NR_O32_Linux 4000 | 363 | #define __NR_O32_Linux 4000 |
362 | #define __NR_O32_Linux_syscalls 329 | 364 | #define __NR_O32_Linux_syscalls 331 |
363 | 365 | ||
364 | #if _MIPS_SIM == _MIPS_SIM_ABI64 | 366 | #if _MIPS_SIM == _MIPS_SIM_ABI64 |
365 | 367 | ||
@@ -656,16 +658,18 @@ | |||
656 | #define __NR_dup3 (__NR_Linux + 286) | 658 | #define __NR_dup3 (__NR_Linux + 286) |
657 | #define __NR_pipe2 (__NR_Linux + 287) | 659 | #define __NR_pipe2 (__NR_Linux + 287) |
658 | #define __NR_inotify_init1 (__NR_Linux + 288) | 660 | #define __NR_inotify_init1 (__NR_Linux + 288) |
661 | #define __NR_preadv (__NR_Linux + 289) | ||
662 | #define __NR_pwritev (__NR_Linux + 290) | ||
659 | 663 | ||
660 | /* | 664 | /* |
661 | * Offset of the last Linux 64-bit flavoured syscall | 665 | * Offset of the last Linux 64-bit flavoured syscall |
662 | */ | 666 | */ |
663 | #define __NR_Linux_syscalls 288 | 667 | #define __NR_Linux_syscalls 290 |
664 | 668 | ||
665 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ | 669 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ |
666 | 670 | ||
667 | #define __NR_64_Linux 5000 | 671 | #define __NR_64_Linux 5000 |
668 | #define __NR_64_Linux_syscalls 288 | 672 | #define __NR_64_Linux_syscalls 290 |
669 | 673 | ||
670 | #if _MIPS_SIM == _MIPS_SIM_NABI32 | 674 | #if _MIPS_SIM == _MIPS_SIM_NABI32 |
671 | 675 | ||
@@ -966,16 +970,18 @@ | |||
966 | #define __NR_dup3 (__NR_Linux + 290) | 970 | #define __NR_dup3 (__NR_Linux + 290) |
967 | #define __NR_pipe2 (__NR_Linux + 291) | 971 | #define __NR_pipe2 (__NR_Linux + 291) |
968 | #define __NR_inotify_init1 (__NR_Linux + 292) | 972 | #define __NR_inotify_init1 (__NR_Linux + 292) |
973 | #define __NR_preadv (__NR_Linux + 293) | ||
974 | #define __NR_pwritev (__NR_Linux + 294) | ||
969 | 975 | ||
970 | /* | 976 | /* |
971 | * Offset of the last N32 flavoured syscall | 977 | * Offset of the last N32 flavoured syscall |
972 | */ | 978 | */ |
973 | #define __NR_Linux_syscalls 292 | 979 | #define __NR_Linux_syscalls 294 |
974 | 980 | ||
975 | #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ | 981 | #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ |
976 | 982 | ||
977 | #define __NR_N32_Linux 6000 | 983 | #define __NR_N32_Linux 6000 |
978 | #define __NR_N32_Linux_syscalls 292 | 984 | #define __NR_N32_Linux_syscalls 294 |
979 | 985 | ||
980 | #ifdef __KERNEL__ | 986 | #ifdef __KERNEL__ |
981 | 987 | ||
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index ca2e4026ad20..1eaaa450e20c 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c | |||
@@ -99,7 +99,7 @@ void flush_thread(void) | |||
99 | { | 99 | { |
100 | } | 100 | } |
101 | 101 | ||
102 | int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | 102 | int copy_thread(unsigned long clone_flags, unsigned long usp, |
103 | unsigned long unused, struct task_struct *p, struct pt_regs *regs) | 103 | unsigned long unused, struct task_struct *p, struct pt_regs *regs) |
104 | { | 104 | { |
105 | struct thread_info *ti = task_thread_info(p); | 105 | struct thread_info *ti = task_thread_info(p); |
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S index 9ab70c3b5be6..0b31b9bda048 100644 --- a/arch/mips/kernel/scall32-o32.S +++ b/arch/mips/kernel/scall32-o32.S | |||
@@ -650,6 +650,8 @@ einval: li v0, -ENOSYS | |||
650 | sys sys_dup3 3 | 650 | sys sys_dup3 3 |
651 | sys sys_pipe2 2 | 651 | sys sys_pipe2 2 |
652 | sys sys_inotify_init1 1 | 652 | sys sys_inotify_init1 1 |
653 | sys sys_preadv 6 /* 4330 */ | ||
654 | sys sys_pwritev 6 | ||
653 | .endm | 655 | .endm |
654 | 656 | ||
655 | /* We pre-compute the number of _instruction_ bytes needed to | 657 | /* We pre-compute the number of _instruction_ bytes needed to |
diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S index 9b4698667154..c647fd6e722f 100644 --- a/arch/mips/kernel/scall64-64.S +++ b/arch/mips/kernel/scall64-64.S | |||
@@ -487,4 +487,6 @@ sys_call_table: | |||
487 | PTR sys_dup3 | 487 | PTR sys_dup3 |
488 | PTR sys_pipe2 | 488 | PTR sys_pipe2 |
489 | PTR sys_inotify_init1 | 489 | PTR sys_inotify_init1 |
490 | PTR sys_preadv | ||
491 | PTR sys_pwritev /* 5390 */ | ||
490 | .size sys_call_table,.-sys_call_table | 492 | .size sys_call_table,.-sys_call_table |
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S index f61d6b0e5731..c2c16ef9218f 100644 --- a/arch/mips/kernel/scall64-n32.S +++ b/arch/mips/kernel/scall64-n32.S | |||
@@ -413,4 +413,6 @@ EXPORT(sysn32_call_table) | |||
413 | PTR sys_dup3 /* 5290 */ | 413 | PTR sys_dup3 /* 5290 */ |
414 | PTR sys_pipe2 | 414 | PTR sys_pipe2 |
415 | PTR sys_inotify_init1 | 415 | PTR sys_inotify_init1 |
416 | PTR sys_preadv | ||
417 | PTR sys_pwritev | ||
416 | .size sysn32_call_table,.-sysn32_call_table | 418 | .size sysn32_call_table,.-sysn32_call_table |
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S index 60997f1f69d4..002fac27021e 100644 --- a/arch/mips/kernel/scall64-o32.S +++ b/arch/mips/kernel/scall64-o32.S | |||
@@ -533,4 +533,6 @@ sys_call_table: | |||
533 | PTR sys_dup3 | 533 | PTR sys_dup3 |
534 | PTR sys_pipe2 | 534 | PTR sys_pipe2 |
535 | PTR sys_inotify_init1 | 535 | PTR sys_inotify_init1 |
536 | PTR compat_sys_preadv /* 4330 */ | ||
537 | PTR compat_sys_pwritev | ||
536 | .size sys_call_table,.-sys_call_table | 538 | .size sys_call_table,.-sys_call_table |
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c index b28c9a60445b..234cf344cdce 100644 --- a/arch/mn10300/kernel/process.c +++ b/arch/mn10300/kernel/process.c | |||
@@ -193,7 +193,7 @@ void prepare_to_copy(struct task_struct *tsk) | |||
193 | * set up the kernel stack for a new thread and copy arch-specific thread | 193 | * set up the kernel stack for a new thread and copy arch-specific thread |
194 | * control information | 194 | * control information |
195 | */ | 195 | */ |
196 | int copy_thread(int nr, unsigned long clone_flags, | 196 | int copy_thread(unsigned long clone_flags, |
197 | unsigned long c_usp, unsigned long ustk_size, | 197 | unsigned long c_usp, unsigned long ustk_size, |
198 | struct task_struct *p, struct pt_regs *kregs) | 198 | struct task_struct *p, struct pt_regs *kregs) |
199 | { | 199 | { |
diff --git a/arch/parisc/include/asm/spinlock.h b/arch/parisc/include/asm/spinlock.h index f3d2090a18dc..fae03e136fa8 100644 --- a/arch/parisc/include/asm/spinlock.h +++ b/arch/parisc/include/asm/spinlock.h | |||
@@ -187,6 +187,9 @@ static __inline__ int __raw_write_can_lock(raw_rwlock_t *rw) | |||
187 | return !rw->counter; | 187 | return !rw->counter; |
188 | } | 188 | } |
189 | 189 | ||
190 | #define __raw_read_lock_flags(lock, flags) __raw_read_lock(lock) | ||
191 | #define __raw_write_lock_flags(lock, flags) __raw_write_lock(lock) | ||
192 | |||
190 | #define _raw_spin_relax(lock) cpu_relax() | 193 | #define _raw_spin_relax(lock) cpu_relax() |
191 | #define _raw_read_relax(lock) cpu_relax() | 194 | #define _raw_read_relax(lock) cpu_relax() |
192 | #define _raw_write_relax(lock) cpu_relax() | 195 | #define _raw_write_relax(lock) cpu_relax() |
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index b80e02a4d81d..8aa591ed9127 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c | |||
@@ -263,7 +263,7 @@ sys_vfork(struct pt_regs *regs) | |||
263 | } | 263 | } |
264 | 264 | ||
265 | int | 265 | int |
266 | copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | 266 | copy_thread(unsigned long clone_flags, unsigned long usp, |
267 | unsigned long unused, /* in ia64 this is "user_stack_size" */ | 267 | unsigned long unused, /* in ia64 this is "user_stack_size" */ |
268 | struct task_struct * p, struct pt_regs * pregs) | 268 | struct task_struct * p, struct pt_regs * pregs) |
269 | { | 269 | { |
diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug index 6aa0b5e087cd..a1098e23221f 100644 --- a/arch/powerpc/Kconfig.debug +++ b/arch/powerpc/Kconfig.debug | |||
@@ -27,16 +27,6 @@ config DEBUG_STACK_USAGE | |||
27 | 27 | ||
28 | This option will slow down process creation somewhat. | 28 | This option will slow down process creation somewhat. |
29 | 29 | ||
30 | config DEBUG_PAGEALLOC | ||
31 | bool "Debug page memory allocations" | ||
32 | depends on DEBUG_KERNEL && !HIBERNATION | ||
33 | depends on ARCH_SUPPORTS_DEBUG_PAGEALLOC | ||
34 | help | ||
35 | Unmap pages from the kernel linear mapping after free_pages(). | ||
36 | This results in a large slowdown, but helps to find certain types | ||
37 | of memory corruptions. | ||
38 | |||
39 | |||
40 | config HCALL_STATS | 30 | config HCALL_STATS |
41 | bool "Hypervisor call instrumentation" | 31 | bool "Hypervisor call instrumentation" |
42 | depends on PPC_PSERIES && DEBUG_FS | 32 | depends on PPC_PSERIES && DEBUG_FS |
diff --git a/arch/powerpc/include/asm/spinlock.h b/arch/powerpc/include/asm/spinlock.h index 36864364e601..c3b193121f81 100644 --- a/arch/powerpc/include/asm/spinlock.h +++ b/arch/powerpc/include/asm/spinlock.h | |||
@@ -287,6 +287,9 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw) | |||
287 | rw->lock = 0; | 287 | rw->lock = 0; |
288 | } | 288 | } |
289 | 289 | ||
290 | #define __raw_read_lock_flags(lock, flags) __raw_read_lock(lock) | ||
291 | #define __raw_write_lock_flags(lock, flags) __raw_write_lock(lock) | ||
292 | |||
290 | #define _raw_spin_relax(lock) __spin_yield(lock) | 293 | #define _raw_spin_relax(lock) __spin_yield(lock) |
291 | #define _raw_read_relax(lock) __rw_yield(lock) | 294 | #define _raw_read_relax(lock) __rw_yield(lock) |
292 | #define _raw_write_relax(lock) __rw_yield(lock) | 295 | #define _raw_write_relax(lock) __rw_yield(lock) |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index eac064948780..7b44a33f03c2 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -598,7 +598,7 @@ void prepare_to_copy(struct task_struct *tsk) | |||
598 | /* | 598 | /* |
599 | * Copy a thread.. | 599 | * Copy a thread.. |
600 | */ | 600 | */ |
601 | int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | 601 | int copy_thread(unsigned long clone_flags, unsigned long usp, |
602 | unsigned long unused, struct task_struct *p, | 602 | unsigned long unused, struct task_struct *p, |
603 | struct pt_regs *regs) | 603 | struct pt_regs *regs) |
604 | { | 604 | { |
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c index d3694498f3af..819e59f6f7c7 100644 --- a/arch/powerpc/kernel/vio.c +++ b/arch/powerpc/kernel/vio.c | |||
@@ -482,7 +482,7 @@ static void vio_cmo_balance(struct work_struct *work) | |||
482 | cmo->excess.size = cmo->entitled - cmo->reserve.size; | 482 | cmo->excess.size = cmo->entitled - cmo->reserve.size; |
483 | cmo->excess.free = cmo->excess.size - need; | 483 | cmo->excess.free = cmo->excess.size - need; |
484 | 484 | ||
485 | cancel_delayed_work(container_of(work, struct delayed_work, work)); | 485 | cancel_delayed_work(to_delayed_work(work)); |
486 | spin_unlock_irqrestore(&vio_cmo.lock, flags); | 486 | spin_unlock_irqrestore(&vio_cmo.lock, flags); |
487 | } | 487 | } |
488 | 488 | ||
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index 64f068540d0d..706eb5c7e2ee 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -635,7 +635,7 @@ long spufs_create(struct nameidata *nd, unsigned int flags, mode_t mode, | |||
635 | if (dentry->d_inode) | 635 | if (dentry->d_inode) |
636 | goto out_dput; | 636 | goto out_dput; |
637 | 637 | ||
638 | mode &= ~current->fs->umask; | 638 | mode &= ~current_umask(); |
639 | 639 | ||
640 | if (flags & SPU_CREATE_GANG) | 640 | if (flags & SPU_CREATE_GANG) |
641 | ret = spufs_create_gang(nd->path.dentry->d_inode, | 641 | ret = spufs_create_gang(nd->path.dentry->d_inode, |
diff --git a/arch/s390/Kconfig.debug b/arch/s390/Kconfig.debug index 7e297a3cde34..2283933a9a93 100644 --- a/arch/s390/Kconfig.debug +++ b/arch/s390/Kconfig.debug | |||
@@ -6,13 +6,4 @@ config TRACE_IRQFLAGS_SUPPORT | |||
6 | 6 | ||
7 | source "lib/Kconfig.debug" | 7 | source "lib/Kconfig.debug" |
8 | 8 | ||
9 | config DEBUG_PAGEALLOC | ||
10 | bool "Debug page memory allocations" | ||
11 | depends on DEBUG_KERNEL | ||
12 | depends on ARCH_SUPPORTS_DEBUG_PAGEALLOC | ||
13 | help | ||
14 | Unmap pages from the kernel linear mapping after free_pages(). | ||
15 | This results in a slowdown, but helps to find certain types of | ||
16 | memory corruptions. | ||
17 | |||
18 | endmenu | 9 | endmenu |
diff --git a/arch/s390/include/asm/spinlock.h b/arch/s390/include/asm/spinlock.h index df84ae96915f..f3861b09ebb0 100644 --- a/arch/s390/include/asm/spinlock.h +++ b/arch/s390/include/asm/spinlock.h | |||
@@ -172,6 +172,9 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw) | |||
172 | return _raw_write_trylock_retry(rw); | 172 | return _raw_write_trylock_retry(rw); |
173 | } | 173 | } |
174 | 174 | ||
175 | #define __raw_read_lock_flags(lock, flags) __raw_read_lock(lock) | ||
176 | #define __raw_write_lock_flags(lock, flags) __raw_write_lock(lock) | ||
177 | |||
175 | #define _raw_read_relax(lock) cpu_relax() | 178 | #define _raw_read_relax(lock) cpu_relax() |
176 | #define _raw_write_relax(lock) cpu_relax() | 179 | #define _raw_write_relax(lock) cpu_relax() |
177 | 180 | ||
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index b48e961a38f6..a3acd8e60aff 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c | |||
@@ -160,7 +160,7 @@ void release_thread(struct task_struct *dead_task) | |||
160 | { | 160 | { |
161 | } | 161 | } |
162 | 162 | ||
163 | int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp, | 163 | int copy_thread(unsigned long clone_flags, unsigned long new_stackp, |
164 | unsigned long unused, | 164 | unsigned long unused, |
165 | struct task_struct *p, struct pt_regs *regs) | 165 | struct task_struct *p, struct pt_regs *regs) |
166 | { | 166 | { |
diff --git a/arch/sh/include/asm/spinlock.h b/arch/sh/include/asm/spinlock.h index e793181d64da..60283565f89b 100644 --- a/arch/sh/include/asm/spinlock.h +++ b/arch/sh/include/asm/spinlock.h | |||
@@ -216,6 +216,9 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw) | |||
216 | return (oldval > (RW_LOCK_BIAS - 1)); | 216 | return (oldval > (RW_LOCK_BIAS - 1)); |
217 | } | 217 | } |
218 | 218 | ||
219 | #define __raw_read_lock_flags(lock, flags) __raw_read_lock(lock) | ||
220 | #define __raw_write_lock_flags(lock, flags) __raw_write_lock(lock) | ||
221 | |||
219 | #define _raw_spin_relax(lock) cpu_relax() | 222 | #define _raw_spin_relax(lock) cpu_relax() |
220 | #define _raw_read_relax(lock) cpu_relax() | 223 | #define _raw_read_relax(lock) cpu_relax() |
221 | #define _raw_write_relax(lock) cpu_relax() | 224 | #define _raw_write_relax(lock) cpu_relax() |
diff --git a/arch/sh/kernel/process_32.c b/arch/sh/kernel/process_32.c index ddafbbbab2ab..694bc15f84fd 100644 --- a/arch/sh/kernel/process_32.c +++ b/arch/sh/kernel/process_32.c | |||
@@ -170,7 +170,7 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu) | |||
170 | 170 | ||
171 | asmlinkage void ret_from_fork(void); | 171 | asmlinkage void ret_from_fork(void); |
172 | 172 | ||
173 | int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | 173 | int copy_thread(unsigned long clone_flags, unsigned long usp, |
174 | unsigned long unused, | 174 | unsigned long unused, |
175 | struct task_struct *p, struct pt_regs *regs) | 175 | struct task_struct *p, struct pt_regs *regs) |
176 | { | 176 | { |
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c index c90c7e5e5fee..96be839040f8 100644 --- a/arch/sh/kernel/process_64.c +++ b/arch/sh/kernel/process_64.c | |||
@@ -425,7 +425,7 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu) | |||
425 | 425 | ||
426 | asmlinkage void ret_from_fork(void); | 426 | asmlinkage void ret_from_fork(void); |
427 | 427 | ||
428 | int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | 428 | int copy_thread(unsigned long clone_flags, unsigned long usp, |
429 | unsigned long unused, | 429 | unsigned long unused, |
430 | struct task_struct *p, struct pt_regs *regs) | 430 | struct task_struct *p, struct pt_regs *regs) |
431 | { | 431 | { |
diff --git a/arch/sparc/Kconfig.debug b/arch/sparc/Kconfig.debug index d001b42041a5..90d5fe223a74 100644 --- a/arch/sparc/Kconfig.debug +++ b/arch/sparc/Kconfig.debug | |||
@@ -22,15 +22,6 @@ config DEBUG_DCFLUSH | |||
22 | config STACK_DEBUG | 22 | config STACK_DEBUG |
23 | bool "Stack Overflow Detection Support" | 23 | bool "Stack Overflow Detection Support" |
24 | 24 | ||
25 | config DEBUG_PAGEALLOC | ||
26 | bool "Debug page memory allocations" | ||
27 | depends on DEBUG_KERNEL && !HIBERNATION | ||
28 | depends on ARCH_SUPPORTS_DEBUG_PAGEALLOC | ||
29 | help | ||
30 | Unmap pages from the kernel linear mapping after free_pages(). | ||
31 | This results in a large slowdown, but helps to find certain types | ||
32 | of memory corruptions. | ||
33 | |||
34 | config MCOUNT | 25 | config MCOUNT |
35 | bool | 26 | bool |
36 | depends on SPARC64 | 27 | depends on SPARC64 |
diff --git a/arch/sparc/include/asm/spinlock_32.h b/arch/sparc/include/asm/spinlock_32.h index bf2d532593e3..46f91ab66a50 100644 --- a/arch/sparc/include/asm/spinlock_32.h +++ b/arch/sparc/include/asm/spinlock_32.h | |||
@@ -177,6 +177,8 @@ static inline int __read_trylock(raw_rwlock_t *rw) | |||
177 | #define __raw_write_unlock(rw) do { (rw)->lock = 0; } while(0) | 177 | #define __raw_write_unlock(rw) do { (rw)->lock = 0; } while(0) |
178 | 178 | ||
179 | #define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock) | 179 | #define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock) |
180 | #define __raw_read_lock_flags(rw, flags) __raw_read_lock(rw) | ||
181 | #define __raw_write_lock_flags(rw, flags) __raw_write_lock(rw) | ||
180 | 182 | ||
181 | #define _raw_spin_relax(lock) cpu_relax() | 183 | #define _raw_spin_relax(lock) cpu_relax() |
182 | #define _raw_read_relax(lock) cpu_relax() | 184 | #define _raw_read_relax(lock) cpu_relax() |
diff --git a/arch/sparc/include/asm/spinlock_64.h b/arch/sparc/include/asm/spinlock_64.h index c4d274d330e9..f6b2b92ad8d2 100644 --- a/arch/sparc/include/asm/spinlock_64.h +++ b/arch/sparc/include/asm/spinlock_64.h | |||
@@ -211,9 +211,11 @@ static int inline __write_trylock(raw_rwlock_t *lock) | |||
211 | } | 211 | } |
212 | 212 | ||
213 | #define __raw_read_lock(p) __read_lock(p) | 213 | #define __raw_read_lock(p) __read_lock(p) |
214 | #define __raw_read_lock_flags(p, f) __read_lock(p) | ||
214 | #define __raw_read_trylock(p) __read_trylock(p) | 215 | #define __raw_read_trylock(p) __read_trylock(p) |
215 | #define __raw_read_unlock(p) __read_unlock(p) | 216 | #define __raw_read_unlock(p) __read_unlock(p) |
216 | #define __raw_write_lock(p) __write_lock(p) | 217 | #define __raw_write_lock(p) __write_lock(p) |
218 | #define __raw_write_lock_flags(p, f) __write_lock(p) | ||
217 | #define __raw_write_unlock(p) __write_unlock(p) | 219 | #define __raw_write_unlock(p) __write_unlock(p) |
218 | #define __raw_write_trylock(p) __write_trylock(p) | 220 | #define __raw_write_trylock(p) __write_trylock(p) |
219 | 221 | ||
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c index f4bee35a1b46..2830b415e214 100644 --- a/arch/sparc/kernel/process_32.c +++ b/arch/sparc/kernel/process_32.c | |||
@@ -455,7 +455,7 @@ asmlinkage int sparc_do_fork(unsigned long clone_flags, | |||
455 | */ | 455 | */ |
456 | extern void ret_from_fork(void); | 456 | extern void ret_from_fork(void); |
457 | 457 | ||
458 | int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, | 458 | int copy_thread(unsigned long clone_flags, unsigned long sp, |
459 | unsigned long unused, | 459 | unsigned long unused, |
460 | struct task_struct *p, struct pt_regs *regs) | 460 | struct task_struct *p, struct pt_regs *regs) |
461 | { | 461 | { |
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index a73954b87f0a..4041f94e7724 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c | |||
@@ -561,7 +561,7 @@ asmlinkage long sparc_do_fork(unsigned long clone_flags, | |||
561 | * Parent --> %o0 == childs pid, %o1 == 0 | 561 | * Parent --> %o0 == childs pid, %o1 == 0 |
562 | * Child --> %o0 == parents pid, %o1 == 1 | 562 | * Child --> %o0 == parents pid, %o1 == 1 |
563 | */ | 563 | */ |
564 | int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, | 564 | int copy_thread(unsigned long clone_flags, unsigned long sp, |
565 | unsigned long unused, | 565 | unsigned long unused, |
566 | struct task_struct *p, struct pt_regs *regs) | 566 | struct task_struct *p, struct pt_regs *regs) |
567 | { | 567 | { |
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c index 434224e2229f..434ba121e3c5 100644 --- a/arch/um/drivers/net_kern.c +++ b/arch/um/drivers/net_kern.c | |||
@@ -757,7 +757,7 @@ static int uml_inetaddr_event(struct notifier_block *this, unsigned long event, | |||
757 | void (*proc)(unsigned char *, unsigned char *, void *); | 757 | void (*proc)(unsigned char *, unsigned char *, void *); |
758 | unsigned char addr_buf[4], netmask_buf[4]; | 758 | unsigned char addr_buf[4], netmask_buf[4]; |
759 | 759 | ||
760 | if (dev->open != uml_net_open) | 760 | if (dev->netdev_ops->ndo_open != uml_net_open) |
761 | return NOTIFY_DONE; | 761 | return NOTIFY_DONE; |
762 | 762 | ||
763 | lp = netdev_priv(dev); | 763 | lp = netdev_priv(dev); |
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index d42f826a8ab9..f934225fd8ef 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include "linux/kernel.h" | 22 | #include "linux/kernel.h" |
23 | #include "linux/module.h" | 23 | #include "linux/module.h" |
24 | #include "linux/blkdev.h" | 24 | #include "linux/blkdev.h" |
25 | #include "linux/ata.h" | ||
25 | #include "linux/hdreg.h" | 26 | #include "linux/hdreg.h" |
26 | #include "linux/init.h" | 27 | #include "linux/init.h" |
27 | #include "linux/cdrom.h" | 28 | #include "linux/cdrom.h" |
@@ -1308,16 +1309,15 @@ static int ubd_ioctl(struct block_device *bdev, fmode_t mode, | |||
1308 | unsigned int cmd, unsigned long arg) | 1309 | unsigned int cmd, unsigned long arg) |
1309 | { | 1310 | { |
1310 | struct ubd *ubd_dev = bdev->bd_disk->private_data; | 1311 | struct ubd *ubd_dev = bdev->bd_disk->private_data; |
1311 | struct hd_driveid ubd_id = { | 1312 | u16 ubd_id[ATA_ID_WORDS]; |
1312 | .cyls = 0, | ||
1313 | .heads = 128, | ||
1314 | .sectors = 32, | ||
1315 | }; | ||
1316 | 1313 | ||
1317 | switch (cmd) { | 1314 | switch (cmd) { |
1318 | struct cdrom_volctrl volume; | 1315 | struct cdrom_volctrl volume; |
1319 | case HDIO_GET_IDENTITY: | 1316 | case HDIO_GET_IDENTITY: |
1320 | ubd_id.cyls = ubd_dev->size / (128 * 32 * 512); | 1317 | memset(&ubd_id, 0, ATA_ID_WORDS * 2); |
1318 | ubd_id[ATA_ID_CYLS] = ubd_dev->size / (128 * 32 * 512); | ||
1319 | ubd_id[ATA_ID_HEADS] = 128; | ||
1320 | ubd_id[ATA_ID_SECTORS] = 32; | ||
1321 | if(copy_to_user((char __user *) arg, (char *) &ubd_id, | 1321 | if(copy_to_user((char __user *) arg, (char *) &ubd_id, |
1322 | sizeof(ubd_id))) | 1322 | sizeof(ubd_id))) |
1323 | return -EFAULT; | 1323 | return -EFAULT; |
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c index a1c6d07cac3e..4a28a1568d85 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c | |||
@@ -179,7 +179,7 @@ void fork_handler(void) | |||
179 | userspace(¤t->thread.regs.regs); | 179 | userspace(¤t->thread.regs.regs); |
180 | } | 180 | } |
181 | 181 | ||
182 | int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, | 182 | int copy_thread(unsigned long clone_flags, unsigned long sp, |
183 | unsigned long stack_top, struct task_struct * p, | 183 | unsigned long stack_top, struct task_struct * p, |
184 | struct pt_regs *regs) | 184 | struct pt_regs *regs) |
185 | { | 185 | { |
diff --git a/arch/um/kernel/syscall.c b/arch/um/kernel/syscall.c index c4df705b8359..a4625c7b2bf9 100644 --- a/arch/um/kernel/syscall.c +++ b/arch/um/kernel/syscall.c | |||
@@ -127,7 +127,8 @@ int kernel_execve(const char *filename, char *const argv[], char *const envp[]) | |||
127 | 127 | ||
128 | fs = get_fs(); | 128 | fs = get_fs(); |
129 | set_fs(KERNEL_DS); | 129 | set_fs(KERNEL_DS); |
130 | ret = um_execve(filename, argv, envp); | 130 | ret = um_execve((char *)filename, (char __user *__user *)argv, |
131 | (char __user *__user *) envp); | ||
131 | set_fs(fs); | 132 | set_fs(fs); |
132 | 133 | ||
133 | return ret; | 134 | return ret; |
diff --git a/arch/um/sys-i386/sys_call_table.S b/arch/um/sys-i386/sys_call_table.S index 00e5f5203eea..c6260dd6ebb9 100644 --- a/arch/um/sys-i386/sys_call_table.S +++ b/arch/um/sys-i386/sys_call_table.S | |||
@@ -9,6 +9,17 @@ | |||
9 | 9 | ||
10 | #define old_mmap old_mmap_i386 | 10 | #define old_mmap old_mmap_i386 |
11 | 11 | ||
12 | #define ptregs_fork sys_fork | ||
13 | #define ptregs_execve sys_execve | ||
14 | #define ptregs_iopl sys_iopl | ||
15 | #define ptregs_vm86old sys_vm86old | ||
16 | #define ptregs_sigreturn sys_sigreturn | ||
17 | #define ptregs_clone sys_clone | ||
18 | #define ptregs_vm86 sys_vm86 | ||
19 | #define ptregs_rt_sigreturn sys_rt_sigreturn | ||
20 | #define ptregs_sigaltstack sys_sigaltstack | ||
21 | #define ptregs_vfork sys_vfork | ||
22 | |||
12 | .section .rodata,"a" | 23 | .section .rodata,"a" |
13 | 24 | ||
14 | #include "../../x86/kernel/syscall_table_32.S" | 25 | #include "../../x86/kernel/syscall_table_32.S" |
diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug index a345cb5447a8..d8359e73317f 100644 --- a/arch/x86/Kconfig.debug +++ b/arch/x86/Kconfig.debug | |||
@@ -72,15 +72,6 @@ config DEBUG_STACK_USAGE | |||
72 | 72 | ||
73 | This option will slow down process creation somewhat. | 73 | This option will slow down process creation somewhat. |
74 | 74 | ||
75 | config DEBUG_PAGEALLOC | ||
76 | bool "Debug page memory allocations" | ||
77 | depends on DEBUG_KERNEL | ||
78 | depends on ARCH_SUPPORTS_DEBUG_PAGEALLOC | ||
79 | ---help--- | ||
80 | Unmap pages from the kernel linear mapping after free_pages(). | ||
81 | This results in a large slowdown, but helps to find certain types | ||
82 | of memory corruptions. | ||
83 | |||
84 | config DEBUG_PER_CPU_MAPS | 75 | config DEBUG_PER_CPU_MAPS |
85 | bool "Debug access to per_cpu maps" | 76 | bool "Debug access to per_cpu maps" |
86 | depends on DEBUG_KERNEL | 77 | depends on DEBUG_KERNEL |
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index db0c803170ab..a505202086e8 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S | |||
@@ -828,4 +828,6 @@ ia32_sys_call_table: | |||
828 | .quad sys_dup3 /* 330 */ | 828 | .quad sys_dup3 /* 330 */ |
829 | .quad sys_pipe2 | 829 | .quad sys_pipe2 |
830 | .quad sys_inotify_init1 | 830 | .quad sys_inotify_init1 |
831 | .quad compat_sys_preadv | ||
832 | .quad compat_sys_pwritev | ||
831 | ia32_syscall_end: | 833 | ia32_syscall_end: |
diff --git a/arch/x86/include/asm/spinlock.h b/arch/x86/include/asm/spinlock.h index 3a5696656680..e5e6caffec87 100644 --- a/arch/x86/include/asm/spinlock.h +++ b/arch/x86/include/asm/spinlock.h | |||
@@ -295,6 +295,9 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw) | |||
295 | : "+m" (rw->lock) : "i" (RW_LOCK_BIAS) : "memory"); | 295 | : "+m" (rw->lock) : "i" (RW_LOCK_BIAS) : "memory"); |
296 | } | 296 | } |
297 | 297 | ||
298 | #define __raw_read_lock_flags(lock, flags) __raw_read_lock(lock) | ||
299 | #define __raw_write_lock_flags(lock, flags) __raw_write_lock(lock) | ||
300 | |||
298 | #define _raw_spin_relax(lock) cpu_relax() | 301 | #define _raw_spin_relax(lock) cpu_relax() |
299 | #define _raw_read_relax(lock) cpu_relax() | 302 | #define _raw_read_relax(lock) cpu_relax() |
300 | #define _raw_write_relax(lock) cpu_relax() | 303 | #define _raw_write_relax(lock) cpu_relax() |
diff --git a/arch/x86/include/asm/unistd_32.h b/arch/x86/include/asm/unistd_32.h index f2bba78430a4..6e72d74cf8dc 100644 --- a/arch/x86/include/asm/unistd_32.h +++ b/arch/x86/include/asm/unistd_32.h | |||
@@ -338,6 +338,8 @@ | |||
338 | #define __NR_dup3 330 | 338 | #define __NR_dup3 330 |
339 | #define __NR_pipe2 331 | 339 | #define __NR_pipe2 331 |
340 | #define __NR_inotify_init1 332 | 340 | #define __NR_inotify_init1 332 |
341 | #define __NR_preadv 333 | ||
342 | #define __NR_pwritev 334 | ||
341 | 343 | ||
342 | #ifdef __KERNEL__ | 344 | #ifdef __KERNEL__ |
343 | 345 | ||
diff --git a/arch/x86/include/asm/unistd_64.h b/arch/x86/include/asm/unistd_64.h index d2e415e6666f..f81829462325 100644 --- a/arch/x86/include/asm/unistd_64.h +++ b/arch/x86/include/asm/unistd_64.h | |||
@@ -653,6 +653,10 @@ __SYSCALL(__NR_dup3, sys_dup3) | |||
653 | __SYSCALL(__NR_pipe2, sys_pipe2) | 653 | __SYSCALL(__NR_pipe2, sys_pipe2) |
654 | #define __NR_inotify_init1 294 | 654 | #define __NR_inotify_init1 294 |
655 | __SYSCALL(__NR_inotify_init1, sys_inotify_init1) | 655 | __SYSCALL(__NR_inotify_init1, sys_inotify_init1) |
656 | #define __NR_preadv 295 | ||
657 | __SYSCALL(__NR_preadv, sys_preadv) | ||
658 | #define __NR_pwritev 296 | ||
659 | __SYSCALL(__NR_pwritev, sys_pwritev) | ||
656 | 660 | ||
657 | 661 | ||
658 | #ifndef __NO_STUBS | 662 | #ifndef __NO_STUBS |
diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h index 9f4dfba33b28..d3a98ea1062e 100644 --- a/arch/x86/include/asm/uv/uv_hub.h +++ b/arch/x86/include/asm/uv/uv_hub.h | |||
@@ -11,11 +11,13 @@ | |||
11 | #ifndef _ASM_X86_UV_UV_HUB_H | 11 | #ifndef _ASM_X86_UV_UV_HUB_H |
12 | #define _ASM_X86_UV_UV_HUB_H | 12 | #define _ASM_X86_UV_UV_HUB_H |
13 | 13 | ||
14 | #ifdef CONFIG_X86_64 | ||
14 | #include <linux/numa.h> | 15 | #include <linux/numa.h> |
15 | #include <linux/percpu.h> | 16 | #include <linux/percpu.h> |
16 | #include <linux/timer.h> | 17 | #include <linux/timer.h> |
17 | #include <asm/types.h> | 18 | #include <asm/types.h> |
18 | #include <asm/percpu.h> | 19 | #include <asm/percpu.h> |
20 | #include <asm/uv/uv_mmrs.h> | ||
19 | 21 | ||
20 | 22 | ||
21 | /* | 23 | /* |
@@ -397,6 +399,7 @@ static inline void uv_set_scir_bits(unsigned char value) | |||
397 | uv_write_local_mmr8(uv_hub_info->scir.offset, value); | 399 | uv_write_local_mmr8(uv_hub_info->scir.offset, value); |
398 | } | 400 | } |
399 | } | 401 | } |
402 | |||
400 | static inline void uv_set_cpu_scir_bits(int cpu, unsigned char value) | 403 | static inline void uv_set_cpu_scir_bits(int cpu, unsigned char value) |
401 | { | 404 | { |
402 | if (uv_cpu_hub_info(cpu)->scir.state != value) { | 405 | if (uv_cpu_hub_info(cpu)->scir.state != value) { |
@@ -405,4 +408,15 @@ static inline void uv_set_cpu_scir_bits(int cpu, unsigned char value) | |||
405 | } | 408 | } |
406 | } | 409 | } |
407 | 410 | ||
411 | static inline void uv_hub_send_ipi(int pnode, int apicid, int vector) | ||
412 | { | ||
413 | unsigned long val; | ||
414 | |||
415 | val = (1UL << UVH_IPI_INT_SEND_SHFT) | | ||
416 | ((apicid & 0x3f) << UVH_IPI_INT_APIC_ID_SHFT) | | ||
417 | (vector << UVH_IPI_INT_VECTOR_SHFT); | ||
418 | uv_write_global_mmr64(pnode, UVH_IPI_INT, val); | ||
419 | } | ||
420 | |||
421 | #endif /* CONFIG_X86_64 */ | ||
408 | #endif /* _ASM_X86_UV_UV_HUB_H */ | 422 | #endif /* _ASM_X86_UV_UV_HUB_H */ |
diff --git a/arch/x86/include/asm/uv/uv_mmrs.h b/arch/x86/include/asm/uv/uv_mmrs.h index dd627793a234..db68ac8a5ac2 100644 --- a/arch/x86/include/asm/uv/uv_mmrs.h +++ b/arch/x86/include/asm/uv/uv_mmrs.h | |||
@@ -1,3 +1,4 @@ | |||
1 | |||
1 | /* | 2 | /* |
2 | * This file is subject to the terms and conditions of the GNU General Public | 3 | * This file is subject to the terms and conditions of the GNU General Public |
3 | * License. See the file "COPYING" in the main directory of this archive | 4 | * License. See the file "COPYING" in the main directory of this archive |
@@ -243,6 +244,158 @@ union uvh_event_occurred0_u { | |||
243 | #define UVH_EVENT_OCCURRED0_ALIAS_32 0x005f0 | 244 | #define UVH_EVENT_OCCURRED0_ALIAS_32 0x005f0 |
244 | 245 | ||
245 | /* ========================================================================= */ | 246 | /* ========================================================================= */ |
247 | /* UVH_GR0_TLB_INT0_CONFIG */ | ||
248 | /* ========================================================================= */ | ||
249 | #define UVH_GR0_TLB_INT0_CONFIG 0x61b00UL | ||
250 | |||
251 | #define UVH_GR0_TLB_INT0_CONFIG_VECTOR_SHFT 0 | ||
252 | #define UVH_GR0_TLB_INT0_CONFIG_VECTOR_MASK 0x00000000000000ffUL | ||
253 | #define UVH_GR0_TLB_INT0_CONFIG_DM_SHFT 8 | ||
254 | #define UVH_GR0_TLB_INT0_CONFIG_DM_MASK 0x0000000000000700UL | ||
255 | #define UVH_GR0_TLB_INT0_CONFIG_DESTMODE_SHFT 11 | ||
256 | #define UVH_GR0_TLB_INT0_CONFIG_DESTMODE_MASK 0x0000000000000800UL | ||
257 | #define UVH_GR0_TLB_INT0_CONFIG_STATUS_SHFT 12 | ||
258 | #define UVH_GR0_TLB_INT0_CONFIG_STATUS_MASK 0x0000000000001000UL | ||
259 | #define UVH_GR0_TLB_INT0_CONFIG_P_SHFT 13 | ||
260 | #define UVH_GR0_TLB_INT0_CONFIG_P_MASK 0x0000000000002000UL | ||
261 | #define UVH_GR0_TLB_INT0_CONFIG_T_SHFT 15 | ||
262 | #define UVH_GR0_TLB_INT0_CONFIG_T_MASK 0x0000000000008000UL | ||
263 | #define UVH_GR0_TLB_INT0_CONFIG_M_SHFT 16 | ||
264 | #define UVH_GR0_TLB_INT0_CONFIG_M_MASK 0x0000000000010000UL | ||
265 | #define UVH_GR0_TLB_INT0_CONFIG_APIC_ID_SHFT 32 | ||
266 | #define UVH_GR0_TLB_INT0_CONFIG_APIC_ID_MASK 0xffffffff00000000UL | ||
267 | |||
268 | union uvh_gr0_tlb_int0_config_u { | ||
269 | unsigned long v; | ||
270 | struct uvh_gr0_tlb_int0_config_s { | ||
271 | unsigned long vector_ : 8; /* RW */ | ||
272 | unsigned long dm : 3; /* RW */ | ||
273 | unsigned long destmode : 1; /* RW */ | ||
274 | unsigned long status : 1; /* RO */ | ||
275 | unsigned long p : 1; /* RO */ | ||
276 | unsigned long rsvd_14 : 1; /* */ | ||
277 | unsigned long t : 1; /* RO */ | ||
278 | unsigned long m : 1; /* RW */ | ||
279 | unsigned long rsvd_17_31: 15; /* */ | ||
280 | unsigned long apic_id : 32; /* RW */ | ||
281 | } s; | ||
282 | }; | ||
283 | |||
284 | /* ========================================================================= */ | ||
285 | /* UVH_GR0_TLB_INT1_CONFIG */ | ||
286 | /* ========================================================================= */ | ||
287 | #define UVH_GR0_TLB_INT1_CONFIG 0x61b40UL | ||
288 | |||
289 | #define UVH_GR0_TLB_INT1_CONFIG_VECTOR_SHFT 0 | ||
290 | #define UVH_GR0_TLB_INT1_CONFIG_VECTOR_MASK 0x00000000000000ffUL | ||
291 | #define UVH_GR0_TLB_INT1_CONFIG_DM_SHFT 8 | ||
292 | #define UVH_GR0_TLB_INT1_CONFIG_DM_MASK 0x0000000000000700UL | ||
293 | #define UVH_GR0_TLB_INT1_CONFIG_DESTMODE_SHFT 11 | ||
294 | #define UVH_GR0_TLB_INT1_CONFIG_DESTMODE_MASK 0x0000000000000800UL | ||
295 | #define UVH_GR0_TLB_INT1_CONFIG_STATUS_SHFT 12 | ||
296 | #define UVH_GR0_TLB_INT1_CONFIG_STATUS_MASK 0x0000000000001000UL | ||
297 | #define UVH_GR0_TLB_INT1_CONFIG_P_SHFT 13 | ||
298 | #define UVH_GR0_TLB_INT1_CONFIG_P_MASK 0x0000000000002000UL | ||
299 | #define UVH_GR0_TLB_INT1_CONFIG_T_SHFT 15 | ||
300 | #define UVH_GR0_TLB_INT1_CONFIG_T_MASK 0x0000000000008000UL | ||
301 | #define UVH_GR0_TLB_INT1_CONFIG_M_SHFT 16 | ||
302 | #define UVH_GR0_TLB_INT1_CONFIG_M_MASK 0x0000000000010000UL | ||
303 | #define UVH_GR0_TLB_INT1_CONFIG_APIC_ID_SHFT 32 | ||
304 | #define UVH_GR0_TLB_INT1_CONFIG_APIC_ID_MASK 0xffffffff00000000UL | ||
305 | |||
306 | union uvh_gr0_tlb_int1_config_u { | ||
307 | unsigned long v; | ||
308 | struct uvh_gr0_tlb_int1_config_s { | ||
309 | unsigned long vector_ : 8; /* RW */ | ||
310 | unsigned long dm : 3; /* RW */ | ||
311 | unsigned long destmode : 1; /* RW */ | ||
312 | unsigned long status : 1; /* RO */ | ||
313 | unsigned long p : 1; /* RO */ | ||
314 | unsigned long rsvd_14 : 1; /* */ | ||
315 | unsigned long t : 1; /* RO */ | ||
316 | unsigned long m : 1; /* RW */ | ||
317 | unsigned long rsvd_17_31: 15; /* */ | ||
318 | unsigned long apic_id : 32; /* RW */ | ||
319 | } s; | ||
320 | }; | ||
321 | |||
322 | /* ========================================================================= */ | ||
323 | /* UVH_GR1_TLB_INT0_CONFIG */ | ||
324 | /* ========================================================================= */ | ||
325 | #define UVH_GR1_TLB_INT0_CONFIG 0x61f00UL | ||
326 | |||
327 | #define UVH_GR1_TLB_INT0_CONFIG_VECTOR_SHFT 0 | ||
328 | #define UVH_GR1_TLB_INT0_CONFIG_VECTOR_MASK 0x00000000000000ffUL | ||
329 | #define UVH_GR1_TLB_INT0_CONFIG_DM_SHFT 8 | ||
330 | #define UVH_GR1_TLB_INT0_CONFIG_DM_MASK 0x0000000000000700UL | ||
331 | #define UVH_GR1_TLB_INT0_CONFIG_DESTMODE_SHFT 11 | ||
332 | #define UVH_GR1_TLB_INT0_CONFIG_DESTMODE_MASK 0x0000000000000800UL | ||
333 | #define UVH_GR1_TLB_INT0_CONFIG_STATUS_SHFT 12 | ||
334 | #define UVH_GR1_TLB_INT0_CONFIG_STATUS_MASK 0x0000000000001000UL | ||
335 | #define UVH_GR1_TLB_INT0_CONFIG_P_SHFT 13 | ||
336 | #define UVH_GR1_TLB_INT0_CONFIG_P_MASK 0x0000000000002000UL | ||
337 | #define UVH_GR1_TLB_INT0_CONFIG_T_SHFT 15 | ||
338 | #define UVH_GR1_TLB_INT0_CONFIG_T_MASK 0x0000000000008000UL | ||
339 | #define UVH_GR1_TLB_INT0_CONFIG_M_SHFT 16 | ||
340 | #define UVH_GR1_TLB_INT0_CONFIG_M_MASK 0x0000000000010000UL | ||
341 | #define UVH_GR1_TLB_INT0_CONFIG_APIC_ID_SHFT 32 | ||
342 | #define UVH_GR1_TLB_INT0_CONFIG_APIC_ID_MASK 0xffffffff00000000UL | ||
343 | |||
344 | union uvh_gr1_tlb_int0_config_u { | ||
345 | unsigned long v; | ||
346 | struct uvh_gr1_tlb_int0_config_s { | ||
347 | unsigned long vector_ : 8; /* RW */ | ||
348 | unsigned long dm : 3; /* RW */ | ||
349 | unsigned long destmode : 1; /* RW */ | ||
350 | unsigned long status : 1; /* RO */ | ||
351 | unsigned long p : 1; /* RO */ | ||
352 | unsigned long rsvd_14 : 1; /* */ | ||
353 | unsigned long t : 1; /* RO */ | ||
354 | unsigned long m : 1; /* RW */ | ||
355 | unsigned long rsvd_17_31: 15; /* */ | ||
356 | unsigned long apic_id : 32; /* RW */ | ||
357 | } s; | ||
358 | }; | ||
359 | |||
360 | /* ========================================================================= */ | ||
361 | /* UVH_GR1_TLB_INT1_CONFIG */ | ||
362 | /* ========================================================================= */ | ||
363 | #define UVH_GR1_TLB_INT1_CONFIG 0x61f40UL | ||
364 | |||
365 | #define UVH_GR1_TLB_INT1_CONFIG_VECTOR_SHFT 0 | ||
366 | #define UVH_GR1_TLB_INT1_CONFIG_VECTOR_MASK 0x00000000000000ffUL | ||
367 | #define UVH_GR1_TLB_INT1_CONFIG_DM_SHFT 8 | ||
368 | #define UVH_GR1_TLB_INT1_CONFIG_DM_MASK 0x0000000000000700UL | ||
369 | #define UVH_GR1_TLB_INT1_CONFIG_DESTMODE_SHFT 11 | ||
370 | #define UVH_GR1_TLB_INT1_CONFIG_DESTMODE_MASK 0x0000000000000800UL | ||
371 | #define UVH_GR1_TLB_INT1_CONFIG_STATUS_SHFT 12 | ||
372 | #define UVH_GR1_TLB_INT1_CONFIG_STATUS_MASK 0x0000000000001000UL | ||
373 | #define UVH_GR1_TLB_INT1_CONFIG_P_SHFT 13 | ||
374 | #define UVH_GR1_TLB_INT1_CONFIG_P_MASK 0x0000000000002000UL | ||
375 | #define UVH_GR1_TLB_INT1_CONFIG_T_SHFT 15 | ||
376 | #define UVH_GR1_TLB_INT1_CONFIG_T_MASK 0x0000000000008000UL | ||
377 | #define UVH_GR1_TLB_INT1_CONFIG_M_SHFT 16 | ||
378 | #define UVH_GR1_TLB_INT1_CONFIG_M_MASK 0x0000000000010000UL | ||
379 | #define UVH_GR1_TLB_INT1_CONFIG_APIC_ID_SHFT 32 | ||
380 | #define UVH_GR1_TLB_INT1_CONFIG_APIC_ID_MASK 0xffffffff00000000UL | ||
381 | |||
382 | union uvh_gr1_tlb_int1_config_u { | ||
383 | unsigned long v; | ||
384 | struct uvh_gr1_tlb_int1_config_s { | ||
385 | unsigned long vector_ : 8; /* RW */ | ||
386 | unsigned long dm : 3; /* RW */ | ||
387 | unsigned long destmode : 1; /* RW */ | ||
388 | unsigned long status : 1; /* RO */ | ||
389 | unsigned long p : 1; /* RO */ | ||
390 | unsigned long rsvd_14 : 1; /* */ | ||
391 | unsigned long t : 1; /* RO */ | ||
392 | unsigned long m : 1; /* RW */ | ||
393 | unsigned long rsvd_17_31: 15; /* */ | ||
394 | unsigned long apic_id : 32; /* RW */ | ||
395 | } s; | ||
396 | }; | ||
397 | |||
398 | /* ========================================================================= */ | ||
246 | /* UVH_INT_CMPB */ | 399 | /* UVH_INT_CMPB */ |
247 | /* ========================================================================= */ | 400 | /* ========================================================================= */ |
248 | #define UVH_INT_CMPB 0x22080UL | 401 | #define UVH_INT_CMPB 0x22080UL |
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c index 1bd6da1f8fad..1248318436e8 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c | |||
@@ -118,17 +118,12 @@ static int uv_wakeup_secondary(int phys_apicid, unsigned long start_rip) | |||
118 | 118 | ||
119 | static void uv_send_IPI_one(int cpu, int vector) | 119 | static void uv_send_IPI_one(int cpu, int vector) |
120 | { | 120 | { |
121 | unsigned long val, apicid; | 121 | unsigned long apicid; |
122 | int pnode; | 122 | int pnode; |
123 | 123 | ||
124 | apicid = per_cpu(x86_cpu_to_apicid, cpu); | 124 | apicid = per_cpu(x86_cpu_to_apicid, cpu); |
125 | pnode = uv_apicid_to_pnode(apicid); | 125 | pnode = uv_apicid_to_pnode(apicid); |
126 | 126 | uv_hub_send_ipi(pnode, apicid, vector); | |
127 | val = (1UL << UVH_IPI_INT_SEND_SHFT) | | ||
128 | (apicid << UVH_IPI_INT_APIC_ID_SHFT) | | ||
129 | (vector << UVH_IPI_INT_VECTOR_SHFT); | ||
130 | |||
131 | uv_write_global_mmr64(pnode, UVH_IPI_INT, val); | ||
132 | } | 127 | } |
133 | 128 | ||
134 | static void uv_send_IPI_mask(const struct cpumask *mask, int vector) | 129 | static void uv_send_IPI_mask(const struct cpumask *mask, int vector) |
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index 14014d766cad..76f8f84043a2 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c | |||
@@ -245,7 +245,7 @@ void prepare_to_copy(struct task_struct *tsk) | |||
245 | unlazy_fpu(tsk); | 245 | unlazy_fpu(tsk); |
246 | } | 246 | } |
247 | 247 | ||
248 | int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, | 248 | int copy_thread(unsigned long clone_flags, unsigned long sp, |
249 | unsigned long unused, | 249 | unsigned long unused, |
250 | struct task_struct *p, struct pt_regs *regs) | 250 | struct task_struct *p, struct pt_regs *regs) |
251 | { | 251 | { |
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index abb7e6a7f0c6..b751a41392b1 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
@@ -278,7 +278,7 @@ void prepare_to_copy(struct task_struct *tsk) | |||
278 | unlazy_fpu(tsk); | 278 | unlazy_fpu(tsk); |
279 | } | 279 | } |
280 | 280 | ||
281 | int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, | 281 | int copy_thread(unsigned long clone_flags, unsigned long sp, |
282 | unsigned long unused, | 282 | unsigned long unused, |
283 | struct task_struct *p, struct pt_regs *regs) | 283 | struct task_struct *p, struct pt_regs *regs) |
284 | { | 284 | { |
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index 19378715f415..b7cc21bc6ae0 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c | |||
@@ -1455,6 +1455,6 @@ asmregparm void syscall_trace_leave(struct pt_regs *regs) | |||
1455 | * system call instruction. | 1455 | * system call instruction. |
1456 | */ | 1456 | */ |
1457 | if (test_thread_flag(TIF_SINGLESTEP) && | 1457 | if (test_thread_flag(TIF_SINGLESTEP) && |
1458 | tracehook_consider_fatal_signal(current, SIGTRAP, SIG_DFL)) | 1458 | tracehook_consider_fatal_signal(current, SIGTRAP)) |
1459 | send_sigtrap(current, regs, 0, TRAP_BRKPT); | 1459 | send_sigtrap(current, regs, 0, TRAP_BRKPT); |
1460 | } | 1460 | } |
diff --git a/arch/x86/kernel/syscall_table_32.S b/arch/x86/kernel/syscall_table_32.S index 3bdb64829b82..ff5c8736b491 100644 --- a/arch/x86/kernel/syscall_table_32.S +++ b/arch/x86/kernel/syscall_table_32.S | |||
@@ -332,3 +332,5 @@ ENTRY(sys_call_table) | |||
332 | .long sys_dup3 /* 330 */ | 332 | .long sys_dup3 /* 330 */ |
333 | .long sys_pipe2 | 333 | .long sys_pipe2 |
334 | .long sys_inotify_init1 | 334 | .long sys_inotify_init1 |
335 | .long sys_preadv | ||
336 | .long sys_pwritev | ||
diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c index 5bc5d1688c1c..8126e8d1a2a4 100644 --- a/arch/x86/mm/highmem_32.c +++ b/arch/x86/mm/highmem_32.c | |||
@@ -40,7 +40,6 @@ void *kmap_atomic_prot(struct page *page, enum km_type type, pgprot_t prot) | |||
40 | 40 | ||
41 | debug_kmap_atomic(type); | 41 | debug_kmap_atomic(type); |
42 | 42 | ||
43 | debug_kmap_atomic(type); | ||
44 | idx = type + KM_TYPE_NR*smp_processor_id(); | 43 | idx = type + KM_TYPE_NR*smp_processor_id(); |
45 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | 44 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); |
46 | BUG_ON(!pte_none(*(kmap_pte-idx))); | 45 | BUG_ON(!pte_none(*(kmap_pte-idx))); |
diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c index bff0c9032f8c..e331f77348a7 100644 --- a/arch/x86/mm/iomap_32.c +++ b/arch/x86/mm/iomap_32.c | |||
@@ -39,6 +39,7 @@ void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot) | |||
39 | 39 | ||
40 | pagefault_disable(); | 40 | pagefault_disable(); |
41 | 41 | ||
42 | debug_kmap_atomic(type); | ||
42 | idx = type + KM_TYPE_NR * smp_processor_id(); | 43 | idx = type + KM_TYPE_NR * smp_processor_id(); |
43 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | 44 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); |
44 | set_pte(kmap_pte - idx, pfn_pte(pfn, prot)); | 45 | set_pte(kmap_pte - idx, pfn_pte(pfn, prot)); |
@@ -72,7 +73,6 @@ iounmap_atomic(void *kvaddr, enum km_type type) | |||
72 | unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK; | 73 | unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK; |
73 | enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id(); | 74 | enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id(); |
74 | 75 | ||
75 | debug_kmap_atomic(type); | ||
76 | /* | 76 | /* |
77 | * Force other mappings to Oops if they'll try to access this pte | 77 | * Force other mappings to Oops if they'll try to access this pte |
78 | * without first remap it. Keeping stale mappings around is a bad idea | 78 | * without first remap it. Keeping stale mappings around is a bad idea |
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c index 9185597eb6a0..031f36685710 100644 --- a/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c | |||
@@ -172,7 +172,7 @@ void prepare_to_copy(struct task_struct *tsk) | |||
172 | * childregs. | 172 | * childregs. |
173 | */ | 173 | */ |
174 | 174 | ||
175 | int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | 175 | int copy_thread(unsigned long clone_flags, unsigned long usp, |
176 | unsigned long unused, | 176 | unsigned long unused, |
177 | struct task_struct * p, struct pt_regs * regs) | 177 | struct task_struct * p, struct pt_regs * regs) |
178 | { | 178 | { |