diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-30 22:31:20 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-30 22:31:20 -0500 |
| commit | 528ba4ef855bd184b7d68e3fa596b420fb4fa86a (patch) | |
| tree | 9b7a296f2ae3942ca401bd099ae92d00bbe366a9 | |
| parent | df6c0cd9a872ebf2298f5d66d8c789f62dbe35fc (diff) | |
| parent | 21e9ac7b2dd96dfca997313bae6d9a8f642635c7 (diff) | |
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
[MIPS] MIPS doesn't need compat_sys_getdents.
[MIPS] JMR3927: Fixup another victim of the irq pt_regs cleanup.
[MIPS] EMMA 2 / Markeins: struct resource takes physical addresses.
[MIPS] EMMA 2 / Markeins: Convert to name struct resource initialization.
[MIPS] EMMA 2 / Markeins: Formitting fixes split from actual address fixes.
[MIPS] EMMA 2 / Markeins: Fix build wreckage due to genirq wreckage.
[MIPS] Ocelot G: Fix build error and numerous warnings.
[MIPS] Fix return value of TXX9 SPI interrupt handler
[MIPS] Au1000: Fix warning about unused variable.
[MIPS] Wire up getcpu(2) and epoll_wait(2) syscalls.
[MIPS] Make SB1 cache flushes not to use on_each_cpu
[MIPS] Fix warning about unused definition in c-sb1.c
[MIPS] SMTC: Make 8 the default number of processors.
[MIPS] Oprofile: Fix MIPSxx counter number detection.
[MIPS] Au1xx0 code sets incorrect mips_hpt_frequency
[MIPS] Oprofile: fix on non-VSMP / non-SMTC SMP configurations.
| -rw-r--r-- | arch/mips/Kconfig | 3 | ||||
| -rw-r--r-- | arch/mips/au1000/common/time.c | 8 | ||||
| -rw-r--r-- | arch/mips/emma2rh/common/irq_emma2rh.c | 2 | ||||
| -rw-r--r-- | arch/mips/emma2rh/markeins/irq_markeins.c | 4 | ||||
| -rw-r--r-- | arch/mips/emma2rh/markeins/platform.c | 88 | ||||
| -rw-r--r-- | arch/mips/jmr3927/rbhma3100/irq.c | 3 | ||||
| -rw-r--r-- | arch/mips/kernel/scall32-o32.S | 2 | ||||
| -rw-r--r-- | arch/mips/kernel/scall64-64.S | 2 | ||||
| -rw-r--r-- | arch/mips/kernel/scall64-n32.S | 2 | ||||
| -rw-r--r-- | arch/mips/kernel/scall64-o32.S | 2 | ||||
| -rw-r--r-- | arch/mips/mm/c-sb1.c | 18 | ||||
| -rw-r--r-- | arch/mips/momentum/ocelot_g/ocelot_pld.h | 6 | ||||
| -rw-r--r-- | arch/mips/momentum/ocelot_g/setup.c | 5 | ||||
| -rw-r--r-- | arch/mips/oprofile/op_model_mipsxx.c | 12 | ||||
| -rw-r--r-- | arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c | 8 | ||||
| -rw-r--r-- | include/asm-mips/unistd.h | 19 |
16 files changed, 121 insertions, 63 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 14af6cce2f..74ba763781 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
| @@ -408,7 +408,7 @@ config MOMENCO_OCELOT_C | |||
| 408 | select SWAP_IO_SPACE | 408 | select SWAP_IO_SPACE |
| 409 | select SYS_HAS_CPU_RM7000 | 409 | select SYS_HAS_CPU_RM7000 |
| 410 | select SYS_SUPPORTS_32BIT_KERNEL | 410 | select SYS_SUPPORTS_32BIT_KERNEL |
| 411 | select SYS_SUPPORTS_64BIT_KERNEL | 411 | select SYS_SUPPORTS_64BIT_KERNEL if BROKEN |
| 412 | select SYS_SUPPORTS_BIG_ENDIAN | 412 | select SYS_SUPPORTS_BIG_ENDIAN |
| 413 | help | 413 | help |
| 414 | The Ocelot is a MIPS-based Single Board Computer (SBC) made by | 414 | The Ocelot is a MIPS-based Single Board Computer (SBC) made by |
| @@ -1690,6 +1690,7 @@ config NR_CPUS | |||
| 1690 | depends on SMP | 1690 | depends on SMP |
| 1691 | default "64" if SGI_IP27 | 1691 | default "64" if SGI_IP27 |
| 1692 | default "2" | 1692 | default "2" |
| 1693 | default "8" if MIPS_MT_SMTC | ||
| 1693 | help | 1694 | help |
| 1694 | This allows you to specify the maximum number of CPUs which this | 1695 | This allows you to specify the maximum number of CPUs which this |
| 1695 | kernel will support. The maximum supported value is 32 for 32-bit | 1696 | kernel will support. The maximum supported value is 32 for 32-bit |
diff --git a/arch/mips/au1000/common/time.c b/arch/mips/au1000/common/time.c index 94f09194d6..6768638883 100644 --- a/arch/mips/au1000/common/time.c +++ b/arch/mips/au1000/common/time.c | |||
| @@ -82,7 +82,6 @@ unsigned long wtimer; | |||
| 82 | void mips_timer_interrupt(void) | 82 | void mips_timer_interrupt(void) |
| 83 | { | 83 | { |
| 84 | int irq = 63; | 84 | int irq = 63; |
| 85 | unsigned long count; | ||
| 86 | 85 | ||
| 87 | irq_enter(); | 86 | irq_enter(); |
| 88 | kstat_this_cpu.irqs[irq]++; | 87 | kstat_this_cpu.irqs[irq]++; |
| @@ -231,7 +230,6 @@ wakeup_counter0_set(int ticks) | |||
| 231 | */ | 230 | */ |
| 232 | unsigned long cal_r4koff(void) | 231 | unsigned long cal_r4koff(void) |
| 233 | { | 232 | { |
| 234 | unsigned long count; | ||
| 235 | unsigned long cpu_speed; | 233 | unsigned long cpu_speed; |
| 236 | unsigned long flags; | 234 | unsigned long flags; |
| 237 | unsigned long counter; | 235 | unsigned long counter; |
| @@ -258,7 +256,7 @@ unsigned long cal_r4koff(void) | |||
| 258 | 256 | ||
| 259 | #if defined(CONFIG_AU1000_USE32K) | 257 | #if defined(CONFIG_AU1000_USE32K) |
| 260 | { | 258 | { |
| 261 | unsigned long start, end; | 259 | unsigned long start, end, count; |
| 262 | 260 | ||
| 263 | start = au_readl(SYS_RTCREAD); | 261 | start = au_readl(SYS_RTCREAD); |
| 264 | start += 2; | 262 | start += 2; |
| @@ -282,7 +280,6 @@ unsigned long cal_r4koff(void) | |||
| 282 | #else | 280 | #else |
| 283 | cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) * | 281 | cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) * |
| 284 | AU1000_SRC_CLK; | 282 | AU1000_SRC_CLK; |
| 285 | count = cpu_speed / 2; | ||
| 286 | #endif | 283 | #endif |
| 287 | } | 284 | } |
| 288 | else { | 285 | else { |
| @@ -291,10 +288,9 @@ unsigned long cal_r4koff(void) | |||
| 291 | * NOTE: some old silicon doesn't allow reading the PLL. | 288 | * NOTE: some old silicon doesn't allow reading the PLL. |
| 292 | */ | 289 | */ |
| 293 | cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) * AU1000_SRC_CLK; | 290 | cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) * AU1000_SRC_CLK; |
| 294 | count = cpu_speed / 2; | ||
| 295 | no_au1xxx_32khz = 1; | 291 | no_au1xxx_32khz = 1; |
| 296 | } | 292 | } |
| 297 | mips_hpt_frequency = count; | 293 | mips_hpt_frequency = cpu_speed; |
| 298 | // Equation: Baudrate = CPU / (SD * 2 * CLKDIV * 16) | 294 | // Equation: Baudrate = CPU / (SD * 2 * CLKDIV * 16) |
| 299 | set_au1x00_uart_baud_base(cpu_speed / (2 * ((int)(au_readl(SYS_POWERCTRL)&0x03) + 2) * 16)); | 295 | set_au1x00_uart_baud_base(cpu_speed / (2 * ((int)(au_readl(SYS_POWERCTRL)&0x03) + 2) * 16)); |
| 300 | spin_unlock_irqrestore(&time_lock, flags); | 296 | spin_unlock_irqrestore(&time_lock, flags); |
diff --git a/arch/mips/emma2rh/common/irq_emma2rh.c b/arch/mips/emma2rh/common/irq_emma2rh.c index 7c930860c9..197ed4c2ba 100644 --- a/arch/mips/emma2rh/common/irq_emma2rh.c +++ b/arch/mips/emma2rh/common/irq_emma2rh.c | |||
| @@ -97,7 +97,7 @@ void emma2rh_irq_init(u32 irq_base) | |||
| 97 | irq_desc[i].status = IRQ_DISABLED; | 97 | irq_desc[i].status = IRQ_DISABLED; |
| 98 | irq_desc[i].action = NULL; | 98 | irq_desc[i].action = NULL; |
| 99 | irq_desc[i].depth = 1; | 99 | irq_desc[i].depth = 1; |
| 100 | irq_desc[i].handler = &emma2rh_irq_controller; | 100 | irq_desc[i].chip = &emma2rh_irq_controller; |
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | emma2rh_irq_base = irq_base; | 103 | emma2rh_irq_base = irq_base; |
diff --git a/arch/mips/emma2rh/markeins/irq_markeins.c b/arch/mips/emma2rh/markeins/irq_markeins.c index f23ae9fcff..0b36eb001e 100644 --- a/arch/mips/emma2rh/markeins/irq_markeins.c +++ b/arch/mips/emma2rh/markeins/irq_markeins.c | |||
| @@ -86,7 +86,7 @@ void emma2rh_sw_irq_init(u32 irq_base) | |||
| 86 | irq_desc[i].status = IRQ_DISABLED; | 86 | irq_desc[i].status = IRQ_DISABLED; |
| 87 | irq_desc[i].action = NULL; | 87 | irq_desc[i].action = NULL; |
| 88 | irq_desc[i].depth = 2; | 88 | irq_desc[i].depth = 2; |
| 89 | irq_desc[i].handler = &emma2rh_sw_irq_controller; | 89 | irq_desc[i].chip = &emma2rh_sw_irq_controller; |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | emma2rh_sw_irq_base = irq_base; | 92 | emma2rh_sw_irq_base = irq_base; |
| @@ -166,7 +166,7 @@ void emma2rh_gpio_irq_init(u32 irq_base) | |||
| 166 | irq_desc[i].status = IRQ_DISABLED; | 166 | irq_desc[i].status = IRQ_DISABLED; |
| 167 | irq_desc[i].action = NULL; | 167 | irq_desc[i].action = NULL; |
| 168 | irq_desc[i].depth = 2; | 168 | irq_desc[i].depth = 2; |
| 169 | irq_desc[i].handler = &emma2rh_gpio_irq_controller; | 169 | irq_desc[i].chip = &emma2rh_gpio_irq_controller; |
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | emma2rh_gpio_irq_base = irq_base; | 172 | emma2rh_gpio_irq_base = irq_base; |
diff --git a/arch/mips/emma2rh/markeins/platform.c b/arch/mips/emma2rh/markeins/platform.c index 15cc61df36..11567702b1 100644 --- a/arch/mips/emma2rh/markeins/platform.c +++ b/arch/mips/emma2rh/markeins/platform.c | |||
| @@ -44,18 +44,45 @@ | |||
| 44 | #define I2C_EMMA2RH "emma2rh-iic" /* must be in sync with IIC driver */ | 44 | #define I2C_EMMA2RH "emma2rh-iic" /* must be in sync with IIC driver */ |
| 45 | 45 | ||
| 46 | static struct resource i2c_emma_resources_0[] = { | 46 | static struct resource i2c_emma_resources_0[] = { |
| 47 | { NULL, EMMA2RH_IRQ_PIIC0, EMMA2RH_IRQ_PIIC0, IORESOURCE_IRQ }, | 47 | { |
| 48 | { NULL, KSEG1ADDR(EMMA2RH_PIIC0_BASE), KSEG1ADDR(EMMA2RH_PIIC0_BASE + 0x1000), 0 }, | 48 | .name = NULL, |
| 49 | .start = EMMA2RH_IRQ_PIIC0, | ||
| 50 | .end = EMMA2RH_IRQ_PIIC0, | ||
| 51 | .flags = IORESOURCE_IRQ | ||
| 52 | }, { | ||
| 53 | .name = NULL, | ||
| 54 | .start = EMMA2RH_PIIC0_BASE, | ||
| 55 | .end = EMMA2RH_PIIC0_BASE + 0x1000, | ||
| 56 | .flags = 0 | ||
| 57 | }, | ||
| 49 | }; | 58 | }; |
| 50 | 59 | ||
| 51 | struct resource i2c_emma_resources_1[] = { | 60 | struct resource i2c_emma_resources_1[] = { |
| 52 | { NULL, EMMA2RH_IRQ_PIIC1, EMMA2RH_IRQ_PIIC1, IORESOURCE_IRQ }, | 61 | { |
| 53 | { NULL, KSEG1ADDR(EMMA2RH_PIIC1_BASE), KSEG1ADDR(EMMA2RH_PIIC1_BASE + 0x1000), 0 }, | 62 | .name = NULL, |
| 63 | .start = EMMA2RH_IRQ_PIIC1, | ||
| 64 | .end = EMMA2RH_IRQ_PIIC1, | ||
| 65 | .flags = IORESOURCE_IRQ | ||
| 66 | }, { | ||
| 67 | .name = NULL, | ||
| 68 | .start = EMMA2RH_PIIC1_BASE, | ||
| 69 | .end = EMMA2RH_PIIC1_BASE + 0x1000, | ||
| 70 | .flags = 0 | ||
| 71 | }, | ||
| 54 | }; | 72 | }; |
| 55 | 73 | ||
| 56 | struct resource i2c_emma_resources_2[] = { | 74 | struct resource i2c_emma_resources_2[] = { |
| 57 | { NULL, EMMA2RH_IRQ_PIIC2, EMMA2RH_IRQ_PIIC2, IORESOURCE_IRQ }, | 75 | { |
| 58 | { NULL, KSEG1ADDR(EMMA2RH_PIIC2_BASE), KSEG1ADDR(EMMA2RH_PIIC2_BASE + 0x1000), 0 }, | 76 | .name = NULL, |
| 77 | .start = EMMA2RH_IRQ_PIIC2, | ||
| 78 | .end = EMMA2RH_IRQ_PIIC2, | ||
| 79 | .flags = IORESOURCE_IRQ | ||
| 80 | }, { | ||
| 81 | .name = NULL, | ||
| 82 | .start = EMMA2RH_PIIC2_BASE, | ||
| 83 | .end = EMMA2RH_PIIC2_BASE + 0x1000, | ||
| 84 | .flags = 0 | ||
| 85 | }, | ||
| 59 | }; | 86 | }; |
| 60 | 87 | ||
| 61 | struct platform_device i2c_emma_devices[] = { | 88 | struct platform_device i2c_emma_devices[] = { |
| @@ -83,32 +110,29 @@ struct platform_device i2c_emma_devices[] = { | |||
| 83 | #define EMMA2RH_SERIAL_FLAGS UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 110 | #define EMMA2RH_SERIAL_FLAGS UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
| 84 | 111 | ||
| 85 | static struct plat_serial8250_port platform_serial_ports[] = { | 112 | static struct plat_serial8250_port platform_serial_ports[] = { |
| 86 | [0] = { | 113 | [0] = { |
| 87 | .membase = (void __iomem*)KSEG1ADDR(EMMA2RH_PFUR0_BASE + 3), | 114 | .membase= (void __iomem*)KSEG1ADDR(EMMA2RH_PFUR0_BASE + 3), |
| 88 | .irq = EMMA2RH_IRQ_PFUR0, | 115 | .irq = EMMA2RH_IRQ_PFUR0, |
| 89 | .uartclk = EMMA2RH_SERIAL_CLOCK, | 116 | .uartclk = EMMA2RH_SERIAL_CLOCK, |
| 90 | .regshift = 4, | 117 | .regshift = 4, |
| 91 | .iotype = UPIO_MEM, | 118 | .iotype = UPIO_MEM, |
| 92 | .flags = EMMA2RH_SERIAL_FLAGS, | 119 | .flags = EMMA2RH_SERIAL_FLAGS, |
| 93 | }, | 120 | }, [1] = { |
| 94 | [1] = { | 121 | .membase = (void __iomem*)KSEG1ADDR(EMMA2RH_PFUR1_BASE + 3), |
| 95 | .membase = (void __iomem*)KSEG1ADDR(EMMA2RH_PFUR1_BASE + 3), | 122 | .irq = EMMA2RH_IRQ_PFUR1, |
| 96 | .irq = EMMA2RH_IRQ_PFUR1, | 123 | .uartclk = EMMA2RH_SERIAL_CLOCK, |
| 97 | .uartclk = EMMA2RH_SERIAL_CLOCK, | 124 | .regshift = 4, |
| 98 | .regshift = 4, | 125 | .iotype = UPIO_MEM, |
| 99 | .iotype = UPIO_MEM, | 126 | .flags = EMMA2RH_SERIAL_FLAGS, |
| 100 | .flags = EMMA2RH_SERIAL_FLAGS, | 127 | }, [2] = { |
| 101 | }, | 128 | .membase = (void __iomem*)KSEG1ADDR(EMMA2RH_PFUR2_BASE + 3), |
| 102 | [2] = { | 129 | .irq = EMMA2RH_IRQ_PFUR2, |
| 103 | .membase = (void __iomem*)KSEG1ADDR(EMMA2RH_PFUR2_BASE + 3), | 130 | .uartclk = EMMA2RH_SERIAL_CLOCK, |
| 104 | .irq = EMMA2RH_IRQ_PFUR2, | 131 | .regshift = 4, |
| 105 | .uartclk = EMMA2RH_SERIAL_CLOCK, | 132 | .iotype = UPIO_MEM, |
| 106 | .regshift = 4, | 133 | .flags = EMMA2RH_SERIAL_FLAGS, |
| 107 | .iotype = UPIO_MEM, | 134 | }, [3] = { |
| 108 | .flags = EMMA2RH_SERIAL_FLAGS, | 135 | .flags = 0, |
| 109 | }, | ||
| 110 | [3] = { | ||
| 111 | .flags = 0, | ||
| 112 | }, | 136 | }, |
| 113 | }; | 137 | }; |
| 114 | 138 | ||
diff --git a/arch/mips/jmr3927/rbhma3100/irq.c b/arch/mips/jmr3927/rbhma3100/irq.c index 39a0243bed..de4a238c28 100644 --- a/arch/mips/jmr3927/rbhma3100/irq.c +++ b/arch/mips/jmr3927/rbhma3100/irq.c | |||
| @@ -288,6 +288,8 @@ static void tx_branch_likely_bug_fixup(void) | |||
| 288 | 288 | ||
| 289 | static void jmr3927_spurious(void) | 289 | static void jmr3927_spurious(void) |
| 290 | { | 290 | { |
| 291 | struct pt_regs * regs = get_irq_regs(); | ||
| 292 | |||
| 291 | #ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND | 293 | #ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND |
| 292 | tx_branch_likely_bug_fixup(); | 294 | tx_branch_likely_bug_fixup(); |
| 293 | #endif | 295 | #endif |
| @@ -297,6 +299,7 @@ static void jmr3927_spurious(void) | |||
| 297 | 299 | ||
| 298 | asmlinkage void plat_irq_dispatch(void) | 300 | asmlinkage void plat_irq_dispatch(void) |
| 299 | { | 301 | { |
| 302 | struct pt_regs * regs = get_irq_regs(); | ||
| 300 | int irq; | 303 | int irq; |
| 301 | 304 | ||
| 302 | #ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND | 305 | #ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND |
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S index 720fac3435..a95f37de08 100644 --- a/arch/mips/kernel/scall32-o32.S +++ b/arch/mips/kernel/scall32-o32.S | |||
| @@ -654,6 +654,8 @@ einval: li v0, -EINVAL | |||
| 654 | sys sys_set_robust_list 2 | 654 | sys sys_set_robust_list 2 |
| 655 | sys sys_get_robust_list 3 /* 4310 */ | 655 | sys sys_get_robust_list 3 /* 4310 */ |
| 656 | sys sys_ni_syscall 0 | 656 | sys sys_ni_syscall 0 |
| 657 | sys sys_getcpu 3 | ||
| 658 | sys sys_epoll_pwait 6 | ||
| 657 | .endm | 659 | .endm |
| 658 | 660 | ||
| 659 | /* We pre-compute the number of _instruction_ bytes needed to | 661 | /* 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 3a34f62c8b..8fb0f60f65 100644 --- a/arch/mips/kernel/scall64-64.S +++ b/arch/mips/kernel/scall64-64.S | |||
| @@ -469,3 +469,5 @@ sys_call_table: | |||
| 469 | PTR sys_set_robust_list | 469 | PTR sys_set_robust_list |
| 470 | PTR sys_get_robust_list | 470 | PTR sys_get_robust_list |
| 471 | PTR sys_ni_syscall /* 5270 */ | 471 | PTR sys_ni_syscall /* 5270 */ |
| 472 | PTR sys_getcpu | ||
| 473 | PTR sys_epoll_pwait | ||
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S index 67b92a1d6c..0da5ca2040 100644 --- a/arch/mips/kernel/scall64-n32.S +++ b/arch/mips/kernel/scall64-n32.S | |||
| @@ -395,3 +395,5 @@ EXPORT(sysn32_call_table) | |||
| 395 | PTR compat_sys_set_robust_list | 395 | PTR compat_sys_set_robust_list |
| 396 | PTR compat_sys_get_robust_list | 396 | PTR compat_sys_get_robust_list |
| 397 | PTR sys_ni_syscall | 397 | PTR sys_ni_syscall |
| 398 | PTR sys_getcpu | ||
| 399 | PTR sys_epoll_pwait | ||
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S index 2875c4a3fa..b9d00cae8b 100644 --- a/arch/mips/kernel/scall64-o32.S +++ b/arch/mips/kernel/scall64-o32.S | |||
| @@ -517,4 +517,6 @@ sys_call_table: | |||
| 517 | PTR compat_sys_set_robust_list | 517 | PTR compat_sys_set_robust_list |
| 518 | PTR compat_sys_get_robust_list /* 4310 */ | 518 | PTR compat_sys_get_robust_list /* 4310 */ |
| 519 | PTR sys_ni_syscall | 519 | PTR sys_ni_syscall |
| 520 | PTR sys_getcpu | ||
| 521 | PTR sys_epoll_pwait | ||
| 520 | .size sys_call_table,.-sys_call_table | 522 | .size sys_call_table,.-sys_call_table |
diff --git a/arch/mips/mm/c-sb1.c b/arch/mips/mm/c-sb1.c index 5537558f19..ea49a775bf 100644 --- a/arch/mips/mm/c-sb1.c +++ b/arch/mips/mm/c-sb1.c | |||
| @@ -49,6 +49,15 @@ static unsigned short dcache_sets; | |||
| 49 | static unsigned int icache_range_cutoff; | 49 | static unsigned int icache_range_cutoff; |
| 50 | static unsigned int dcache_range_cutoff; | 50 | static unsigned int dcache_range_cutoff; |
| 51 | 51 | ||
| 52 | static inline void sb1_on_each_cpu(void (*func) (void *info), void *info, | ||
| 53 | int retry, int wait) | ||
| 54 | { | ||
| 55 | preempt_disable(); | ||
| 56 | smp_call_function(func, info, retry, wait); | ||
| 57 | func(info); | ||
| 58 | preempt_enable(); | ||
| 59 | } | ||
| 60 | |||
| 52 | /* | 61 | /* |
| 53 | * The dcache is fully coherent to the system, with one | 62 | * The dcache is fully coherent to the system, with one |
| 54 | * big caveat: the instruction stream. In other words, | 63 | * big caveat: the instruction stream. In other words, |
| @@ -226,7 +235,7 @@ static void sb1_flush_cache_page(struct vm_area_struct *vma, unsigned long addr, | |||
| 226 | args.vma = vma; | 235 | args.vma = vma; |
| 227 | args.addr = addr; | 236 | args.addr = addr; |
| 228 | args.pfn = pfn; | 237 | args.pfn = pfn; |
| 229 | on_each_cpu(sb1_flush_cache_page_ipi, (void *) &args, 1, 1); | 238 | sb1_on_each_cpu(sb1_flush_cache_page_ipi, (void *) &args, 1, 1); |
| 230 | } | 239 | } |
| 231 | #else | 240 | #else |
| 232 | void sb1_flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn) | 241 | void sb1_flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn) |
| @@ -249,7 +258,7 @@ void sb1___flush_cache_all_ipi(void *ignored) | |||
| 249 | 258 | ||
| 250 | static void sb1___flush_cache_all(void) | 259 | static void sb1___flush_cache_all(void) |
| 251 | { | 260 | { |
| 252 | on_each_cpu(sb1___flush_cache_all_ipi, 0, 1, 1); | 261 | sb1_on_each_cpu(sb1___flush_cache_all_ipi, 0, 1, 1); |
| 253 | } | 262 | } |
| 254 | #else | 263 | #else |
| 255 | void sb1___flush_cache_all(void) | 264 | void sb1___flush_cache_all(void) |
| @@ -299,7 +308,7 @@ void sb1_flush_icache_range(unsigned long start, unsigned long end) | |||
| 299 | 308 | ||
| 300 | args.start = start; | 309 | args.start = start; |
| 301 | args.end = end; | 310 | args.end = end; |
| 302 | on_each_cpu(sb1_flush_icache_range_ipi, &args, 1, 1); | 311 | sb1_on_each_cpu(sb1_flush_icache_range_ipi, &args, 1, 1); |
| 303 | } | 312 | } |
| 304 | #else | 313 | #else |
| 305 | void sb1_flush_icache_range(unsigned long start, unsigned long end) | 314 | void sb1_flush_icache_range(unsigned long start, unsigned long end) |
| @@ -326,7 +335,7 @@ static void sb1_flush_cache_sigtramp_ipi(void *info) | |||
| 326 | 335 | ||
| 327 | static void sb1_flush_cache_sigtramp(unsigned long addr) | 336 | static void sb1_flush_cache_sigtramp(unsigned long addr) |
| 328 | { | 337 | { |
| 329 | on_each_cpu(sb1_flush_cache_sigtramp_ipi, (void *) addr, 1, 1); | 338 | sb1_on_each_cpu(sb1_flush_cache_sigtramp_ipi, (void *) addr, 1, 1); |
| 330 | } | 339 | } |
| 331 | #else | 340 | #else |
| 332 | void sb1_flush_cache_sigtramp(unsigned long addr) | 341 | void sb1_flush_cache_sigtramp(unsigned long addr) |
| @@ -444,7 +453,6 @@ static __init void probe_cache_sizes(void) | |||
| 444 | void sb1_cache_init(void) | 453 | void sb1_cache_init(void) |
| 445 | { | 454 | { |
| 446 | extern char except_vec2_sb1; | 455 | extern char except_vec2_sb1; |
| 447 | extern char handle_vec2_sb1; | ||
| 448 | 456 | ||
| 449 | /* Special cache error handler for SB1 */ | 457 | /* Special cache error handler for SB1 */ |
| 450 | set_uncached_handler (0x100, &except_vec2_sb1, 0x80); | 458 | set_uncached_handler (0x100, &except_vec2_sb1, 0x80); |
diff --git a/arch/mips/momentum/ocelot_g/ocelot_pld.h b/arch/mips/momentum/ocelot_g/ocelot_pld.h index fcb8275e21..95e0534026 100644 --- a/arch/mips/momentum/ocelot_g/ocelot_pld.h +++ b/arch/mips/momentum/ocelot_g/ocelot_pld.h | |||
| @@ -23,8 +23,8 @@ | |||
| 23 | #define OCELOT_REG_INTSET (12) | 23 | #define OCELOT_REG_INTSET (12) |
| 24 | #define OCELOT_REG_INTCLR (13) | 24 | #define OCELOT_REG_INTCLR (13) |
| 25 | 25 | ||
| 26 | #define OCELOT_PLD_WRITE(x, y) writeb(x, OCELOT_CS0_ADDR + OCELOT_REG_##y) | 26 | #define __PLD_REG_TO_ADDR(reg) ((void *) OCELOT_CS0_ADDR + OCELOT_REG_##reg) |
| 27 | #define OCELOT_PLD_READ(x) readb(OCELOT_CS0_ADDR + OCELOT_REG_##x) | 27 | #define OCELOT_PLD_WRITE(x, reg) writeb(x, __PLD_REG_TO_ADDR(reg)) |
| 28 | 28 | #define OCELOT_PLD_READ(reg) readb(__PLD_REG_TO_ADDR(reg)) | |
| 29 | 29 | ||
| 30 | #endif /* __MOMENCO_OCELOT_PLD_H__ */ | 30 | #endif /* __MOMENCO_OCELOT_PLD_H__ */ |
diff --git a/arch/mips/momentum/ocelot_g/setup.c b/arch/mips/momentum/ocelot_g/setup.c index 56ec47039c..d288f7b018 100644 --- a/arch/mips/momentum/ocelot_g/setup.c +++ b/arch/mips/momentum/ocelot_g/setup.c | |||
| @@ -57,6 +57,7 @@ | |||
| 57 | #include <asm/gt64240.h> | 57 | #include <asm/gt64240.h> |
| 58 | #include <asm/irq.h> | 58 | #include <asm/irq.h> |
| 59 | #include <asm/pci.h> | 59 | #include <asm/pci.h> |
| 60 | #include <asm/pgtable.h> | ||
| 60 | #include <asm/processor.h> | 61 | #include <asm/processor.h> |
| 61 | #include <asm/reboot.h> | 62 | #include <asm/reboot.h> |
| 62 | #include <linux/bootmem.h> | 63 | #include <linux/bootmem.h> |
| @@ -160,6 +161,10 @@ static void __init setup_l3cache(unsigned long size) | |||
| 160 | printk("Done\n"); | 161 | printk("Done\n"); |
| 161 | } | 162 | } |
| 162 | 163 | ||
| 164 | void __init plat_timer_setup(struct irqaction *irq) | ||
| 165 | { | ||
| 166 | } | ||
| 167 | |||
| 163 | void __init plat_mem_setup(void) | 168 | void __init plat_mem_setup(void) |
| 164 | { | 169 | { |
| 165 | void (*l3func)(unsigned long) = (void *) KSEG1ADDR(setup_l3cache); | 170 | void (*l3func)(unsigned long) = (void *) KSEG1ADDR(setup_l3cache); |
diff --git a/arch/mips/oprofile/op_model_mipsxx.c b/arch/mips/oprofile/op_model_mipsxx.c index dd0aec9c3c..1fb240c57b 100644 --- a/arch/mips/oprofile/op_model_mipsxx.c +++ b/arch/mips/oprofile/op_model_mipsxx.c | |||
| @@ -31,16 +31,18 @@ | |||
| 31 | #define M_COUNTER_OVERFLOW (1UL << 31) | 31 | #define M_COUNTER_OVERFLOW (1UL << 31) |
| 32 | 32 | ||
| 33 | #ifdef CONFIG_MIPS_MT_SMP | 33 | #ifdef CONFIG_MIPS_MT_SMP |
| 34 | #define WHAT (M_TC_EN_VPE | M_PERFCTL_VPEID(smp_processor_id())) | 34 | #define WHAT (M_TC_EN_VPE | M_PERFCTL_VPEID(smp_processor_id())) |
| 35 | #define vpe_id() smp_processor_id() | ||
| 35 | #else | 36 | #else |
| 36 | #define WHAT 0 | 37 | #define WHAT 0 |
| 38 | #define vpe_id() smp_processor_id() | ||
| 37 | #endif | 39 | #endif |
| 38 | 40 | ||
| 39 | #define __define_perf_accessors(r, n, np) \ | 41 | #define __define_perf_accessors(r, n, np) \ |
| 40 | \ | 42 | \ |
| 41 | static inline unsigned int r_c0_ ## r ## n(void) \ | 43 | static inline unsigned int r_c0_ ## r ## n(void) \ |
| 42 | { \ | 44 | { \ |
| 43 | unsigned int cpu = smp_processor_id(); \ | 45 | unsigned int cpu = vpe_id(); \ |
| 44 | \ | 46 | \ |
| 45 | switch (cpu) { \ | 47 | switch (cpu) { \ |
| 46 | case 0: \ | 48 | case 0: \ |
| @@ -55,7 +57,7 @@ static inline unsigned int r_c0_ ## r ## n(void) \ | |||
| 55 | \ | 57 | \ |
| 56 | static inline void w_c0_ ## r ## n(unsigned int value) \ | 58 | static inline void w_c0_ ## r ## n(unsigned int value) \ |
| 57 | { \ | 59 | { \ |
| 58 | unsigned int cpu = smp_processor_id(); \ | 60 | unsigned int cpu = vpe_id(); \ |
| 59 | \ | 61 | \ |
| 60 | switch (cpu) { \ | 62 | switch (cpu) { \ |
| 61 | case 0: \ | 63 | case 0: \ |
| @@ -218,7 +220,7 @@ static inline int n_counters(void) | |||
| 218 | { | 220 | { |
| 219 | int counters = __n_counters(); | 221 | int counters = __n_counters(); |
| 220 | 222 | ||
| 221 | #ifndef CONFIG_SMP | 223 | #ifdef CONFIG_MIPS_MT_SMP |
| 222 | if (current_cpu_data.cputype == CPU_34K) | 224 | if (current_cpu_data.cputype == CPU_34K) |
| 223 | return counters >> 1; | 225 | return counters >> 1; |
| 224 | #endif | 226 | #endif |
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c b/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c index b926e6a75c..08b20cdfd7 100644 --- a/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c +++ b/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c | |||
| @@ -36,14 +36,18 @@ void __init txx9_spi_init(unsigned long base, int (*cs_func)(int chipid, int on) | |||
| 36 | 36 | ||
| 37 | static DECLARE_WAIT_QUEUE_HEAD(txx9_spi_wait); | 37 | static DECLARE_WAIT_QUEUE_HEAD(txx9_spi_wait); |
| 38 | 38 | ||
| 39 | static void txx9_spi_interrupt(int irq, void *dev_id) | 39 | static irqreturn_t txx9_spi_interrupt(int irq, void *dev_id) |
| 40 | { | 40 | { |
| 41 | /* disable rx intr */ | 41 | /* disable rx intr */ |
| 42 | tx4938_spiptr->cr0 &= ~TXx9_SPCR0_RBSIE; | 42 | tx4938_spiptr->cr0 &= ~TXx9_SPCR0_RBSIE; |
| 43 | wake_up(&txx9_spi_wait); | 43 | wake_up(&txx9_spi_wait); |
| 44 | |||
| 45 | return IRQ_HANDLED; | ||
| 44 | } | 46 | } |
| 47 | |||
| 45 | static struct irqaction txx9_spi_action = { | 48 | static struct irqaction txx9_spi_action = { |
| 46 | txx9_spi_interrupt, 0, 0, "spi", NULL, NULL, | 49 | .handler = txx9_spi_interrupt, |
| 50 | .name = "spi", | ||
| 47 | }; | 51 | }; |
| 48 | 52 | ||
| 49 | void __init txx9_spi_irqinit(int irc_irq) | 53 | void __init txx9_spi_irqinit(int irc_irq) |
diff --git a/include/asm-mips/unistd.h b/include/asm-mips/unistd.h index 30240a445d..ec56aa52f6 100644 --- a/include/asm-mips/unistd.h +++ b/include/asm-mips/unistd.h | |||
| @@ -332,16 +332,18 @@ | |||
| 332 | #define __NR_set_robust_list (__NR_Linux + 309) | 332 | #define __NR_set_robust_list (__NR_Linux + 309) |
| 333 | #define __NR_get_robust_list (__NR_Linux + 310) | 333 | #define __NR_get_robust_list (__NR_Linux + 310) |
| 334 | #define __NR_kexec_load (__NR_Linux + 311) | 334 | #define __NR_kexec_load (__NR_Linux + 311) |
| 335 | #define __NR_getcpu (__NR_Linux + 312) | ||
| 336 | #define __NR_epoll_pwait (__NR_Linux + 313) | ||
| 335 | 337 | ||
| 336 | /* | 338 | /* |
| 337 | * Offset of the last Linux o32 flavoured syscall | 339 | * Offset of the last Linux o32 flavoured syscall |
| 338 | */ | 340 | */ |
| 339 | #define __NR_Linux_syscalls 311 | 341 | #define __NR_Linux_syscalls 313 |
| 340 | 342 | ||
| 341 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ | 343 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ |
| 342 | 344 | ||
| 343 | #define __NR_O32_Linux 4000 | 345 | #define __NR_O32_Linux 4000 |
| 344 | #define __NR_O32_Linux_syscalls 311 | 346 | #define __NR_O32_Linux_syscalls 313 |
| 345 | 347 | ||
| 346 | #if _MIPS_SIM == _MIPS_SIM_ABI64 | 348 | #if _MIPS_SIM == _MIPS_SIM_ABI64 |
| 347 | 349 | ||
| @@ -620,16 +622,18 @@ | |||
| 620 | #define __NR_set_robust_list (__NR_Linux + 268) | 622 | #define __NR_set_robust_list (__NR_Linux + 268) |
| 621 | #define __NR_get_robust_list (__NR_Linux + 269) | 623 | #define __NR_get_robust_list (__NR_Linux + 269) |
| 622 | #define __NR_kexec_load (__NR_Linux + 270) | 624 | #define __NR_kexec_load (__NR_Linux + 270) |
| 625 | #define __NR_getcpu (__NR_Linux + 271) | ||
| 626 | #define __NR_epoll_pwait (__NR_Linux + 272) | ||
| 623 | 627 | ||
| 624 | /* | 628 | /* |
| 625 | * Offset of the last Linux 64-bit flavoured syscall | 629 | * Offset of the last Linux 64-bit flavoured syscall |
| 626 | */ | 630 | */ |
| 627 | #define __NR_Linux_syscalls 270 | 631 | #define __NR_Linux_syscalls 272 |
| 628 | 632 | ||
| 629 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ | 633 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ |
| 630 | 634 | ||
| 631 | #define __NR_64_Linux 5000 | 635 | #define __NR_64_Linux 5000 |
| 632 | #define __NR_64_Linux_syscalls 270 | 636 | #define __NR_64_Linux_syscalls 272 |
| 633 | 637 | ||
| 634 | #if _MIPS_SIM == _MIPS_SIM_NABI32 | 638 | #if _MIPS_SIM == _MIPS_SIM_NABI32 |
| 635 | 639 | ||
| @@ -912,16 +916,18 @@ | |||
| 912 | #define __NR_set_robust_list (__NR_Linux + 272) | 916 | #define __NR_set_robust_list (__NR_Linux + 272) |
| 913 | #define __NR_get_robust_list (__NR_Linux + 273) | 917 | #define __NR_get_robust_list (__NR_Linux + 273) |
| 914 | #define __NR_kexec_load (__NR_Linux + 274) | 918 | #define __NR_kexec_load (__NR_Linux + 274) |
| 919 | #define __NR_getcpu (__NR_Linux + 275) | ||
| 920 | #define __NR_epoll_pwait (__NR_Linux + 276) | ||
| 915 | 921 | ||
| 916 | /* | 922 | /* |
| 917 | * Offset of the last N32 flavoured syscall | 923 | * Offset of the last N32 flavoured syscall |
| 918 | */ | 924 | */ |
| 919 | #define __NR_Linux_syscalls 274 | 925 | #define __NR_Linux_syscalls 276 |
| 920 | 926 | ||
| 921 | #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ | 927 | #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ |
| 922 | 928 | ||
| 923 | #define __NR_N32_Linux 6000 | 929 | #define __NR_N32_Linux 6000 |
| 924 | #define __NR_N32_Linux_syscalls 274 | 930 | #define __NR_N32_Linux_syscalls 276 |
| 925 | 931 | ||
| 926 | #ifdef __KERNEL__ | 932 | #ifdef __KERNEL__ |
| 927 | 933 | ||
| @@ -1189,6 +1195,7 @@ type name (atype a,btype b,ctype c,dtype d,etype e,ftype f) \ | |||
| 1189 | #endif /* (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64) */ | 1195 | #endif /* (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64) */ |
| 1190 | 1196 | ||
| 1191 | 1197 | ||
| 1198 | #define __ARCH_OMIT_COMPAT_SYS_GETDENTS64 | ||
| 1192 | #define __ARCH_WANT_IPC_PARSE_VERSION | 1199 | #define __ARCH_WANT_IPC_PARSE_VERSION |
| 1193 | #define __ARCH_WANT_OLD_READDIR | 1200 | #define __ARCH_WANT_OLD_READDIR |
| 1194 | #define __ARCH_WANT_SYS_ALARM | 1201 | #define __ARCH_WANT_SYS_ALARM |
