Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus

Pull more MIPS updates from Ralf Baechle:
"This is the secondnd batch of MIPS patches for 4.7. Summary:

CPS:
- Copy EVA configuration when starting secondary VPs.

EIC:
- Clear Status IPL.

Lasat:
- Fix a few off by one bugs.

lib:
- Mark intrinsics notrace. Not only are the intrinsics
uninteresting, it would cause infinite recursion.

MAINTAINERS:
- Add file patterns for MIPS BRCM device tree bindings.
- Add file patterns for mips device tree bindings.

MT7628:
- Fix MT7628 pinmux typos.
- wled_an pinmux gpio.
- EPHY LEDs pinmux support.

Pistachio:
- Enable KASLR

VDSO:
- Build microMIPS VDSO for microMIPS kernels.
- Fix aliasing warning by building with `-fno-strict-aliasing' for
debugging but also tracing them might result in recursion.

Misc:
- Add missing FROZEN hotplug notifier transitions.
- Fix clk binding example for varioius PIC32 devices.
- Fix cpu interrupt controller node-names in the DT files.
- Fix XPA CPU feature separation.
- Fix write_gc0_* macros when writing zero.
- Add inline asm encoding helpers.
- Add missing VZ accessor microMIPS encodings.
- Fix little endian microMIPS MSA encodings.
- Add 64-bit HTW fields and fix its configuration.
- Fix sigreturn via VDSO on microMIPS kernel.
- Lots of typo fixes.
- Add definitions of SegCtl registers and use them"

* 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (49 commits)
MIPS: Add missing FROZEN hotplug notifier transitions
MIPS: Build microMIPS VDSO for microMIPS kernels
MIPS: Fix sigreturn via VDSO on microMIPS kernel
MIPS: devicetree: fix cpu interrupt controller node-names
MIPS: VDSO: Build with `-fno-strict-aliasing'
MIPS: Pistachio: Enable KASLR
MIPS: lib: Mark intrinsics notrace
MIPS: Fix 64-bit HTW configuration
MIPS: Add 64-bit HTW fields
MAINTAINERS: Add file patterns for mips device tree bindings
MAINTAINERS: Add file patterns for mips brcm device tree bindings
MIPS: Simplify DSP instruction encoding macros
MIPS: Add missing tlbinvf/XPA microMIPS encodings
MIPS: Fix little endian microMIPS MSA encodings
MIPS: Add missing VZ accessor microMIPS encodings
MIPS: Add inline asm encoding helpers
MIPS: Spelling fix lets -> let's
MIPS: VR41xx: Fix typo
MIPS: oprofile: Fix typo
MIPS: math-emu: Fix typo
...

