diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/mips/include/asm/cpu.h | 3 | ||||
| -rw-r--r-- | arch/mips/include/asm/module.h | 2 | ||||
| -rw-r--r-- | arch/mips/kernel/cpu-probe.c | 299 | ||||
| -rw-r--r-- | arch/mips/kernel/perf_event_mipsxx.c | 5 | ||||
| -rw-r--r-- | arch/mips/kernel/traps.c | 1 | ||||
| -rw-r--r-- | arch/mips/oprofile/common.c | 1 | ||||
| -rw-r--r-- | arch/mips/oprofile/op_model_mipsxx.c | 4 |
7 files changed, 171 insertions, 144 deletions
diff --git a/arch/mips/include/asm/cpu.h b/arch/mips/include/asm/cpu.h index 95e40c1e8ed1..f21b7c04e95a 100644 --- a/arch/mips/include/asm/cpu.h +++ b/arch/mips/include/asm/cpu.h | |||
| @@ -197,6 +197,7 @@ | |||
| 197 | #define PRID_REV_VR4181A 0x0070 /* Same as VR4122 */ | 197 | #define PRID_REV_VR4181A 0x0070 /* Same as VR4122 */ |
| 198 | #define PRID_REV_VR4130 0x0080 | 198 | #define PRID_REV_VR4130 0x0080 |
| 199 | #define PRID_REV_34K_V1_0_2 0x0022 | 199 | #define PRID_REV_34K_V1_0_2 0x0022 |
| 200 | #define PRID_REV_LOONGSON1B 0x0020 | ||
| 200 | #define PRID_REV_LOONGSON2E 0x0002 | 201 | #define PRID_REV_LOONGSON2E 0x0002 |
| 201 | #define PRID_REV_LOONGSON2F 0x0003 | 202 | #define PRID_REV_LOONGSON2F 0x0003 |
| 202 | 203 | ||
| @@ -261,7 +262,7 @@ enum cpu_type_enum { | |||
| 261 | */ | 262 | */ |
| 262 | CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_1004K, CPU_74K, | 263 | CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_1004K, CPU_74K, |
| 263 | CPU_ALCHEMY, CPU_PR4450, CPU_BMIPS32, CPU_BMIPS3300, CPU_BMIPS4350, | 264 | CPU_ALCHEMY, CPU_PR4450, CPU_BMIPS32, CPU_BMIPS3300, CPU_BMIPS4350, |
| 264 | CPU_BMIPS4380, CPU_BMIPS5000, CPU_JZRISC, CPU_M14KC, | 265 | CPU_BMIPS4380, CPU_BMIPS5000, CPU_JZRISC, CPU_LOONGSON1, CPU_M14KC, |
| 265 | 266 | ||
| 266 | /* | 267 | /* |
| 267 | * MIPS64 class processors | 268 | * MIPS64 class processors |
diff --git a/arch/mips/include/asm/module.h b/arch/mips/include/asm/module.h index 530008048c62..7531ecd654d6 100644 --- a/arch/mips/include/asm/module.h +++ b/arch/mips/include/asm/module.h | |||
| @@ -117,6 +117,8 @@ search_module_dbetables(unsigned long addr) | |||
| 117 | #define MODULE_PROC_FAMILY "RM9000 " | 117 | #define MODULE_PROC_FAMILY "RM9000 " |
| 118 | #elif defined CONFIG_CPU_SB1 | 118 | #elif defined CONFIG_CPU_SB1 |
| 119 | #define MODULE_PROC_FAMILY "SB1 " | 119 | #define MODULE_PROC_FAMILY "SB1 " |
| 120 | #elif defined CONFIG_CPU_LOONGSON1 | ||
| 121 | #define MODULE_PROC_FAMILY "LOONGSON1 " | ||
| 120 | #elif defined CONFIG_CPU_LOONGSON2 | 122 | #elif defined CONFIG_CPU_LOONGSON2 |
| 121 | #define MODULE_PROC_FAMILY "LOONGSON2 " | 123 | #define MODULE_PROC_FAMILY "LOONGSON2 " |
| 122 | #elif defined CONFIG_CPU_CAVIUM_OCTEON | 124 | #elif defined CONFIG_CPU_CAVIUM_OCTEON |
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c index f4630e1082ab..1b51046191e8 100644 --- a/arch/mips/kernel/cpu-probe.c +++ b/arch/mips/kernel/cpu-probe.c | |||
| @@ -190,6 +190,7 @@ void __init check_wait(void) | |||
| 190 | case CPU_CAVIUM_OCTEON_PLUS: | 190 | case CPU_CAVIUM_OCTEON_PLUS: |
| 191 | case CPU_CAVIUM_OCTEON2: | 191 | case CPU_CAVIUM_OCTEON2: |
| 192 | case CPU_JZRISC: | 192 | case CPU_JZRISC: |
| 193 | case CPU_LOONGSON1: | ||
| 193 | case CPU_XLR: | 194 | case CPU_XLR: |
| 194 | case CPU_XLP: | 195 | case CPU_XLP: |
| 195 | cpu_wait = r4k_wait; | 196 | cpu_wait = r4k_wait; |
| @@ -330,6 +331,154 @@ static inline void cpu_probe_vmbits(struct cpuinfo_mips *c) | |||
| 330 | #endif | 331 | #endif |
| 331 | } | 332 | } |
| 332 | 333 | ||
| 334 | static char unknown_isa[] __cpuinitdata = KERN_ERR \ | ||
| 335 | "Unsupported ISA type, c0.config0: %d."; | ||
| 336 | |||
| 337 | static inline unsigned int decode_config0(struct cpuinfo_mips *c) | ||
| 338 | { | ||
| 339 | unsigned int config0; | ||
| 340 | int isa; | ||
| 341 | |||
| 342 | config0 = read_c0_config(); | ||
| 343 | |||
| 344 | if (((config0 & MIPS_CONF_MT) >> 7) == 1) | ||
| 345 | c->options |= MIPS_CPU_TLB; | ||
| 346 | isa = (config0 & MIPS_CONF_AT) >> 13; | ||
| 347 | switch (isa) { | ||
| 348 | case 0: | ||
| 349 | switch ((config0 & MIPS_CONF_AR) >> 10) { | ||
| 350 | case 0: | ||
| 351 | c->isa_level = MIPS_CPU_ISA_M32R1; | ||
| 352 | break; | ||
| 353 | case 1: | ||
| 354 | c->isa_level = MIPS_CPU_ISA_M32R2; | ||
| 355 | break; | ||
| 356 | default: | ||
| 357 | goto unknown; | ||
| 358 | } | ||
| 359 | break; | ||
| 360 | case 2: | ||
| 361 | switch ((config0 & MIPS_CONF_AR) >> 10) { | ||
| 362 | case 0: | ||
| 363 | c->isa_level = MIPS_CPU_ISA_M64R1; | ||
| 364 | break; | ||
| 365 | case 1: | ||
| 366 | c->isa_level = MIPS_CPU_ISA_M64R2; | ||
| 367 | break; | ||
| 368 | default: | ||
| 369 | goto unknown; | ||
| 370 | } | ||
| 371 | break; | ||
| 372 | default: | ||
| 373 | goto unknown; | ||
| 374 | } | ||
| 375 | |||
| 376 | return config0 & MIPS_CONF_M; | ||
| 377 | |||
| 378 | unknown: | ||
| 379 | panic(unknown_isa, config0); | ||
| 380 | } | ||
| 381 | |||
| 382 | static inline unsigned int decode_config1(struct cpuinfo_mips *c) | ||
| 383 | { | ||
| 384 | unsigned int config1; | ||
| 385 | |||
| 386 | config1 = read_c0_config1(); | ||
| 387 | |||
| 388 | if (config1 & MIPS_CONF1_MD) | ||
| 389 | c->ases |= MIPS_ASE_MDMX; | ||
| 390 | if (config1 & MIPS_CONF1_WR) | ||
| 391 | c->options |= MIPS_CPU_WATCH; | ||
| 392 | if (config1 & MIPS_CONF1_CA) | ||
| 393 | c->ases |= MIPS_ASE_MIPS16; | ||
| 394 | if (config1 & MIPS_CONF1_EP) | ||
| 395 | c->options |= MIPS_CPU_EJTAG; | ||
| 396 | if (config1 & MIPS_CONF1_FP) { | ||
| 397 | c->options |= MIPS_CPU_FPU; | ||
| 398 | c->options |= MIPS_CPU_32FPR; | ||
| 399 | } | ||
| 400 | if (cpu_has_tlb) | ||
| 401 | c->tlbsize = ((config1 & MIPS_CONF1_TLBS) >> 25) + 1; | ||
| 402 | |||
| 403 | return config1 & MIPS_CONF_M; | ||
| 404 | } | ||
| 405 | |||
| 406 | static inline unsigned int decode_config2(struct cpuinfo_mips *c) | ||
| 407 | { | ||
| 408 | unsigned int config2; | ||
| 409 | |||
| 410 | config2 = read_c0_config2(); | ||
| 411 | |||
| 412 | if (config2 & MIPS_CONF2_SL) | ||
| 413 | c->scache.flags &= ~MIPS_CACHE_NOT_PRESENT; | ||
| 414 | |||
| 415 | return config2 & MIPS_CONF_M; | ||
| 416 | } | ||
| 417 | |||
| 418 | static inline unsigned int decode_config3(struct cpuinfo_mips *c) | ||
| 419 | { | ||
| 420 | unsigned int config3; | ||
| 421 | |||
| 422 | config3 = read_c0_config3(); | ||
| 423 | |||
| 424 | if (config3 & MIPS_CONF3_SM) | ||
| 425 | c->ases |= MIPS_ASE_SMARTMIPS; | ||
| 426 | if (config3 & MIPS_CONF3_DSP) | ||
| 427 | c->ases |= MIPS_ASE_DSP; | ||
| 428 | if (config3 & MIPS_CONF3_VINT) | ||
| 429 | c->options |= MIPS_CPU_VINT; | ||
| 430 | if (config3 & MIPS_CONF3_VEIC) | ||
| 431 | c->options |= MIPS_CPU_VEIC; | ||
| 432 | if (config3 & MIPS_CONF3_MT) | ||
| 433 | c->ases |= MIPS_ASE_MIPSMT; | ||
| 434 | if (config3 & MIPS_CONF3_ULRI) | ||
| 435 | c->options |= MIPS_CPU_ULRI; | ||
| 436 | |||
| 437 | return config3 & MIPS_CONF_M; | ||
| 438 | } | ||
| 439 | |||
| 440 | static inline unsigned int decode_config4(struct cpuinfo_mips *c) | ||
| 441 | { | ||
| 442 | unsigned int config4; | ||
| 443 | |||
| 444 | config4 = read_c0_config4(); | ||
| 445 | |||
| 446 | if ((config4 & MIPS_CONF4_MMUEXTDEF) == MIPS_CONF4_MMUEXTDEF_MMUSIZEEXT | ||
| 447 | && cpu_has_tlb) | ||
| 448 | c->tlbsize += (config4 & MIPS_CONF4_MMUSIZEEXT) * 0x40; | ||
| 449 | |||
| 450 | c->kscratch_mask = (config4 >> 16) & 0xff; | ||
| 451 | |||
| 452 | return config4 & MIPS_CONF_M; | ||
| 453 | } | ||
| 454 | |||
| 455 | static void __cpuinit decode_configs(struct cpuinfo_mips *c) | ||
| 456 | { | ||
| 457 | int ok; | ||
| 458 | |||
| 459 | /* MIPS32 or MIPS64 compliant CPU. */ | ||
| 460 | c->options = MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER | | ||
| 461 | MIPS_CPU_DIVEC | MIPS_CPU_LLSC | MIPS_CPU_MCHECK; | ||
| 462 | |||
| 463 | c->scache.flags = MIPS_CACHE_NOT_PRESENT; | ||
| 464 | |||
| 465 | ok = decode_config0(c); /* Read Config registers. */ | ||
| 466 | BUG_ON(!ok); /* Arch spec violation! */ | ||
| 467 | if (ok) | ||
| 468 | ok = decode_config1(c); | ||
| 469 | if (ok) | ||
| 470 | ok = decode_config2(c); | ||
| 471 | if (ok) | ||
| 472 | ok = decode_config3(c); | ||
| 473 | if (ok) | ||
| 474 | ok = decode_config4(c); | ||
| 475 | |||
| 476 | mips_probe_watch_registers(c); | ||
| 477 | |||
| 478 | if (cpu_has_mips_r2) | ||
| 479 | c->core = read_c0_ebase() & 0x3ff; | ||
| 480 | } | ||
| 481 | |||
| 333 | #define R4K_OPTS (MIPS_CPU_TLB | MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE \ | 482 | #define R4K_OPTS (MIPS_CPU_TLB | MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE \ |
| 334 | | MIPS_CPU_COUNTER) | 483 | | MIPS_CPU_COUNTER) |
| 335 | 484 | ||
| @@ -638,155 +787,19 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c, unsigned int cpu) | |||
| 638 | MIPS_CPU_32FPR; | 787 | MIPS_CPU_32FPR; |
| 639 | c->tlbsize = 64; | 788 | c->tlbsize = 64; |
| 640 | break; | 789 | break; |
| 641 | } | 790 | case PRID_IMP_LOONGSON1: |
| 642 | } | 791 | decode_configs(c); |
| 643 | |||
| 644 | static char unknown_isa[] __cpuinitdata = KERN_ERR \ | ||
| 645 | "Unsupported ISA type, c0.config0: %d."; | ||
| 646 | 792 | ||
| 647 | static inline unsigned int decode_config0(struct cpuinfo_mips *c) | 793 | c->cputype = CPU_LOONGSON1; |
| 648 | { | ||
| 649 | unsigned int config0; | ||
| 650 | int isa; | ||
| 651 | 794 | ||
| 652 | config0 = read_c0_config(); | 795 | switch (c->processor_id & PRID_REV_MASK) { |
| 653 | 796 | case PRID_REV_LOONGSON1B: | |
| 654 | if (((config0 & MIPS_CONF_MT) >> 7) == 1) | 797 | __cpu_name[cpu] = "Loongson 1B"; |
| 655 | c->options |= MIPS_CPU_TLB; | ||
| 656 | isa = (config0 & MIPS_CONF_AT) >> 13; | ||
| 657 | switch (isa) { | ||
| 658 | case 0: | ||
| 659 | switch ((config0 & MIPS_CONF_AR) >> 10) { | ||
| 660 | case 0: | ||
| 661 | c->isa_level = MIPS_CPU_ISA_M32R1; | ||
| 662 | break; | ||
| 663 | case 1: | ||
| 664 | c->isa_level = MIPS_CPU_ISA_M32R2; | ||
| 665 | break; | 798 | break; |
| 666 | default: | ||
| 667 | goto unknown; | ||
| 668 | } | 799 | } |
| 669 | break; | ||
| 670 | case 2: | ||
| 671 | switch ((config0 & MIPS_CONF_AR) >> 10) { | ||
| 672 | case 0: | ||
| 673 | c->isa_level = MIPS_CPU_ISA_M64R1; | ||
| 674 | break; | ||
| 675 | case 1: | ||
| 676 | c->isa_level = MIPS_CPU_ISA_M64R2; | ||
| 677 | break; | ||
| 678 | default: | ||
| 679 | goto unknown; | ||
| 680 | } | ||
| 681 | break; | ||
| 682 | default: | ||
| 683 | goto unknown; | ||
| 684 | } | ||
| 685 | |||
| 686 | return config0 & MIPS_CONF_M; | ||
| 687 | |||
| 688 | unknown: | ||
| 689 | panic(unknown_isa, config0); | ||
| 690 | } | ||
| 691 | 800 | ||
| 692 | static inline unsigned int decode_config1(struct cpuinfo_mips *c) | 801 | break; |
| 693 | { | ||
| 694 | unsigned int config1; | ||
| 695 | |||
| 696 | config1 = read_c0_config1(); | ||
| 697 | |||
| 698 | if (config1 & MIPS_CONF1_MD) | ||
| 699 | c->ases |= MIPS_ASE_MDMX; | ||
| 700 | if (config1 & MIPS_CONF1_WR) | ||
| 701 | c->options |= MIPS_CPU_WATCH; | ||
| 702 | if (config1 & MIPS_CONF1_CA) | ||
| 703 | c->ases |= MIPS_ASE_MIPS16; | ||
| 704 | if (config1 & MIPS_CONF1_EP) | ||
| 705 | c->options |= MIPS_CPU_EJTAG; | ||
| 706 | if (config1 & MIPS_CONF1_FP) { | ||
| 707 | c->options |= MIPS_CPU_FPU; | ||
| 708 | c->options |= MIPS_CPU_32FPR; | ||
| 709 | } | 802 | } |
| 710 | if (cpu_has_tlb) | ||
| 711 | c->tlbsize = ((config1 & MIPS_CONF1_TLBS) >> 25) + 1; | ||
| 712 | |||
| 713 | return config1 & MIPS_CONF_M; | ||
| 714 | } | ||
| 715 | |||
| 716 | static inline unsigned int decode_config2(struct cpuinfo_mips *c) | ||
| 717 | { | ||
| 718 | unsigned int config2; | ||
| 719 | |||
| 720 | config2 = read_c0_config2(); | ||
| 721 | |||
| 722 | if (config2 & MIPS_CONF2_SL) | ||
| 723 | c->scache.flags &= ~MIPS_CACHE_NOT_PRESENT; | ||
| 724 | |||
| 725 | return config2 & MIPS_CONF_M; | ||
| 726 | } | ||
| 727 | |||
| 728 | static inline unsigned int decode_config3(struct cpuinfo_mips *c) | ||
| 729 | { | ||
| 730 | unsigned int config3; | ||
| 731 | |||
| 732 | config3 = read_c0_config3(); | ||
| 733 | |||
| 734 | if (config3 & MIPS_CONF3_SM) | ||
| 735 | c->ases |= MIPS_ASE_SMARTMIPS; | ||
| 736 | if (config3 & MIPS_CONF3_DSP) | ||
| 737 | c->ases |= MIPS_ASE_DSP; | ||
| 738 | if (config3 & MIPS_CONF3_VINT) | ||
| 739 | c->options |= MIPS_CPU_VINT; | ||
| 740 | if (config3 & MIPS_CONF3_VEIC) | ||
| 741 | c->options |= MIPS_CPU_VEIC; | ||
| 742 | if (config3 & MIPS_CONF3_MT) | ||
| 743 | c->ases |= MIPS_ASE_MIPSMT; | ||
| 744 | if (config3 & MIPS_CONF3_ULRI) | ||
| 745 | c->options |= MIPS_CPU_ULRI; | ||
| 746 | |||
| 747 | return config3 & MIPS_CONF_M; | ||
| 748 | } | ||
| 749 | |||
| 750 | static inline unsigned int decode_config4(struct cpuinfo_mips *c) | ||
| 751 | { | ||
| 752 | unsigned int config4; | ||
| 753 | |||
| 754 | config4 = read_c0_config4(); | ||
| 755 | |||
| 756 | if ((config4 & MIPS_CONF4_MMUEXTDEF) == MIPS_CONF4_MMUEXTDEF_MMUSIZEEXT | ||
| 757 | && cpu_has_tlb) | ||
| 758 | c->tlbsize += (config4 & MIPS_CONF4_MMUSIZEEXT) * 0x40; | ||
| 759 | |||
| 760 | c->kscratch_mask = (config4 >> 16) & 0xff; | ||
| 761 | |||
| 762 | return config4 & MIPS_CONF_M; | ||
| 763 | } | ||
| 764 | |||
| 765 | static void __cpuinit decode_configs(struct cpuinfo_mips *c) | ||
| 766 | { | ||
| 767 | int ok; | ||
| 768 | |||
| 769 | /* MIPS32 or MIPS64 compliant CPU. */ | ||
| 770 | c->options = MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER | | ||
| 771 | MIPS_CPU_DIVEC | MIPS_CPU_LLSC | MIPS_CPU_MCHECK; | ||
| 772 | |||
| 773 | c->scache.flags = MIPS_CACHE_NOT_PRESENT; | ||
| 774 | |||
| 775 | ok = decode_config0(c); /* Read Config registers. */ | ||
| 776 | BUG_ON(!ok); /* Arch spec violation! */ | ||
| 777 | if (ok) | ||
| 778 | ok = decode_config1(c); | ||
| 779 | if (ok) | ||
| 780 | ok = decode_config2(c); | ||
| 781 | if (ok) | ||
| 782 | ok = decode_config3(c); | ||
| 783 | if (ok) | ||
| 784 | ok = decode_config4(c); | ||
| 785 | |||
| 786 | mips_probe_watch_registers(c); | ||
| 787 | |||
| 788 | if (cpu_has_mips_r2) | ||
| 789 | c->core = read_c0_ebase() & 0x3ff; | ||
| 790 | } | 803 | } |
| 791 | 804 | ||
| 792 | static inline void cpu_probe_mips(struct cpuinfo_mips *c, unsigned int cpu) | 805 | static inline void cpu_probe_mips(struct cpuinfo_mips *c, unsigned int cpu) |
diff --git a/arch/mips/kernel/perf_event_mipsxx.c b/arch/mips/kernel/perf_event_mipsxx.c index eb5e394a4650..2f28d3b55687 100644 --- a/arch/mips/kernel/perf_event_mipsxx.c +++ b/arch/mips/kernel/perf_event_mipsxx.c | |||
| @@ -1559,6 +1559,11 @@ init_hw_perf_events(void) | |||
| 1559 | mipspmu.general_event_map = &mipsxxcore_event_map; | 1559 | mipspmu.general_event_map = &mipsxxcore_event_map; |
| 1560 | mipspmu.cache_event_map = &mipsxxcore_cache_map; | 1560 | mipspmu.cache_event_map = &mipsxxcore_cache_map; |
| 1561 | break; | 1561 | break; |
| 1562 | case CPU_LOONGSON1: | ||
| 1563 | mipspmu.name = "mips/loongson1"; | ||
| 1564 | mipspmu.general_event_map = &mipsxxcore_event_map; | ||
| 1565 | mipspmu.cache_event_map = &mipsxxcore_cache_map; | ||
| 1566 | break; | ||
| 1562 | case CPU_CAVIUM_OCTEON: | 1567 | case CPU_CAVIUM_OCTEON: |
| 1563 | case CPU_CAVIUM_OCTEON_PLUS: | 1568 | case CPU_CAVIUM_OCTEON_PLUS: |
| 1564 | case CPU_CAVIUM_OCTEON2: | 1569 | case CPU_CAVIUM_OCTEON2: |
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index c3c293543703..9be3df1fa8a4 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
| @@ -1253,6 +1253,7 @@ static inline void parity_protection_init(void) | |||
| 1253 | 1253 | ||
| 1254 | case CPU_5KC: | 1254 | case CPU_5KC: |
| 1255 | case CPU_5KE: | 1255 | case CPU_5KE: |
| 1256 | case CPU_LOONGSON1: | ||
| 1256 | write_c0_ecc(0x80000000); | 1257 | write_c0_ecc(0x80000000); |
| 1257 | back_to_back_c0_hazard(); | 1258 | back_to_back_c0_hazard(); |
| 1258 | /* Set the PE bit (bit 31) in the c0_errctl register. */ | 1259 | /* Set the PE bit (bit 31) in the c0_errctl register. */ |
diff --git a/arch/mips/oprofile/common.c b/arch/mips/oprofile/common.c index b6e378211a2c..f80480a5a032 100644 --- a/arch/mips/oprofile/common.c +++ b/arch/mips/oprofile/common.c | |||
| @@ -85,6 +85,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) | |||
| 85 | case CPU_34K: | 85 | case CPU_34K: |
| 86 | case CPU_1004K: | 86 | case CPU_1004K: |
| 87 | case CPU_74K: | 87 | case CPU_74K: |
| 88 | case CPU_LOONGSON1: | ||
| 88 | case CPU_SB1: | 89 | case CPU_SB1: |
| 89 | case CPU_SB1A: | 90 | case CPU_SB1A: |
| 90 | case CPU_R10000: | 91 | case CPU_R10000: |
diff --git a/arch/mips/oprofile/op_model_mipsxx.c b/arch/mips/oprofile/op_model_mipsxx.c index 4d80a856048d..056da6224163 100644 --- a/arch/mips/oprofile/op_model_mipsxx.c +++ b/arch/mips/oprofile/op_model_mipsxx.c | |||
| @@ -374,6 +374,10 @@ static int __init mipsxx_init(void) | |||
| 374 | op_model_mipsxx_ops.cpu_type = "mips/sb1"; | 374 | op_model_mipsxx_ops.cpu_type = "mips/sb1"; |
| 375 | break; | 375 | break; |
| 376 | 376 | ||
| 377 | case CPU_LOONGSON1: | ||
| 378 | op_model_mipsxx_ops.cpu_type = "mips/loongson1"; | ||
| 379 | break; | ||
| 380 | |||
| 377 | default: | 381 | default: |
| 378 | printk(KERN_ERR "Profiling unsupported for this CPU\n"); | 382 | printk(KERN_ERR "Profiling unsupported for this CPU\n"); |
| 379 | 383 | ||
