diff options
Diffstat (limited to 'arch/parisc/kernel/setup.c')
| -rw-r--r-- | arch/parisc/kernel/setup.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/arch/parisc/kernel/setup.c b/arch/parisc/kernel/setup.c index 39e7c5a5946a..7d27853ff8c8 100644 --- a/arch/parisc/kernel/setup.c +++ b/arch/parisc/kernel/setup.c | |||
| @@ -44,6 +44,7 @@ | |||
| 44 | #include <asm/pdc_chassis.h> | 44 | #include <asm/pdc_chassis.h> |
| 45 | #include <asm/io.h> | 45 | #include <asm/io.h> |
| 46 | #include <asm/setup.h> | 46 | #include <asm/setup.h> |
| 47 | #include <asm/unwind.h> | ||
| 47 | 48 | ||
| 48 | static char __initdata command_line[COMMAND_LINE_SIZE]; | 49 | static char __initdata command_line[COMMAND_LINE_SIZE]; |
| 49 | 50 | ||
| @@ -123,6 +124,7 @@ void __init setup_arch(char **cmdline_p) | |||
| 123 | #ifdef CONFIG_64BIT | 124 | #ifdef CONFIG_64BIT |
| 124 | extern int parisc_narrow_firmware; | 125 | extern int parisc_narrow_firmware; |
| 125 | #endif | 126 | #endif |
| 127 | unwind_init(); | ||
| 126 | 128 | ||
| 127 | init_per_cpu(smp_processor_id()); /* Set Modes & Enable FP */ | 129 | init_per_cpu(smp_processor_id()); /* Set Modes & Enable FP */ |
| 128 | 130 | ||
| @@ -368,6 +370,31 @@ static int __init parisc_init(void) | |||
| 368 | 370 | ||
| 369 | return 0; | 371 | return 0; |
| 370 | } | 372 | } |
| 371 | |||
| 372 | arch_initcall(parisc_init); | 373 | arch_initcall(parisc_init); |
| 373 | 374 | ||
| 375 | void start_parisc(void) | ||
| 376 | { | ||
| 377 | extern void start_kernel(void); | ||
| 378 | |||
| 379 | int ret, cpunum; | ||
| 380 | struct pdc_coproc_cfg coproc_cfg; | ||
| 381 | |||
| 382 | cpunum = smp_processor_id(); | ||
| 383 | |||
| 384 | set_firmware_width_unlocked(); | ||
| 385 | |||
| 386 | ret = pdc_coproc_cfg_unlocked(&coproc_cfg); | ||
| 387 | if (ret >= 0 && coproc_cfg.ccr_functional) { | ||
| 388 | mtctl(coproc_cfg.ccr_functional, 10); | ||
| 389 | |||
| 390 | cpu_data[cpunum].fp_rev = coproc_cfg.revision; | ||
| 391 | cpu_data[cpunum].fp_model = coproc_cfg.model; | ||
| 392 | |||
| 393 | asm volatile ("fstd %fr0,8(%sp)"); | ||
| 394 | } else { | ||
| 395 | panic("must have an fpu to boot linux"); | ||
| 396 | } | ||
| 397 | |||
| 398 | start_kernel(); | ||
| 399 | // not reached | ||
| 400 | } | ||
