X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fparisc%2Fkernel%2Fsetup.c;h=3c7a3faf78edcc657443772e5fe785472df4ef8c;hb=refs%2Fheads%2Fvserver;hp=f3267597085bfbf4e4266451d7ab70deb9331017;hpb=6a77f38946aaee1cd85eeec6cf4229b204c15071;p=linux-2.6.git diff --git a/arch/parisc/kernel/setup.c b/arch/parisc/kernel/setup.c index f32675970..3c7a3faf7 100644 --- a/arch/parisc/kernel/setup.c +++ b/arch/parisc/kernel/setup.c @@ -27,7 +27,6 @@ * */ -#include #include #include #include @@ -46,13 +45,22 @@ #include #include -char command_line[COMMAND_LINE_SIZE]; +char command_line[COMMAND_LINE_SIZE] __read_mostly; /* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */ -struct proc_dir_entry * proc_runway_root = NULL; -struct proc_dir_entry * proc_gsc_root = NULL; -struct proc_dir_entry * proc_mckinley_root = NULL; +struct proc_dir_entry * proc_runway_root __read_mostly = NULL; +struct proc_dir_entry * proc_gsc_root __read_mostly = NULL; +struct proc_dir_entry * proc_mckinley_root __read_mostly = NULL; +#if !defined(CONFIG_PA20) && (defined(CONFIG_IOMMU_CCIO) || defined(CONFIG_IOMMU_SBA)) +int parisc_bus_is_phys __read_mostly = 1; /* Assume no IOMMU is present */ +EXPORT_SYMBOL(parisc_bus_is_phys); +#endif + +/* This sets the vmerge boundary and size, it's here because it has to + * be available on all platforms (zero means no-virtual merging) */ +unsigned long parisc_vmerge_boundary = 0; +unsigned long parisc_vmerge_max_size = 0; void __init setup_cmdline(char **cmdline_p) { @@ -112,6 +120,10 @@ extern void collect_boot_cpu_data(void); void __init setup_arch(char **cmdline_p) { +#ifdef __LP64__ + extern int parisc_narrow_firmware; +#endif + init_per_cpu(smp_processor_id()); /* Set Modes & Enable FP */ #ifdef __LP64__ @@ -123,7 +135,6 @@ void __init setup_arch(char **cmdline_p) pdc_console_init(); #ifdef __LP64__ - extern int parisc_narrow_firmware; if(parisc_narrow_firmware) { printk(KERN_INFO "Kernel is using PDC in 32-bit mode.\n"); } @@ -199,7 +210,7 @@ static void __init parisc_proc_mkdir(void) case pcxl2: if (NULL == proc_gsc_root) { - proc_gsc_root = proc_mkdir("bus/gsc", 0); + proc_gsc_root = proc_mkdir("bus/gsc", NULL); } break; case pcxt_: @@ -210,13 +221,13 @@ static void __init parisc_proc_mkdir(void) case pcxw2: if (NULL == proc_runway_root) { - proc_runway_root = proc_mkdir("bus/runway", 0); + proc_runway_root = proc_mkdir("bus/runway", NULL); } break; case mako: if (NULL == proc_mckinley_root) { - proc_mckinley_root = proc_mkdir("bus/mckinley", 0); + proc_mckinley_root = proc_mkdir("bus/mckinley", NULL); } break; default: @@ -291,6 +302,8 @@ extern void eisa_init(void); static int __init parisc_init(void) { + u32 osid = (OS_ID_LINUX << 16); + parisc_proc_mkdir(); parisc_init_resources(); do_device_inventory(); /* probe for hardware */ @@ -299,6 +312,9 @@ static int __init parisc_init(void) /* set up a new led state on systems shipped LED State panel */ pdc_chassis_send_status(PDC_CHASSIS_DIRECT_BSTART); + + /* tell PDC we're Linux. Nevermind failure. */ + pdc_stable_write(0x40, &osid, sizeof(osid)); processor_init(); printk(KERN_INFO "CPU(s): %d x %s at %d.%06d MHz\n",