diff options
Diffstat (limited to 'arch/powerpc/kernel/setup-common.c')
| -rw-r--r-- | arch/powerpc/kernel/setup-common.c | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index e22856ecb5a0..bae4bff138f1 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c | |||
| @@ -33,6 +33,7 @@ | |||
| 33 | #include <asm/io.h> | 33 | #include <asm/io.h> |
| 34 | #include <asm/prom.h> | 34 | #include <asm/prom.h> |
| 35 | #include <asm/processor.h> | 35 | #include <asm/processor.h> |
| 36 | #include <asm/systemcfg.h> | ||
| 36 | #include <asm/pgtable.h> | 37 | #include <asm/pgtable.h> |
| 37 | #include <asm/smp.h> | 38 | #include <asm/smp.h> |
| 38 | #include <asm/elf.h> | 39 | #include <asm/elf.h> |
| @@ -51,6 +52,9 @@ | |||
| 51 | #include <asm/page.h> | 52 | #include <asm/page.h> |
| 52 | #include <asm/mmu.h> | 53 | #include <asm/mmu.h> |
| 53 | #include <asm/lmb.h> | 54 | #include <asm/lmb.h> |
| 55 | #include <asm/xmon.h> | ||
| 56 | |||
| 57 | #include "setup.h" | ||
| 54 | 58 | ||
| 55 | #undef DEBUG | 59 | #undef DEBUG |
| 56 | 60 | ||
| @@ -60,6 +64,13 @@ | |||
| 60 | #define DBG(fmt...) | 64 | #define DBG(fmt...) |
| 61 | #endif | 65 | #endif |
| 62 | 66 | ||
| 67 | #ifdef CONFIG_PPC_MULTIPLATFORM | ||
| 68 | int _machine = 0; | ||
| 69 | EXPORT_SYMBOL(_machine); | ||
| 70 | #endif | ||
| 71 | |||
| 72 | unsigned long klimit = (unsigned long) _end; | ||
| 73 | |||
| 63 | /* | 74 | /* |
| 64 | * This still seems to be needed... -- paulus | 75 | * This still seems to be needed... -- paulus |
| 65 | */ | 76 | */ |
| @@ -510,8 +521,8 @@ void __init smp_setup_cpu_maps(void) | |||
| 510 | * On pSeries LPAR, we need to know how many cpus | 521 | * On pSeries LPAR, we need to know how many cpus |
| 511 | * could possibly be added to this partition. | 522 | * could possibly be added to this partition. |
| 512 | */ | 523 | */ |
| 513 | if (systemcfg->platform == PLATFORM_PSERIES_LPAR && | 524 | if (_machine == PLATFORM_PSERIES_LPAR && |
| 514 | (dn = of_find_node_by_path("/rtas"))) { | 525 | (dn = of_find_node_by_path("/rtas"))) { |
| 515 | int num_addr_cell, num_size_cell, maxcpus; | 526 | int num_addr_cell, num_size_cell, maxcpus; |
| 516 | unsigned int *ireg; | 527 | unsigned int *ireg; |
| 517 | 528 | ||
| @@ -555,7 +566,27 @@ void __init smp_setup_cpu_maps(void) | |||
| 555 | cpu_set(cpu ^ 0x1, cpu_sibling_map[cpu]); | 566 | cpu_set(cpu ^ 0x1, cpu_sibling_map[cpu]); |
| 556 | } | 567 | } |
| 557 | 568 | ||
| 558 | systemcfg->processorCount = num_present_cpus(); | 569 | _systemcfg->processorCount = num_present_cpus(); |
| 559 | #endif /* CONFIG_PPC64 */ | 570 | #endif /* CONFIG_PPC64 */ |
| 560 | } | 571 | } |
| 561 | #endif /* CONFIG_SMP */ | 572 | #endif /* CONFIG_SMP */ |
| 573 | |||
| 574 | #ifdef CONFIG_XMON | ||
| 575 | static int __init early_xmon(char *p) | ||
| 576 | { | ||
| 577 | /* ensure xmon is enabled */ | ||
| 578 | if (p) { | ||
| 579 | if (strncmp(p, "on", 2) == 0) | ||
| 580 | xmon_init(1); | ||
| 581 | if (strncmp(p, "off", 3) == 0) | ||
| 582 | xmon_init(0); | ||
| 583 | if (strncmp(p, "early", 5) != 0) | ||
| 584 | return 0; | ||
| 585 | } | ||
| 586 | xmon_init(1); | ||
| 587 | debugger(NULL); | ||
| 588 | |||
| 589 | return 0; | ||
| 590 | } | ||
| 591 | early_param("xmon", early_xmon); | ||
| 592 | #endif | ||