+1 -1
Documentation/devicetree/bindings/gpio/microchip,pic32-gpio.txt
··· 33 33 gpio-controller; 34 34 interrupt-controller; 35 35 #interrupt-cells = <2>; 36 - clocks = <&PBCLK4>; 36 + clocks = <&rootclk PB4CLK>; 37 37 microchip,gpio-bank = <0>; 38 38 gpio-ranges = <&pic32_pinctrl 0 0 16>; 39 39 };
+1 -1
Documentation/devicetree/bindings/mips/cpu_irq.txt
··· 13 13 - compatible : Should be "mti,cpu-interrupt-controller" 14 14 15 15 Example devicetree: 16 - cpu-irq: cpu-irq@0 { 16 + cpu-irq: cpu-irq { 17 17 #address-cells = <0>; 18 18 19 19 interrupt-controller;
+1 -1
Documentation/devicetree/bindings/mmc/microchip,sdhci-pic32.txt
··· 20 20 compatible = "microchip,pic32mzda-sdhci"; 21 21 reg = <0x1f8ec000 0x100>; 22 22 interrupts = <191 IRQ_TYPE_LEVEL_HIGH>; 23 - clocks = <&REFCLKO4>, <&PBCLK5>; 23 + clocks = <&rootclk REF4CLK>, <&rootclk PB5CLK>; 24 24 clock-names = "base_clk", "sys_clk"; 25 25 bus-width = <4>; 26 26 cap-sd-highspeed;
+1 -1
Documentation/devicetree/bindings/pinctrl/microchip,pic32-pinctrl.txt
··· 34 34 #size-cells = <1>; 35 35 compatible = "microchip,pic32mzda-pinctrl"; 36 36 reg = <0x1f801400 0x400>; 37 - clocks = <&PBCLK1>; 37 + clocks = <&rootclk PB1CLK>; 38 38 39 39 pinctrl_uart2: pinctrl_uart2 { 40 40 uart2-tx {
+1 -1
Documentation/devicetree/bindings/serial/microchip,pic32-uart.txt
··· 20 20 interrupts = <112 IRQ_TYPE_LEVEL_HIGH>, 21 21 <113 IRQ_TYPE_LEVEL_HIGH>, 22 22 <114 IRQ_TYPE_LEVEL_HIGH>; 23 - clocks = <&PBCLK2>; 23 + clocks = <&rootclk PB2CLK>; 24 24 pinctrl-names = "default"; 25 25 pinctrl-0 = <&pinctrl_uart1 26 26 &pinctrl_uart1_cts
+2 -2
Documentation/devicetree/bindings/watchdog/microchip,pic32-dmt.txt
··· 8 8 - compatible: must be "microchip,pic32mzda-dmt". 9 9 - reg: physical base address of the controller and length of memory mapped 10 10 region. 11 - - clocks: phandle of parent clock (should be &PBCLK7). 11 + - clocks: phandle of source clk. Should be <&rootclk PB7CLK>. 12 12 13 13 Example: 14 14 15 15 watchdog@1f800a00 { 16 16 compatible = "microchip,pic32mzda-dmt"; 17 17 reg = <0x1f800a00 0x80>; 18 - clocks = <&PBCLK7>; 18 + clocks = <&rootclk PB7CLK>; 19 19 };
+2 -2
Documentation/devicetree/bindings/watchdog/microchip,pic32-wdt.txt
··· 7 7 - compatible: must be "microchip,pic32mzda-wdt". 8 8 - reg: physical base address of the controller and length of memory mapped 9 9 region. 10 - - clocks: phandle of source clk. should be <&LPRC> clk. 10 + - clocks: phandle of source clk. Should be <&rootclk LPRCCLK>. 11 11 12 12 Example: 13 13 14 14 watchdog@1f800800 { 15 15 compatible = "microchip,pic32mzda-wdt"; 16 16 reg = <0x1f800800 0x200>; 17 - clocks = <&LPRC>; 17 + clocks = <&rootclk LPRCCLK>; 18 18 };
+2
MAINTAINERS
··· 2505 2505 M: Rafał Miłecki <zajec5@gmail.com> 2506 2506 L: linux-mips@linux-mips.org 2507 2507 S: Maintained 2508 + F: Documentation/devicetree/bindings/mips/brcm/ 2508 2509 F: arch/mips/bcm47xx/* 2509 2510 F: arch/mips/include/asm/mach-bcm47xx/* 2510 2511 ··· 7522 7521 T: git git://git.linux-mips.org/pub/scm/ralf/linux.git 7523 7522 Q: http://patchwork.linux-mips.org/project/linux-mips/list/ 7524 7523 S: Supported 7524 + F: Documentation/devicetree/bindings/mips/ 7525 7525 F: Documentation/mips/ 7526 7526 F: arch/mips/ 7527 7527
+1
arch/mips/Kconfig
··· 398 398 select SYS_SUPPORTS_LITTLE_ENDIAN 399 399 select SYS_SUPPORTS_MIPS_CPS 400 400 select SYS_SUPPORTS_MULTITHREADING 401 + select SYS_SUPPORTS_RELOCATABLE 401 402 select SYS_SUPPORTS_ZBOOT 402 403 select SYS_HAS_EARLY_PRINTK 403 404 select USE_GENERIC_EARLY_PRINTK_8250
+1 -1
arch/mips/boot/dts/ingenic/jz4740.dtsi
··· 5 5 #size-cells = <1>; 6 6 compatible = "ingenic,jz4740"; 7 7 8 - cpuintc: interrupt-controller@0 { 8 + cpuintc: interrupt-controller { 9 9 #address-cells = <0>; 10 10 #interrupt-cells = <1>; 11 11 interrupt-controller;
+1 -1
arch/mips/boot/dts/ralink/mt7620a.dtsi
··· 9 9 }; 10 10 }; 11 11 12 - cpuintc: cpuintc@0 { 12 + cpuintc: cpuintc { 13 13 #address-cells = <0>; 14 14 #interrupt-cells = <1>; 15 15 interrupt-controller;
+1 -1
arch/mips/boot/dts/ralink/rt2880.dtsi
··· 9 9 }; 10 10 }; 11 11 12 - cpuintc: cpuintc@0 { 12 + cpuintc: cpuintc { 13 13 #address-cells = <0>; 14 14 #interrupt-cells = <1>; 15 15 interrupt-controller;
+1 -1
arch/mips/boot/dts/ralink/rt3050.dtsi
··· 9 9 }; 10 10 }; 11 11 12 - cpuintc: cpuintc@0 { 12 + cpuintc: cpuintc { 13 13 #address-cells = <0>; 14 14 #interrupt-cells = <1>; 15 15 interrupt-controller;
+1 -1
arch/mips/boot/dts/ralink/rt3883.dtsi
··· 9 9 }; 10 10 }; 11 11 12 - cpuintc: cpuintc@0 { 12 + cpuintc: cpuintc { 13 13 #address-cells = <0>; 14 14 #interrupt-cells = <1>; 15 15 interrupt-controller;
+1 -1
arch/mips/boot/dts/xilfpga/nexys4ddr.dts
··· 10 10 reg = <0x0 0x08000000>; 11 11 }; 12 12 13 - cpuintc: interrupt-controller@0 { 13 + cpuintc: interrupt-controller { 14 14 #address-cells = <0>; 15 15 #interrupt-cells = <1>; 16 16 interrupt-controller;
+1 -1
arch/mips/cavium-octeon/smp.c
··· 384 384 { 385 385 unsigned int cpu = (unsigned long)hcpu; 386 386 387 - switch (action) { 387 + switch (action & ~CPU_TASKS_FROZEN) { 388 388 case CPU_UP_PREPARE: 389 389 octeon_update_boot_vector(cpu); 390 390 break;
+50 -49
arch/mips/include/asm/asmmacro.h
··· 19 19 #include <asm/asmmacro-64.h> 20 20 #endif 21 21 22 + /* 23 + * Helper macros for generating raw instruction encodings. 24 + */ 25 + #ifdef CONFIG_CPU_MICROMIPS 26 + .macro insn32_if_mm enc 27 + .insn 28 + .hword ((\enc) >> 16) 29 + .hword ((\enc) & 0xffff) 30 + .endm 31 + 32 + .macro insn_if_mips enc 33 + .endm 34 + #else 35 + .macro insn32_if_mm enc 36 + .endm 37 + 38 + .macro insn_if_mips enc 39 + .insn 40 + .word (\enc) 41 + .endm 42 + #endif 43 + 22 44 #if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) 23 45 .macro local_irq_enable reg=t0 24 46 ei ··· 363 341 .endm 364 342 #else 365 343 366 - #ifdef CONFIG_CPU_MICROMIPS 367 - #define CFC_MSA_INSN 0x587e0056 368 - #define CTC_MSA_INSN 0x583e0816 369 - #define LDB_MSA_INSN 0x58000807 370 - #define LDH_MSA_INSN 0x58000817 371 - #define LDW_MSA_INSN 0x58000827 372 - #define LDD_MSA_INSN 0x58000837 373 - #define STB_MSA_INSN 0x5800080f 374 - #define STH_MSA_INSN 0x5800081f 375 - #define STW_MSA_INSN 0x5800082f 376 - #define STD_MSA_INSN 0x5800083f 377 - #define COPY_SW_MSA_INSN 0x58b00056 378 - #define COPY_SD_MSA_INSN 0x58b80056 379 - #define INSERT_W_MSA_INSN 0x59300816 380 - #define INSERT_D_MSA_INSN 0x59380816 381 - #else 382 - #define CFC_MSA_INSN 0x787e0059 383 - #define CTC_MSA_INSN 0x783e0819 384 - #define LDB_MSA_INSN 0x78000820 385 - #define LDH_MSA_INSN 0x78000821 386 - #define LDW_MSA_INSN 0x78000822 387 - #define LDD_MSA_INSN 0x78000823 388 - #define STB_MSA_INSN 0x78000824 389 - #define STH_MSA_INSN 0x78000825 390 - #define STW_MSA_INSN 0x78000826 391 - #define STD_MSA_INSN 0x78000827 392 - #define COPY_SW_MSA_INSN 0x78b00059 393 - #define COPY_SD_MSA_INSN 0x78b80059 394 - #define INSERT_W_MSA_INSN 0x79300819 395 - #define INSERT_D_MSA_INSN 0x79380819 396 - #endif 397 - 398 344 /* 399 345 * Temporary until all toolchains in use include MSA support. 400 346 */ ··· 370 380 .set push 371 381 .set noat 372 382 SET_HARDFLOAT 373 - .insn 374 - .word CFC_MSA_INSN | (\cs << 11) 383 + insn_if_mips 0x787e0059 | (\cs << 11) 384 + insn32_if_mm 0x587e0056 | (\cs << 11) 375 385 move \rd, $1 376 386 .set pop 377 387 .endm ··· 381 391 .set noat 382 392 SET_HARDFLOAT 383 393 move $1, \rs 384 - .word CTC_MSA_INSN | (\cd << 6) 394 + insn_if_mips 0x783e0819 | (\cd << 6) 395 + insn32_if_mm 0x583e0816 | (\cd << 6) 385 396 .set pop 386 397 .endm 387 398 ··· 391 400 .set noat 392 401 SET_HARDFLOAT 393 402 PTR_ADDU $1, \base, \off 394 - .word LDB_MSA_INSN | (\wd << 6) 403 + insn_if_mips 0x78000820 | (\wd << 6) 404 + insn32_if_mm 0x58000807 | (\wd << 6) 395 405 .set pop 396 406 .endm 397 407 ··· 401 409 .set noat 402 410 SET_HARDFLOAT 403 411 PTR_ADDU $1, \base, \off 404 - .word LDH_MSA_INSN | (\wd << 6) 412 + insn_if_mips 0x78000821 | (\wd << 6) 413 + insn32_if_mm 0x58000817 | (\wd << 6) 405 414 .set pop 406 415 .endm 407 416 ··· 411 418 .set noat 412 419 SET_HARDFLOAT 413 420 PTR_ADDU $1, \base, \off 414 - .word LDW_MSA_INSN | (\wd << 6) 421 + insn_if_mips 0x78000822 | (\wd << 6) 422 + insn32_if_mm 0x58000827 | (\wd << 6) 415 423 .set pop 416 424 .endm 417 425 ··· 421 427 .set noat 422 428 SET_HARDFLOAT 423 429 PTR_ADDU $1, \base, \off 424 - .word LDD_MSA_INSN | (\wd << 6) 430 + insn_if_mips 0x78000823 | (\wd << 6) 431 + insn32_if_mm 0x58000837 | (\wd << 6) 425 432 .set pop 426 433 .endm 427 434 ··· 431 436 .set noat 432 437 SET_HARDFLOAT 433 438 PTR_ADDU $1, \base, \off 434 - .word STB_MSA_INSN | (\wd << 6) 439 + insn_if_mips 0x78000824 | (\wd << 6) 440 + insn32_if_mm 0x5800080f | (\wd << 6) 435 441 .set pop 436 442 .endm 437 443 ··· 441 445 .set noat 442 446 SET_HARDFLOAT 443 447 PTR_ADDU $1, \base, \off 444 - .word STH_MSA_INSN | (\wd << 6) 448 + insn_if_mips 0x78000825 | (\wd << 6) 449 + insn32_if_mm 0x5800081f | (\wd << 6) 445 450 .set pop 446 451 .endm 447 452 ··· 451 454 .set noat 452 455 SET_HARDFLOAT 453 456 PTR_ADDU $1, \base, \off 454 - .word STW_MSA_INSN | (\wd << 6) 457 + insn_if_mips 0x78000826 | (\wd << 6) 458 + insn32_if_mm 0x5800082f | (\wd << 6) 455 459 .set pop 456 460 .endm 457 461 ··· 461 463 .set noat 462 464 SET_HARDFLOAT 463 465 PTR_ADDU $1, \base, \off 464 - .word STD_MSA_INSN | (\wd << 6) 466 + insn_if_mips 0x78000827 | (\wd << 6) 467 + insn32_if_mm 0x5800083f | (\wd << 6) 465 468 .set pop 466 469 .endm 467 470 ··· 470 471 .set push 471 472 .set noat 472 473 SET_HARDFLOAT 473 - .insn 474 - .word COPY_SW_MSA_INSN | (\n << 16) | (\ws << 11) 474 + insn_if_mips 0x78b00059 | (\n << 16) | (\ws << 11) 475 + insn32_if_mm 0x58b00056 | (\n << 16) | (\ws << 11) 475 476 .set pop 476 477 .endm 477 478 ··· 479 480 .set push 480 481 .set noat 481 482 SET_HARDFLOAT 482 - .insn 483 - .word COPY_SD_MSA_INSN | (\n << 16) | (\ws << 11) 483 + insn_if_mips 0x78b80059 | (\n << 16) | (\ws << 11) 484 + insn32_if_mm 0x58b80056 | (\n << 16) | (\ws << 11) 484 485 .set pop 485 486 .endm 486 487 ··· 488 489 .set push 489 490 .set noat 490 491 SET_HARDFLOAT 491 - .word INSERT_W_MSA_INSN | (\n << 16) | (\wd << 6) 492 + insn_if_mips 0x79300819 | (\n << 16) | (\wd << 6) 493 + insn32_if_mm 0x59300816 | (\n << 16) | (\wd << 6) 492 494 .set pop 493 495 .endm 494 496 ··· 497 497 .set push 498 498 .set noat 499 499 SET_HARDFLOAT 500 - .word INSERT_D_MSA_INSN | (\n << 16) | (\wd << 6) 500 + insn_if_mips 0x79380819 | (\n << 16) | (\wd << 6) 501 + insn32_if_mm 0x59380816 | (\n << 16) | (\wd << 6) 501 502 .set pop 502 503 .endm 503 504 #endif
+4 -4
arch/mips/include/asm/hazards.h
··· 58 58 * address of a label as argument to inline assembler. Gas otoh has the 59 59 * annoying difference between la and dla which are only usable for 32-bit 60 60 * rsp. 64-bit code, so can't be used without conditional compilation. 61 - * The alterantive is switching the assembler to 64-bit code which happens 62 - * to work right even for 32-bit code ... 61 + * The alternative is switching the assembler to 64-bit code which happens 62 + * to work right even for 32-bit code... 63 63 */ 64 64 #define instruction_hazard() \ 65 65 do { \ ··· 133 133 * address of a label as argument to inline assembler. Gas otoh has the 134 134 * annoying difference between la and dla which are only usable for 32-bit 135 135 * rsp. 64-bit code, so can't be used without conditional compilation. 136 - * The alterantive is switching the assembler to 64-bit code which happens 137 - * to work right even for 32-bit code ... 136 + * The alternative is switching the assembler to 64-bit code which happens 137 + * to work right even for 32-bit code... 138 138 */ 139 139 #define __instruction_hazard() \ 140 140 do { \
+1 -1
arch/mips/include/asm/mach-au1x00/au1xxx_dbdma.h
··· 100 100 u32 dscr_nxtptr; /* Next descriptor pointer (mostly) */ 101 101 /* 102 102 * First 32 bytes are HW specific!!! 103 - * Lets have some SW data following -- make sure it's 32 bytes. 103 + * Let's have some SW data following -- make sure it's 32 bytes. 104 104 */ 105 105 u32 sw_status; 106 106 u32 sw_context;
+1 -1
arch/mips/include/asm/mach-au1x00/gpio-au1300.h
··· 140 140 * Cases 1 and 3 are intended for boards which want to provide their own 141 141 * GPIO namespace and -operations (i.e. for example you have 8 GPIOs 142 142 * which are in part provided by spare Au1300 GPIO pins and in part by 143 - * an external FPGA but you still want them to be accssible in linux 143 + * an external FPGA but you still want them to be accessible in linux 144 144 * as gpio0-7. The board can of course use the alchemy_gpioX_* functions 145 145 * as required). 146 146 */
+1 -1
arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h
··· 22 22 int has_phy_interrupt; 23 23 int phy_interrupt; 24 24 25 - /* if has_phy, use autonegociated pause parameters or force 25 + /* if has_phy, use autonegotiated pause parameters or force 26 26 * them */ 27 27 int pause_auto; 28 28 int pause_rx;
+1 -1
arch/mips/include/asm/mach-ip27/dma-coherence.h
··· 64 64 65 65 static inline int plat_device_is_coherent(struct device *dev) 66 66 { 67 - return 1; /* IP27 non-cohernet mode is unsupported */ 67 + return 1; /* IP27 non-coherent mode is unsupported */ 68 68 } 69 69 70 70 #endif /* __ASM_MACH_IP27_DMA_COHERENCE_H */
+1 -1
arch/mips/include/asm/mach-ip32/dma-coherence.h
··· 86 86 87 87 static inline int plat_device_is_coherent(struct device *dev) 88 88 { 89 - return 0; /* IP32 is non-cohernet */ 89 + return 0; /* IP32 is non-coherent */ 90 90 } 91 91 92 92 #endif /* __ASM_MACH_IP32_DMA_COHERENCE_H */
+1 -1
arch/mips/include/asm/mach-lantiq/falcon/lantiq_soc.h
··· 22 22 23 23 /* 24 24 * during early_printk no ioremap possible at this early stage 25 - * lets use KSEG1 instead 25 + * let's use KSEG1 instead 26 26 */ 27 27 #define LTQ_ASC0_BASE_ADDR 0x1E100C00 28 28 #define LTQ_EARLY_ASC KSEG1ADDR(LTQ_ASC0_BASE_ADDR)
+1 -1
arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h
··· 75 75 76 76 /* 77 77 * during early_printk no ioremap is possible 78 - * lets use KSEG1 instead 78 + * let's use KSEG1 instead 79 79 */ 80 80 #define LTQ_ASC1_BASE_ADDR 0x1E100C00 81 81 #define LTQ_EARLY_ASC KSEG1ADDR(LTQ_ASC1_BASE_ADDR)
+1 -1
arch/mips/include/asm/mach-loongson64/loongson_hwmon.h
··· 24 24 u8 level; 25 25 }; 26 26 27 - #define CONSTANT_SPEED_POLICY 0 /* at constent speed */ 27 + #define CONSTANT_SPEED_POLICY 0 /* at constant speed */ 28 28 #define STEP_SPEED_POLICY 1 /* use up/down arrays to describe policy */ 29 29 #define KERNEL_HELPER_POLICY 2 /* kernel as a helper to fan control */ 30 30
+3 -3
arch/mips/include/asm/mach-malta/kernel-entry-init.h
··· 56 56 (0 << MIPS_SEGCFG_PA_SHIFT) | \ 57 57 (1 << MIPS_SEGCFG_EU_SHIFT)) << 16) 58 58 or t0, t2 59 - mtc0 t0, $5, 2 59 + mtc0 t0, CP0_SEGCTL0 60 60 61 61 /* SegCtl1 */ 62 62 li t0, ((MIPS_SEGCFG_MUSUK << MIPS_SEGCFG_AM_SHIFT) | \ ··· 67 67 (0 << MIPS_SEGCFG_PA_SHIFT) | \ 68 68 (1 << MIPS_SEGCFG_EU_SHIFT)) << 16) 69 69 ins t0, t1, 16, 3 70 - mtc0 t0, $5, 3 70 + mtc0 t0, CP0_SEGCTL1 71 71 72 72 /* SegCtl2 */ 73 73 li t0, ((MIPS_SEGCFG_MUSUK << MIPS_SEGCFG_AM_SHIFT) | \ ··· 77 77 (4 << MIPS_SEGCFG_PA_SHIFT) | \ 78 78 (1 << MIPS_SEGCFG_EU_SHIFT)) << 16) 79 79 or t0, t2 80 - mtc0 t0, $5, 4 80 + mtc0 t0, CP0_SEGCTL2 81 81 82 82 jal mips_ihb 83 83 mfc0 t0, $16, 5
+1 -1
arch/mips/include/asm/mips_mt.h
··· 1 1 /* 2 - * Definitions and decalrations for MIPS MT support that are common between 2 + * Definitions and declarations for MIPS MT support that are common between 3 3 * the VSMP, and AP/SP kernel models. 4 4 */ 5 5 #ifndef __ASM_MIPS_MT_H
+85 -109
arch/mips/include/asm/mipsregs.h
··· 48 48 #define CP0_CONF $3 49 49 #define CP0_CONTEXT $4 50 50 #define CP0_PAGEMASK $5 51 + #define CP0_SEGCTL0 $5, 2 52 + #define CP0_SEGCTL1 $5, 3 53 + #define CP0_SEGCTL2 $5, 4 51 54 #define CP0_WIRED $6 52 55 #define CP0_INFO $7 53 56 #define CP0_HWRENA $7, 0 ··· 729 726 #define MIPS_PWFIELD_PTEI_SHIFT 0 730 727 #define MIPS_PWFIELD_PTEI_MASK 0x0000003f 731 728 729 + #define MIPS_PWSIZE_PS_SHIFT 30 730 + #define MIPS_PWSIZE_PS_MASK 0x40000000 732 731 #define MIPS_PWSIZE_GDW_SHIFT 24 733 732 #define MIPS_PWSIZE_GDW_MASK 0x3f000000 734 733 #define MIPS_PWSIZE_UDW_SHIFT 18 ··· 744 739 745 740 #define MIPS_PWCTL_PWEN_SHIFT 31 746 741 #define MIPS_PWCTL_PWEN_MASK 0x80000000 742 + #define MIPS_PWCTL_XK_SHIFT 28 743 + #define MIPS_PWCTL_XK_MASK 0x10000000 744 + #define MIPS_PWCTL_XS_SHIFT 27 745 + #define MIPS_PWCTL_XS_MASK 0x08000000 746 + #define MIPS_PWCTL_XU_SHIFT 26 747 + #define MIPS_PWCTL_XU_MASK 0x04000000 747 748 #define MIPS_PWCTL_DPH_SHIFT 7 748 749 #define MIPS_PWCTL_DPH_MASK 0x00000080 749 750 #define MIPS_PWCTL_HUGEPG_SHIFT 6 ··· 1057 1046 } 1058 1047 1059 1048 /* 1049 + * Helper macros for generating raw instruction encodings in inline asm. 1050 + */ 1051 + #ifdef CONFIG_CPU_MICROMIPS 1052 + #define _ASM_INSN16_IF_MM(_enc) \ 1053 + ".insn\n\t" \ 1054 + ".hword (" #_enc ")\n\t" 1055 + #define _ASM_INSN32_IF_MM(_enc) \ 1056 + ".insn\n\t" \ 1057 + ".hword ((" #_enc ") >> 16)\n\t" \ 1058 + ".hword ((" #_enc ") & 0xffff)\n\t" 1059 + #else 1060 + #define _ASM_INSN_IF_MIPS(_enc) \ 1061 + ".insn\n\t" \ 1062 + ".word (" #_enc ")\n\t" 1063 + #endif 1064 + 1065 + #ifndef _ASM_INSN16_IF_MM 1066 + #define _ASM_INSN16_IF_MM(_enc) 1067 + #endif 1068 + #ifndef _ASM_INSN32_IF_MM 1069 + #define _ASM_INSN32_IF_MM(_enc) 1070 + #endif 1071 + #ifndef _ASM_INSN_IF_MIPS 1072 + #define _ASM_INSN_IF_MIPS(_enc) 1073 + #endif 1074 + 1075 + /* 1060 1076 * TLB Invalidate Flush 1061 1077 */ 1062 1078 static inline void tlbinvf(void) ··· 1091 1053 __asm__ __volatile__( 1092 1054 ".set push\n\t" 1093 1055 ".set noreorder\n\t" 1094 - ".word 0x42000004\n\t" /* tlbinvf */ 1056 + "# tlbinvf\n\t" 1057 + _ASM_INSN_IF_MIPS(0x42000004) 1058 + _ASM_INSN32_IF_MM(0x0000537c) 1095 1059 ".set pop"); 1096 1060 } 1097 1061 ··· 1314 1274 " .set push \n" \ 1315 1275 " .set noat \n" \ 1316 1276 " .set mips32r2 \n" \ 1317 - " .insn \n" \ 1318 1277 " # mfhc0 $1, %1 \n" \ 1319 - " .word (0x40410000 | ((%1 & 0x1f) << 11)) \n" \ 1278 + _ASM_INSN_IF_MIPS(0x40410000 | ((%1 & 0x1f) << 11)) \ 1279 + _ASM_INSN32_IF_MM(0x002000f4 | ((%1 & 0x1f) << 16)) \ 1320 1280 " move %0, $1 \n" \ 1321 1281 " .set pop \n" \ 1322 1282 : "=r" (__res) \ ··· 1332 1292 " .set mips32r2 \n" \ 1333 1293 " move $1, %0 \n" \ 1334 1294 " # mthc0 $1, %1 \n" \ 1335 - " .insn \n" \ 1336 - " .word (0x40c10000 | ((%1 & 0x1f) << 11)) \n" \ 1295 + _ASM_INSN_IF_MIPS(0x40c10000 | ((%1 & 0x1f) << 11)) \ 1296 + _ASM_INSN32_IF_MM(0x002002f4 | ((%1 & 0x1f) << 16)) \ 1337 1297 " .set pop \n" \ 1338 1298 : \ 1339 1299 : "r" (value), "i" (register)); \ ··· 1783 1743 ".set\tpush\n\t" \ 1784 1744 ".set\tnoat\n\t" \ 1785 1745 "# mfgc0\t$1, $%1, %2\n\t" \ 1786 - ".word\t(0x40610000 | %1 << 11 | %2)\n\t" \ 1746 + _ASM_INSN_IF_MIPS(0x40610000 | %1 << 11 | %2) \ 1747 + _ASM_INSN32_IF_MM(0x002004fc | %1 << 16 | %2 << 11) \ 1787 1748 "move\t%0, $1\n\t" \ 1788 1749 ".set\tpop" \ 1789 1750 : "=r" (__res) \ ··· 1798 1757 ".set\tpush\n\t" \ 1799 1758 ".set\tnoat\n\t" \ 1800 1759 "# dmfgc0\t$1, $%1, %2\n\t" \ 1801 - ".word\t(0x40610100 | %1 << 11 | %2)\n\t" \ 1760 + _ASM_INSN_IF_MIPS(0x40610100 | %1 << 11 | %2) \ 1761 + _ASM_INSN32_IF_MM(0x582004fc | %1 << 16 | %2 << 11) \ 1802 1762 "move\t%0, $1\n\t" \ 1803 1763 ".set\tpop" \ 1804 1764 : "=r" (__res) \ ··· 1812 1770 __asm__ __volatile__( \ 1813 1771 ".set\tpush\n\t" \ 1814 1772 ".set\tnoat\n\t" \ 1815 - "move\t$1, %0\n\t" \ 1773 + "move\t$1, %z0\n\t" \ 1816 1774 "# mtgc0\t$1, $%1, %2\n\t" \ 1817 - ".word\t(0x40610200 | %1 << 11 | %2)\n\t" \ 1775 + _ASM_INSN_IF_MIPS(0x40610200 | %1 << 11 | %2) \ 1776 + _ASM_INSN32_IF_MM(0x002006fc | %1 << 16 | %2 << 11) \ 1818 1777 ".set\tpop" \ 1819 1778 : : "Jr" ((unsigned int)(value)), \ 1820 1779 "i" (register), "i" (sel)); \ ··· 1826 1783 __asm__ __volatile__( \ 1827 1784 ".set\tpush\n\t" \ 1828 1785 ".set\tnoat\n\t" \ 1829 - "move\t$1, %0\n\t" \ 1786 + "move\t$1, %z0\n\t" \ 1830 1787 "# dmtgc0\t$1, $%1, %2\n\t" \ 1831 - ".word\t(0x40610300 | %1 << 11 | %2)\n\t" \ 1788 + _ASM_INSN_IF_MIPS(0x40610300 | %1 << 11 | %2) \ 1789 + _ASM_INSN32_IF_MM(0x582006fc | %1 << 16 | %2 << 11) \ 1832 1790 ".set\tpop" \ 1833 1791 : : "Jr" (value), \ 1834 1792 "i" (register), "i" (sel)); \ ··· 2290 2246 2291 2247 #else 2292 2248 2293 - #ifdef CONFIG_CPU_MICROMIPS 2294 2249 #define rddsp(mask) \ 2295 2250 ({ \ 2296 2251 unsigned int __res; \ ··· 2298 2255 " .set push \n" \ 2299 2256 " .set noat \n" \ 2300 2257 " # rddsp $1, %x1 \n" \ 2301 - " .hword ((0x0020067c | (%x1 << 14)) >> 16) \n" \ 2302 - " .hword ((0x0020067c | (%x1 << 14)) & 0xffff) \n" \ 2258 + _ASM_INSN_IF_MIPS(0x7c000cb8 | (%x1 << 16)) \ 2259 + _ASM_INSN32_IF_MM(0x0020067c | (%x1 << 14)) \ 2303 2260 " move %0, $1 \n" \ 2304 2261 " .set pop \n" \ 2305 2262 : "=r" (__res) \ ··· 2314 2271 " .set noat \n" \ 2315 2272 " move $1, %0 \n" \ 2316 2273 " # wrdsp $1, %x1 \n" \ 2317 - " .hword ((0x0020167c | (%x1 << 14)) >> 16) \n" \ 2318 - " .hword ((0x0020167c | (%x1 << 14)) & 0xffff) \n" \ 2274 + _ASM_INSN_IF_MIPS(0x7c2004f8 | (%x1 << 11)) \ 2275 + _ASM_INSN32_IF_MM(0x0020167c | (%x1 << 14)) \ 2319 2276 " .set pop \n" \ 2320 2277 : \ 2321 - : "r" (val), "i" (mask)); \ 2322 - } while (0) 2323 - 2324 - #define _umips_dsp_mfxxx(ins) \ 2325 - ({ \ 2326 - unsigned long __treg; \ 2327 - \ 2328 - __asm__ __volatile__( \ 2329 - " .set push \n" \ 2330 - " .set noat \n" \ 2331 - " .hword 0x0001 \n" \ 2332 - " .hword %x1 \n" \ 2333 - " move %0, $1 \n" \ 2334 - " .set pop \n" \ 2335 - : "=r" (__treg) \ 2336 - : "i" (ins)); \ 2337 - __treg; \ 2338 - }) 2339 - 2340 - #define _umips_dsp_mtxxx(val, ins) \ 2341 - do { \ 2342 - __asm__ __volatile__( \ 2343 - " .set push \n" \ 2344 - " .set noat \n" \ 2345 - " move $1, %0 \n" \ 2346 - " .hword 0x0001 \n" \ 2347 - " .hword %x1 \n" \ 2348 - " .set pop \n" \ 2349 - : \ 2350 - : "r" (val), "i" (ins)); \ 2351 - } while (0) 2352 - 2353 - #define _umips_dsp_mflo(reg) _umips_dsp_mfxxx((reg << 14) | 0x107c) 2354 - #define _umips_dsp_mfhi(reg) _umips_dsp_mfxxx((reg << 14) | 0x007c) 2355 - 2356 - #define _umips_dsp_mtlo(val, reg) _umips_dsp_mtxxx(val, ((reg << 14) | 0x307c)) 2357 - #define _umips_dsp_mthi(val, reg) _umips_dsp_mtxxx(val, ((reg << 14) | 0x207c)) 2358 - 2359 - #define mflo0() _umips_dsp_mflo(0) 2360 - #define mflo1() _umips_dsp_mflo(1) 2361 - #define mflo2() _umips_dsp_mflo(2) 2362 - #define mflo3() _umips_dsp_mflo(3) 2363 - 2364 - #define mfhi0() _umips_dsp_mfhi(0) 2365 - #define mfhi1() _umips_dsp_mfhi(1) 2366 - #define mfhi2() _umips_dsp_mfhi(2) 2367 - #define mfhi3() _umips_dsp_mfhi(3) 2368 - 2369 - #define mtlo0(x) _umips_dsp_mtlo(x, 0) 2370 - #define mtlo1(x) _umips_dsp_mtlo(x, 1) 2371 - #define mtlo2(x) _umips_dsp_mtlo(x, 2) 2372 - #define mtlo3(x) _umips_dsp_mtlo(x, 3) 2373 - 2374 - #define mthi0(x) _umips_dsp_mthi(x, 0) 2375 - #define mthi1(x) _umips_dsp_mthi(x, 1) 2376 - #define mthi2(x) _umips_dsp_mthi(x, 2) 2377 - #define mthi3(x) _umips_dsp_mthi(x, 3) 2378 - 2379 - #else /* !CONFIG_CPU_MICROMIPS */ 2380 - #define rddsp(mask) \ 2381 - ({ \ 2382 - unsigned int __res; \ 2383 - \ 2384 - __asm__ __volatile__( \ 2385 - " .set push \n" \ 2386 - " .set noat \n" \ 2387 - " # rddsp $1, %x1 \n" \ 2388 - " .word 0x7c000cb8 | (%x1 << 16) \n" \ 2389 - " move %0, $1 \n" \ 2390 - " .set pop \n" \ 2391 - : "=r" (__res) \ 2392 - : "i" (mask)); \ 2393 - __res; \ 2394 - }) 2395 - 2396 - #define wrdsp(val, mask) \ 2397 - do { \ 2398 - __asm__ __volatile__( \ 2399 - " .set push \n" \ 2400 - " .set noat \n" \ 2401 - " move $1, %0 \n" \ 2402 - " # wrdsp $1, %x1 \n" \ 2403 - " .word 0x7c2004f8 | (%x1 << 11) \n" \ 2404 - " .set pop \n" \ 2405 - : \ 2406 2278 : "r" (val), "i" (mask)); \ 2407 2279 } while (0) 2408 2280 ··· 2328 2370 __asm__ __volatile__( \ 2329 2371 " .set push \n" \ 2330 2372 " .set noat \n" \ 2331 - " .word (0x00000810 | %1) \n" \ 2373 + _ASM_INSN_IF_MIPS(0x00000810 | %X1) \ 2374 + _ASM_INSN32_IF_MM(0x0001007c | %x1) \ 2332 2375 " move %0, $1 \n" \ 2333 2376 " .set pop \n" \ 2334 2377 : "=r" (__treg) \ ··· 2343 2384 " .set push \n" \ 2344 2385 " .set noat \n" \ 2345 2386 " move $1, %0 \n" \ 2346 - " .word (0x00200011 | %1) \n" \ 2387 + _ASM_INSN_IF_MIPS(0x00200011 | %X1) \ 2388 + _ASM_INSN32_IF_MM(0x0001207c | %x1) \ 2347 2389 " .set pop \n" \ 2348 2390 : \ 2349 2391 : "r" (val), "i" (ins)); \ 2350 2392 } while (0) 2393 + 2394 + #ifdef CONFIG_CPU_MICROMIPS 2395 + 2396 + #define _dsp_mflo(reg) _dsp_mfxxx((reg << 14) | 0x1000) 2397 + #define _dsp_mfhi(reg) _dsp_mfxxx((reg << 14) | 0x0000) 2398 + 2399 + #define _dsp_mtlo(val, reg) _dsp_mtxxx(val, ((reg << 14) | 0x1000)) 2400 + #define _dsp_mthi(val, reg) _dsp_mtxxx(val, ((reg << 14) | 0x0000)) 2401 + 2402 + #else /* !CONFIG_CPU_MICROMIPS */ 2351 2403 2352 2404 #define _dsp_mflo(reg) _dsp_mfxxx((reg << 21) | 0x0002) 2353 2405 #define _dsp_mfhi(reg) _dsp_mfxxx((reg << 21) | 0x0000) 2354 2406 2355 2407 #define _dsp_mtlo(val, reg) _dsp_mtxxx(val, ((reg << 11) | 0x0002)) 2356 2408 #define _dsp_mthi(val, reg) _dsp_mtxxx(val, ((reg << 11) | 0x0000)) 2409 + 2410 + #endif /* CONFIG_CPU_MICROMIPS */ 2357 2411 2358 2412 #define mflo0() _dsp_mflo(0) 2359 2413 #define mflo1() _dsp_mflo(1) ··· 2388 2416 #define mthi2(x) _dsp_mthi(x, 2) 2389 2417 #define mthi3(x) _dsp_mthi(x, 3) 2390 2418 2391 - #endif /* CONFIG_CPU_MICROMIPS */ 2392 2419 #endif 2393 2420 2394 2421 /* ··· 2527 2556 { 2528 2557 __asm__ __volatile__( 2529 2558 "# tlbgp\n\t" 2530 - ".word 0x42000010"); 2559 + _ASM_INSN_IF_MIPS(0x42000010) 2560 + _ASM_INSN32_IF_MM(0x0000017c)); 2531 2561 } 2532 2562 2533 2563 static inline void guest_tlb_read(void) 2534 2564 { 2535 2565 __asm__ __volatile__( 2536 2566 "# tlbgr\n\t" 2537 - ".word 0x42000009"); 2567 + _ASM_INSN_IF_MIPS(0x42000009) 2568 + _ASM_INSN32_IF_MM(0x0000117c)); 2538 2569 } 2539 2570 2540 2571 static inline void guest_tlb_write_indexed(void) 2541 2572 { 2542 2573 __asm__ __volatile__( 2543 2574 "# tlbgwi\n\t" 2544 - ".word 0x4200000a"); 2575 + _ASM_INSN_IF_MIPS(0x4200000a) 2576 + _ASM_INSN32_IF_MM(0x0000217c)); 2545 2577 } 2546 2578 2547 2579 static inline void guest_tlb_write_random(void) 2548 2580 { 2549 2581 __asm__ __volatile__( 2550 2582 "# tlbgwr\n\t" 2551 - ".word 0x4200000e"); 2583 + _ASM_INSN_IF_MIPS(0x4200000e) 2584 + _ASM_INSN32_IF_MM(0x0000317c)); 2552 2585 } 2553 2586 2554 2587 /* ··· 2562 2587 { 2563 2588 __asm__ __volatile__( 2564 2589 "# tlbginvf\n\t" 2565 - ".word 0x4200000c"); 2590 + _ASM_INSN_IF_MIPS(0x4200000c) 2591 + _ASM_INSN32_IF_MM(0x0000517c)); 2566 2592 } 2567 2593 2568 2594 #endif /* !TOOLCHAIN_SUPPORTS_VIRT */
+8 -13
arch/mips/include/asm/msa.h
··· 192 192 * allow compilation with toolchains that do not support MSA. Once all 193 193 * toolchains in use support MSA these can be removed. 194 194 */ 195 - #ifdef CONFIG_CPU_MICROMIPS 196 - #define CFC_MSA_INSN 0x587e0056 197 - #define CTC_MSA_INSN 0x583e0816 198 - #else 199 - #define CFC_MSA_INSN 0x787e0059 200 - #define CTC_MSA_INSN 0x783e0819 201 - #endif 202 195 203 196 #define __BUILD_MSA_CTL_REG(name, cs) \ 204 197 static inline unsigned int read_msa_##name(void) \ ··· 200 207 __asm__ __volatile__( \ 201 208 " .set push\n" \ 202 209 " .set noat\n" \ 203 - " .insn\n" \ 204 - " .word %1 | (" #cs " << 11)\n" \ 210 + " # cfcmsa $1, $%1\n" \ 211 + _ASM_INSN_IF_MIPS(0x787e0059 | %1 << 11) \ 212 + _ASM_INSN32_IF_MM(0x587e0056 | %1 << 11) \ 205 213 " move %0, $1\n" \ 206 214 " .set pop\n" \ 207 - : "=r"(reg) : "i"(CFC_MSA_INSN)); \ 215 + : "=r"(reg) : "i"(cs)); \ 208 216 return reg; \ 209 217 } \ 210 218 \ ··· 215 221 " .set push\n" \ 216 222 " .set noat\n" \ 217 223 " move $1, %0\n" \ 218 - " .insn\n" \ 219 - " .word %1 | (" #cs " << 6)\n" \ 224 + " # ctcmsa $%1, $1\n" \ 225 + _ASM_INSN_IF_MIPS(0x783e0819 | %1 << 6) \ 226 + _ASM_INSN32_IF_MM(0x583e0816 | %1 << 6) \ 220 227 " .set pop\n" \ 221 - : : "r"(val), "i"(CTC_MSA_INSN)); \ 228 + : : "r"(val), "i"(cs)); \ 222 229 } 223 230 224 231 #endif /* !TOOLCHAIN_SUPPORTS_MSA */
+1 -1
arch/mips/include/asm/octeon/cvmx-cmd-queue.h
··· 146 146 * This structure contains the global state of all command queues. 147 147 * It is stored in a bootmem named block and shared by all 148 148 * applications running on Octeon. Tickets are stored in a differnet 149 - * cahce line that queue information to reduce the contention on the 149 + * cache line that queue information to reduce the contention on the 150 150 * ll/sc used to get a ticket. If this is not the case, the update 151 151 * of queue state causes the ll/sc to fail quite often. 152 152 */
+1 -1
arch/mips/include/asm/octeon/cvmx-helper-board.h
··· 94 94 * @phy_addr: The address of the PHY to program 95 95 * @link_flags: 96 96 * Flags to control autonegotiation. Bit 0 is autonegotiation 97 - * enable/disable to maintain backware compatibility. 97 + * enable/disable to maintain backward compatibility. 98 98 * @link_info: Link speed to program. If the speed is zero and autonegotiation 99 99 * is enabled, all possible negotiation speeds are advertised. 100 100 *
+1 -1
arch/mips/include/asm/octeon/cvmx-ipd.h
··· 39 39 40 40 enum cvmx_ipd_mode { 41 41 CVMX_IPD_OPC_MODE_STT = 0LL, /* All blocks DRAM, not cached in L2 */ 42 - CVMX_IPD_OPC_MODE_STF = 1LL, /* All bloccks into L2 */ 42 + CVMX_IPD_OPC_MODE_STF = 1LL, /* All blocks into L2 */ 43 43 CVMX_IPD_OPC_MODE_STF1_STT = 2LL, /* 1st block L2, rest DRAM */ 44 44 CVMX_IPD_OPC_MODE_STF2_STT = 3LL /* 1st, 2nd blocks L2, rest DRAM */ 45 45 };
+1 -1
arch/mips/include/asm/octeon/cvmx-pow.h
··· 2051 2051 } 2052 2052 2053 2053 /** 2054 - * Descchedules the current work queue entry. 2054 + * Deschedules the current work queue entry. 2055 2055 * 2056 2056 * @no_sched: no schedule flag value to be set on the work queue 2057 2057 * entry. If this is set the entry will not be
+1 -1
arch/mips/include/asm/sgi/hpc3.h
··· 39 39 volatile u32 pbdma_dptr; /* pbus dma channel desc ptr */ 40 40 u32 _unused0[0x1000/4 - 2]; /* padding */ 41 41 volatile u32 pbdma_ctrl; /* pbus dma channel control register has 42 - * copletely different meaning for read 42 + * completely different meaning for read 43 43 * compared with write */ 44 44 /* read */ 45 45 #define HPC3_PDMACTRL_INT 0x00000001 /* interrupt (cleared after read) */
+2 -2
arch/mips/kernel/branch.c
··· 481 481 /* 482 482 * OK we are here either because we hit a NAL 483 483 * instruction or because we are emulating an 484 - * old bltzal{,l} one. Lets figure out what the 484 + * old bltzal{,l} one. Let's figure out what the 485 485 * case really is. 486 486 */ 487 487 if (!insn.i_format.rs) { ··· 515 515 /* 516 516 * OK we are here either because we hit a BAL 517 517 * instruction or because we are emulating an 518 - * old bgezal{,l} one. Lets figure out what the 518 + * old bgezal{,l} one. Let's figure out what the 519 519 * case really is. 520 520 */ 521 521 if (!insn.i_format.rs) {
+15
arch/mips/kernel/cps-vec.S
··· 441 441 mfc0 t0, CP0_CONFIG 442 442 mttc0 t0, CP0_CONFIG 443 443 444 + /* 445 + * Copy the EVA config from this VPE if the CPU supports it. 446 + * CONFIG3 must exist to be running MT startup - just read it. 447 + */ 448 + mfc0 t0, CP0_CONFIG, 3 449 + and t0, t0, MIPS_CONF3_SC 450 + beqz t0, 3f 451 + nop 452 + mfc0 t0, CP0_SEGCTL0 453 + mttc0 t0, CP0_SEGCTL0 454 + mfc0 t0, CP0_SEGCTL1 455 + mttc0 t0, CP0_SEGCTL1 456 + mfc0 t0, CP0_SEGCTL2 457 + mttc0 t0, CP0_SEGCTL2 458 + 3: 444 459 /* Ensure no software interrupts are pending */ 445 460 mttc0 zero, CP0_CAUSE 446 461 mttc0 zero, CP0_STATUS
+1 -3
arch/mips/kernel/cpu-probe.c
··· 833 833 c->options |= MIPS_CPU_MAAR; 834 834 if (config5 & MIPS_CONF5_LLB) 835 835 c->options |= MIPS_CPU_RW_LLB; 836 - #ifdef CONFIG_XPA 837 836 if (config5 & MIPS_CONF5_MVH) 838 - c->options |= MIPS_CPU_XPA; 839 - #endif 837 + c->options |= MIPS_CPU_MVH; 840 838 if (cpu_has_mips_r6 && (config5 & MIPS_CONF5_VP)) 841 839 c->options |= MIPS_CPU_VP; 842 840
+1 -1
arch/mips/kernel/elf.c
··· 88 88 elf32 = ehdr->e32.e_ident[EI_CLASS] == ELFCLASS32; 89 89 flags = elf32 ? ehdr->e32.e_flags : ehdr->e64.e_flags; 90 90 91 - /* Lets see if this is an O32 ELF */ 91 + /* Let's see if this is an O32 ELF */ 92 92 if (elf32) { 93 93 if (flags & EF_MIPS_FP64) { 94 94 /*
+3
arch/mips/kernel/irq.c
··· 54 54 for (i = 0; i < NR_IRQS; i++) 55 55 irq_set_noprobe(i); 56 56 57 + if (cpu_has_veic) 58 + clear_c0_status(ST0_IM); 59 + 57 60 arch_init_irq(); 58 61 } 59 62
+1 -1
arch/mips/kernel/mips-r2-to-r6-emul.c
··· 2202 2202 } 2203 2203 2204 2204 /* 2205 - * Lets not return to userland just yet. It's constly and 2205 + * Let's not return to userland just yet. It's costly and 2206 2206 * it's likely we have more R2 instructions to emulate 2207 2207 */ 2208 2208 if (!err && (pass++ < MIPS_R2_EMUL_TOTAL_PASS)) {
+1 -1
arch/mips/kernel/process.c
··· 345 345 return 0; 346 346 if (info->pc_offset < 0) /* leaf */ 347 347 return 1; 348 - /* prologue seems boggus... */ 348 + /* prologue seems bogus... */ 349 349 err: 350 350 return -1; 351 351 }
-8
arch/mips/kernel/signal.c
··· 770 770 sigset_t *oldset = sigmask_to_save(); 771 771 int ret; 772 772 struct mips_abi *abi = current->thread.abi; 773 - #ifdef CONFIG_CPU_MICROMIPS 774 - void *vdso; 775 - unsigned long tmp = (unsigned long)current->mm->context.vdso; 776 - 777 - set_isa16_mode(tmp); 778 - vdso = (void *)tmp; 779 - #else 780 773 void *vdso = current->mm->context.vdso; 781 - #endif 782 774 783 775 if (regs->regs[0]) { 784 776 switch(regs->regs[2]) {
+6 -2
arch/mips/kernel/smp-cps.c
··· 359 359 BUG_ON(ident != mips_cm_vp_id(smp_processor_id())); 360 360 } 361 361 362 - change_c0_status(ST0_IM, STATUSF_IP2 | STATUSF_IP3 | STATUSF_IP4 | 363 - STATUSF_IP5 | STATUSF_IP6 | STATUSF_IP7); 362 + if (cpu_has_veic) 363 + clear_c0_status(ST0_IM); 364 + else 365 + change_c0_status(ST0_IM, STATUSF_IP2 | STATUSF_IP3 | 366 + STATUSF_IP4 | STATUSF_IP5 | 367 + STATUSF_IP6 | STATUSF_IP7); 364 368 } 365 369 366 370 static void cps_smp_finish(void)
+2 -2
arch/mips/lasat/picvue_proc.c
··· 43 43 { 44 44 int lineno = *(int *)m->private; 45 45 46 - if (lineno < 0 || lineno > PVC_NLINES) { 46 + if (lineno < 0 || lineno >= PVC_NLINES) { 47 47 printk(KERN_WARNING "proc_read_line: invalid lineno %d\n", lineno); 48 48 return 0; 49 49 } ··· 67 67 char kbuf[PVC_LINELEN]; 68 68 size_t len; 69 69 70 - BUG_ON(lineno < 0 || lineno > PVC_NLINES); 70 + BUG_ON(lineno < 0 || lineno >= PVC_NLINES); 71 71 72 72 len = min(count, sizeof(kbuf) - 1); 73 73 if (copy_from_user(kbuf, buf, len))
+1 -1
arch/mips/lib/ashldi3.c
··· 2 2 3 3 #include "libgcc.h" 4 4 5 - long long __ashldi3(long long u, word_type b) 5 + long long notrace __ashldi3(long long u, word_type b) 6 6 { 7 7 DWunion uu, w; 8 8 word_type bm;
+1 -1
arch/mips/lib/ashrdi3.c
··· 2 2 3 3 #include "libgcc.h" 4 4 5 - long long __ashrdi3(long long u, word_type b) 5 + long long notrace __ashrdi3(long long u, word_type b) 6 6 { 7 7 DWunion uu, w; 8 8 word_type bm;
+1 -1
arch/mips/lib/bswapdi.c
··· 1 1 #include <linux/module.h> 2 2 3 - unsigned long long __bswapdi2(unsigned long long u) 3 + unsigned long long notrace __bswapdi2(unsigned long long u) 4 4 { 5 5 return (((u) & 0xff00000000000000ull) >> 56) | 6 6 (((u) & 0x00ff000000000000ull) >> 40) |
+1 -1
arch/mips/lib/bswapsi.c
··· 1 1 #include <linux/module.h> 2 2 3 - unsigned int __bswapsi2(unsigned int u) 3 + unsigned int notrace __bswapsi2(unsigned int u) 4 4 { 5 5 return (((u) & 0xff000000) >> 24) | 6 6 (((u) & 0x00ff0000) >> 8) |
+1 -1
arch/mips/lib/cmpdi2.c
··· 2 2 3 3 #include "libgcc.h" 4 4 5 - word_type __cmpdi2(long long a, long long b) 5 + word_type notrace __cmpdi2(long long a, long long b) 6 6 { 7 7 const DWunion au = { 8 8 .ll = a
+1 -1
arch/mips/lib/lshrdi3.c
··· 2 2 3 3 #include "libgcc.h" 4 4 5 - long long __lshrdi3(long long u, word_type b) 5 + long long notrace __lshrdi3(long long u, word_type b) 6 6 { 7 7 DWunion uu, w; 8 8 word_type bm;
+1 -1
arch/mips/lib/memcpy.S
··· 256 256 257 257 /* 258 258 * Macro to build the __copy_user common code 259 - * Arguements: 259 + * Arguments: 260 260 * mode : LEGACY_MODE or EVA_MODE 261 261 * from : Source operand. USEROP or KERNELOP 262 262 * to : Destination operand. USEROP or KERNELOP
+1 -1
arch/mips/lib/ucmpdi2.c
··· 2 2 3 3 #include "libgcc.h" 4 4 5 - word_type __ucmpdi2(unsigned long long a, unsigned long long b) 5 + word_type notrace __ucmpdi2(unsigned long long a, unsigned long long b) 6 6 { 7 7 const DWunion au = {.ll = a}; 8 8 const DWunion bu = {.ll = b};
+1 -1
arch/mips/loongson64/loongson-3/hpet.c
··· 212 212 /* set hpet base address */ 213 213 smbus_write(SMBUS_PCI_REGB4, HPET_ADDR); 214 214 215 - /* enable decodeing of access to HPET MMIO*/ 215 + /* enable decoding of access to HPET MMIO*/ 216 216 smbus_enable(SMBUS_PCI_REG40, (1 << 28)); 217 217 218 218 /* HPET irq enable */
+2 -2
arch/mips/math-emu/dsemul.c
··· 8 8 #include "ieee754.h" 9 9 10 10 /* 11 - * Emulate the arbritrary instruction ir at xcp->cp0_epc. Required when 11 + * Emulate the arbitrary instruction ir at xcp->cp0_epc. Required when 12 12 * we have to emulate the instruction in a COP1 branch delay slot. Do 13 13 * not change cp0_epc due to the instruction 14 14 * ··· 88 88 fr = (struct emuframe __user *) 89 89 ((regs->regs[29] - sizeof(struct emuframe)) & ~0x7); 90 90 91 - /* Verify that the stack pointer is not competely insane */ 91 + /* Verify that the stack pointer is not completely insane */ 92 92 if (unlikely(!access_ok(VERIFY_WRITE, fr, sizeof(struct emuframe)))) 93 93 return SIGBUS; 94 94
+18 -4
arch/mips/mm/tlbex.c
··· 2361 2361 (config & MIPS_PWFIELD_PTEI_MASK) >> MIPS_PWFIELD_PTEI_SHIFT); 2362 2362 2363 2363 config = read_c0_pwsize(); 2364 - pr_debug("PWSize (0x%0*lx): GDW: 0x%02lx UDW: 0x%02lx MDW: 0x%02lx PTW: 0x%02lx PTEW: 0x%02lx\n", 2364 + pr_debug("PWSize (0x%0*lx): PS: 0x%lx GDW: 0x%02lx UDW: 0x%02lx MDW: 0x%02lx PTW: 0x%02lx PTEW: 0x%02lx\n", 2365 2365 field, config, 2366 + (config & MIPS_PWSIZE_PS_MASK) >> MIPS_PWSIZE_PS_SHIFT, 2366 2367 (config & MIPS_PWSIZE_GDW_MASK) >> MIPS_PWSIZE_GDW_SHIFT, 2367 2368 (config & MIPS_PWSIZE_UDW_MASK) >> MIPS_PWSIZE_UDW_SHIFT, 2368 2369 (config & MIPS_PWSIZE_MDW_MASK) >> MIPS_PWSIZE_MDW_SHIFT, ··· 2371 2370 (config & MIPS_PWSIZE_PTEW_MASK) >> MIPS_PWSIZE_PTEW_SHIFT); 2372 2371 2373 2372 pwctl = read_c0_pwctl(); 2374 - pr_debug("PWCtl (0x%x): PWEn: 0x%x DPH: 0x%x HugePg: 0x%x Psn: 0x%x\n", 2373 + pr_debug("PWCtl (0x%x): PWEn: 0x%x XK: 0x%x XS: 0x%x XU: 0x%x DPH: 0x%x HugePg: 0x%x Psn: 0x%x\n", 2375 2374 pwctl, 2376 2375 (pwctl & MIPS_PWCTL_PWEN_MASK) >> MIPS_PWCTL_PWEN_SHIFT, 2376 + (pwctl & MIPS_PWCTL_XK_MASK) >> MIPS_PWCTL_XK_SHIFT, 2377 + (pwctl & MIPS_PWCTL_XS_MASK) >> MIPS_PWCTL_XS_SHIFT, 2378 + (pwctl & MIPS_PWCTL_XU_MASK) >> MIPS_PWCTL_XU_SHIFT, 2377 2379 (pwctl & MIPS_PWCTL_DPH_MASK) >> MIPS_PWCTL_DPH_SHIFT, 2378 2380 (pwctl & MIPS_PWCTL_HUGEPG_MASK) >> MIPS_PWCTL_HUGEPG_SHIFT, 2379 2381 (pwctl & MIPS_PWCTL_PSN_MASK) >> MIPS_PWCTL_PSN_SHIFT); ··· 2431 2427 if (CONFIG_PGTABLE_LEVELS >= 3) 2432 2428 pwsize |= ilog2(PTRS_PER_PMD) << MIPS_PWSIZE_MDW_SHIFT; 2433 2429 2434 - pwsize |= ilog2(sizeof(pte_t)/4) << MIPS_PWSIZE_PTEW_SHIFT; 2430 + /* Set pointer size to size of directory pointers */ 2431 + if (config_enabled(CONFIG_64BIT)) 2432 + pwsize |= MIPS_PWSIZE_PS_MASK; 2433 + /* PTEs may be multiple pointers long (e.g. with XPA) */ 2434 + pwsize |= ((PTE_T_LOG2 - PGD_T_LOG2) << MIPS_PWSIZE_PTEW_SHIFT) 2435 + & MIPS_PWSIZE_PTEW_MASK; 2435 2436 2436 2437 write_c0_pwsize(pwsize); 2437 2438 2438 2439 /* Make sure everything is set before we enable the HTW */ 2439 2440 back_to_back_c0_hazard(); 2440 2441 2441 - /* Enable HTW and disable the rest of the pwctl fields */ 2442 + /* 2443 + * Enable HTW (and only for XUSeg on 64-bit), and disable the rest of 2444 + * the pwctl fields. 2445 + */ 2442 2446 config = 1 << MIPS_PWCTL_PWEN_SHIFT; 2447 + if (config_enabled(CONFIG_64BIT)) 2448 + config |= MIPS_PWCTL_XU_MASK; 2443 2449 write_c0_pwctl(config); 2444 2450 pr_info("Hardware Page Table Walker enabled\n"); 2445 2451
+1 -1
arch/mips/oprofile/op_impl.h
··· 24 24 unsigned long unit_mask; 25 25 }; 26 26 27 - /* Per-architecture configury and hooks. */ 27 + /* Per-architecture configure and hooks. */ 28 28 struct op_mips_model { 29 29 void (*reg_setup) (struct op_counter_config *); 30 30 void (*cpu_setup) (void *dummy);
+2 -2
arch/mips/pci/ops-bridge.c
··· 33 33 * The Bridge ASIC supports both type 0 and type 1 access. Type 1 is 34 34 * not really documented, so right now I can't write code which uses it. 35 35 * Therefore we use type 0 accesses for now even though they won't work 36 - * correcly for PCI-to-PCI bridges. 36 + * correctly for PCI-to-PCI bridges. 37 37 * 38 - * The function is complicated by the ultimate brokeness of the IOC3 chip 38 + * The function is complicated by the ultimate brokenness of the IOC3 chip 39 39 * which is used in SGI systems. The IOC3 can only handle 32-bit PCI 40 40 * accesses and does only decode parts of it's address space. 41 41 */
+6 -2
arch/mips/pistachio/init.c
··· 83 83 } 84 84 } 85 85 86 - void __init plat_mem_setup(void) 86 + void __init *plat_get_fdt(void) 87 87 { 88 88 if (fw_arg0 != -2) 89 89 panic("Device-tree not present"); 90 + return (void *)fw_arg1; 91 + } 90 92 91 - __dt_setup_arch((void *)fw_arg1); 93 + void __init plat_mem_setup(void) 94 + { 95 + __dt_setup_arch(plat_get_fdt()); 92 96 93 97 plat_setup_iocoherency(); 94 98 }
+106 -6
arch/mips/ralink/mt7620.c
··· 188 188 FUNC("gpio", 0, 11, 1), 189 189 }; 190 190 191 + static struct rt2880_pmx_func p4led_kn_grp_mt7628[] = { 192 + FUNC("jtag", 3, 30, 1), 193 + FUNC("util", 2, 30, 1), 194 + FUNC("gpio", 1, 30, 1), 195 + FUNC("p4led_kn", 0, 30, 1), 196 + }; 197 + 198 + static struct rt2880_pmx_func p3led_kn_grp_mt7628[] = { 199 + FUNC("jtag", 3, 31, 1), 200 + FUNC("util", 2, 31, 1), 201 + FUNC("gpio", 1, 31, 1), 202 + FUNC("p3led_kn", 0, 31, 1), 203 + }; 204 + 205 + static struct rt2880_pmx_func p2led_kn_grp_mt7628[] = { 206 + FUNC("jtag", 3, 32, 1), 207 + FUNC("util", 2, 32, 1), 208 + FUNC("gpio", 1, 32, 1), 209 + FUNC("p2led_kn", 0, 32, 1), 210 + }; 211 + 212 + static struct rt2880_pmx_func p1led_kn_grp_mt7628[] = { 213 + FUNC("jtag", 3, 33, 1), 214 + FUNC("util", 2, 33, 1), 215 + FUNC("gpio", 1, 33, 1), 216 + FUNC("p1led_kn", 0, 33, 1), 217 + }; 218 + 219 + static struct rt2880_pmx_func p0led_kn_grp_mt7628[] = { 220 + FUNC("jtag", 3, 34, 1), 221 + FUNC("rsvd", 2, 34, 1), 222 + FUNC("gpio", 1, 34, 1), 223 + FUNC("p0led_kn", 0, 34, 1), 224 + }; 225 + 191 226 static struct rt2880_pmx_func wled_kn_grp_mt7628[] = { 192 227 FUNC("rsvd", 3, 35, 1), 193 228 FUNC("rsvd", 2, 35, 1), ··· 230 195 FUNC("wled_kn", 0, 35, 1), 231 196 }; 232 197 198 + static struct rt2880_pmx_func p4led_an_grp_mt7628[] = { 199 + FUNC("jtag", 3, 39, 1), 200 + FUNC("util", 2, 39, 1), 201 + FUNC("gpio", 1, 39, 1), 202 + FUNC("p4led_an", 0, 39, 1), 203 + }; 204 + 205 + static struct rt2880_pmx_func p3led_an_grp_mt7628[] = { 206 + FUNC("jtag", 3, 40, 1), 207 + FUNC("util", 2, 40, 1), 208 + FUNC("gpio", 1, 40, 1), 209 + FUNC("p3led_an", 0, 40, 1), 210 + }; 211 + 212 + static struct rt2880_pmx_func p2led_an_grp_mt7628[] = { 213 + FUNC("jtag", 3, 41, 1), 214 + FUNC("util", 2, 41, 1), 215 + FUNC("gpio", 1, 41, 1), 216 + FUNC("p2led_an", 0, 41, 1), 217 + }; 218 + 219 + static struct rt2880_pmx_func p1led_an_grp_mt7628[] = { 220 + FUNC("jtag", 3, 42, 1), 221 + FUNC("util", 2, 42, 1), 222 + FUNC("gpio", 1, 42, 1), 223 + FUNC("p1led_an", 0, 42, 1), 224 + }; 225 + 226 + static struct rt2880_pmx_func p0led_an_grp_mt7628[] = { 227 + FUNC("jtag", 3, 43, 1), 228 + FUNC("rsvd", 2, 43, 1), 229 + FUNC("gpio", 1, 43, 1), 230 + FUNC("p0led_an", 0, 43, 1), 231 + }; 232 + 233 233 static struct rt2880_pmx_func wled_an_grp_mt7628[] = { 234 - FUNC("rsvd", 3, 35, 1), 235 - FUNC("rsvd", 2, 35, 1), 236 - FUNC("gpio", 1, 35, 1), 237 - FUNC("wled_an", 0, 35, 1), 234 + FUNC("rsvd", 3, 44, 1), 235 + FUNC("rsvd", 2, 44, 1), 236 + FUNC("gpio", 1, 44, 1), 237 + FUNC("wled_an", 0, 44, 1), 238 238 }; 239 239 240 240 #define MT7628_GPIO_MODE_MASK 0x3 241 241 242 + #define MT7628_GPIO_MODE_P4LED_KN 58 243 + #define MT7628_GPIO_MODE_P3LED_KN 56 244 + #define MT7628_GPIO_MODE_P2LED_KN 54 245 + #define MT7628_GPIO_MODE_P1LED_KN 52 246 + #define MT7628_GPIO_MODE_P0LED_KN 50 242 247 #define MT7628_GPIO_MODE_WLED_KN 48 248 + #define MT7628_GPIO_MODE_P4LED_AN 42 249 + #define MT7628_GPIO_MODE_P3LED_AN 40 250 + #define MT7628_GPIO_MODE_P2LED_AN 38 251 + #define MT7628_GPIO_MODE_P1LED_AN 36 252 + #define MT7628_GPIO_MODE_P0LED_AN 34 243 253 #define MT7628_GPIO_MODE_WLED_AN 32 244 254 #define MT7628_GPIO_MODE_PWM1 30 245 255 #define MT7628_GPIO_MODE_PWM0 28 ··· 303 223 #define MT7628_GPIO_MODE_GPIO 0 304 224 305 225 static struct rt2880_pmx_group mt7628an_pinmux_data[] = { 306 - GRP_G("pmw1", pwm1_grp_mt7628, MT7628_GPIO_MODE_MASK, 226 + GRP_G("pwm1", pwm1_grp_mt7628, MT7628_GPIO_MODE_MASK, 307 227 1, MT7628_GPIO_MODE_PWM1), 308 - GRP_G("pmw0", pwm0_grp_mt7628, MT7628_GPIO_MODE_MASK, 228 + GRP_G("pwm0", pwm0_grp_mt7628, MT7628_GPIO_MODE_MASK, 309 229 1, MT7628_GPIO_MODE_PWM0), 310 230 GRP_G("uart2", uart2_grp_mt7628, MT7628_GPIO_MODE_MASK, 311 231 1, MT7628_GPIO_MODE_UART2), ··· 331 251 1, MT7628_GPIO_MODE_GPIO), 332 252 GRP_G("wled_an", wled_an_grp_mt7628, MT7628_GPIO_MODE_MASK, 333 253 1, MT7628_GPIO_MODE_WLED_AN), 254 + GRP_G("p0led_an", p0led_an_grp_mt7628, MT7628_GPIO_MODE_MASK, 255 + 1, MT7628_GPIO_MODE_P0LED_AN), 256 + GRP_G("p1led_an", p1led_an_grp_mt7628, MT7628_GPIO_MODE_MASK, 257 + 1, MT7628_GPIO_MODE_P1LED_AN), 258 + GRP_G("p2led_an", p2led_an_grp_mt7628, MT7628_GPIO_MODE_MASK, 259 + 1, MT7628_GPIO_MODE_P2LED_AN), 260 + GRP_G("p3led_an", p3led_an_grp_mt7628, MT7628_GPIO_MODE_MASK, 261 + 1, MT7628_GPIO_MODE_P3LED_AN), 262 + GRP_G("p4led_an", p4led_an_grp_mt7628, MT7628_GPIO_MODE_MASK, 263 + 1, MT7628_GPIO_MODE_P4LED_AN), 334 264 GRP_G("wled_kn", wled_kn_grp_mt7628, MT7628_GPIO_MODE_MASK, 335 265 1, MT7628_GPIO_MODE_WLED_KN), 266 + GRP_G("p0led_kn", p0led_kn_grp_mt7628, MT7628_GPIO_MODE_MASK, 267 + 1, MT7628_GPIO_MODE_P0LED_KN), 268 + GRP_G("p1led_kn", p1led_kn_grp_mt7628, MT7628_GPIO_MODE_MASK, 269 + 1, MT7628_GPIO_MODE_P1LED_KN), 270 + GRP_G("p2led_kn", p2led_kn_grp_mt7628, MT7628_GPIO_MODE_MASK, 271 + 1, MT7628_GPIO_MODE_P2LED_KN), 272 + GRP_G("p3led_kn", p3led_kn_grp_mt7628, MT7628_GPIO_MODE_MASK, 273 + 1, MT7628_GPIO_MODE_P3LED_KN), 274 + GRP_G("p4led_kn", p4led_kn_grp_mt7628, MT7628_GPIO_MODE_MASK, 275 + 1, MT7628_GPIO_MODE_P4LED_KN), 336 276 { 0 } 337 277 }; 338 278
+1 -1
arch/mips/sgi-ip27/ip27-hubio.c
··· 105 105 prb.iprb_ff = force_fire_and_forget ? 1 : 0; 106 106 107 107 /* 108 - * Set the appropriate number of PIO cresits for the widget. 108 + * Set the appropriate number of PIO credits for the widget. 109 109 */ 110 110 prb.iprb_xtalkctr = credits; 111 111
+1 -1
arch/mips/sgi-ip27/ip27-nmi.c
··· 23 23 static arch_spinlock_t nmi_lock = __ARCH_SPIN_LOCK_UNLOCKED; 24 24 25 25 /* 26 - * Lets see what else we need to do here. Set up sp, gp? 26 + * Let's see what else we need to do here. Set up sp, gp? 27 27 */ 28 28 void nmi_dump(void) 29 29 {
+1 -1
arch/mips/sgi-ip27/ip27-xtalk.c
··· 67 67 return -ENODEV; 68 68 69 69 /* 70 - * Okay, here's a xbow. Lets arbitrate and find 70 + * Okay, here's a xbow. Let's arbitrate and find 71 71 * out if we should initialize it. Set enabled 72 72 * hub connected at highest or lowest widget as 73 73 * master.
+1 -1
arch/mips/sni/rm200.c
··· 263 263 static int spurious_irq_mask; 264 264 /* 265 265 * At this point we can be sure the IRQ is spurious, 266 - * lets ACK and report it. [once per IRQ] 266 + * let's ACK and report it. [once per IRQ] 267 267 */ 268 268 if (!(spurious_irq_mask & irqmask)) { 269 269 printk(KERN_DEBUG
+3 -1
arch/mips/vdso/Makefile
··· 5 5 ccflags-vdso := \ 6 6 $(filter -I%,$(KBUILD_CFLAGS)) \ 7 7 $(filter -E%,$(KBUILD_CFLAGS)) \ 8 + $(filter -mmicromips,$(KBUILD_CFLAGS)) \ 8 9 $(filter -march=%,$(KBUILD_CFLAGS)) 9 10 cflags-vdso := $(ccflags-vdso) \ 10 11 $(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \ 11 - -O2 -g -fPIC -fno-common -fno-builtin -G 0 -DDISABLE_BRANCH_PROFILING \ 12 + -O2 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \ 13 + -DDISABLE_BRANCH_PROFILING \ 12 14 $(call cc-option, -fno-stack-protector) 13 15 aflags-vdso := $(ccflags-vdso) \ 14 16 $(filter -I%,$(KBUILD_CFLAGS)) \
+1 -1
arch/mips/vr41xx/common/cmu.c
··· 3 3 * 4 4 * Copyright (C) 2001-2002 MontaVista Software Inc. 5 5 * Author: Yoichi Yuasa <source@mvista.com> 6 - * Copuright (C) 2003-2005 Yoichi Yuasa <yuasa@linux-mips.org> 6 + * Copyright (C) 2003-2005 Yoichi Yuasa <yuasa@linux-mips.org> 7 7 * 8 8 * This program is free software; you can redistribute it and/or modify 9 9 * it under the terms of the GNU General Public License as published by
+9 -1
drivers/irqchip/irq-mips-gic.c
··· 968 968 unsigned int cpu_vec, unsigned int irqbase, 969 969 struct device_node *node) 970 970 { 971 - unsigned int gicconfig; 971 + unsigned int gicconfig, cpu; 972 972 unsigned int v[2]; 973 973 974 974 __gic_base_addr = gic_base_addr; ··· 985 985 gic_vpes = gic_vpes + 1; 986 986 987 987 if (cpu_has_veic) { 988 + /* Set EIC mode for all VPEs */ 989 + for_each_present_cpu(cpu) { 990 + gic_write(GIC_REG(VPE_LOCAL, GIC_VPE_OTHER_ADDR), 991 + mips_cm_vp_id(cpu)); 992 + gic_write(GIC_REG(VPE_OTHER, GIC_VPE_CTL), 993 + GIC_VPE_CTL_EIC_MODE_MSK); 994 + } 995 + 988 996 /* Always use vector 1 in EIC mode */ 989 997 gic_cpu_pin = 0; 990 998 timer_cpu_pin = gic_cpu_pin;