X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fparisc%2Fkernel%2Fsetup.c;h=3c7a3faf78edcc657443772e5fe785472df4ef8c;hb=refs%2Fheads%2Fvserver;hp=820adb178f701f4302ce65fcc761e343ca03474a;hpb=9213980e6a70d8473e0ffd4b39ab5b6caaba9ff5;p=linux-2.6.git diff --git a/arch/parisc/kernel/setup.c b/arch/parisc/kernel/setup.c index 820adb178..3c7a3faf7 100644 --- a/arch/parisc/kernel/setup.c +++ b/arch/parisc/kernel/setup.c @@ -27,7 +27,6 @@ * */ -#include #include #include #include @@ -44,14 +43,24 @@ #include /* for pa7300lc_init() proto */ #include #include +#include -#define COMMAND_LINE_SIZE 1024 -char saved_command_line[COMMAND_LINE_SIZE]; -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_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) { @@ -111,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__ @@ -122,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"); } @@ -198,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_: @@ -207,10 +219,15 @@ static void __init parisc_proc_mkdir(void) case pcxw: case pcxw_: case pcxw2: - case mako: /* XXX : this is really mckinley bus */ 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", NULL); } break; default: @@ -285,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 */ @@ -293,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", @@ -301,6 +323,8 @@ static int __init parisc_init(void) boot_cpu_data.cpu_hz / 1000000, boot_cpu_data.cpu_hz % 1000000 ); + parisc_setup_cache_timing(); + /* These are in a non-obvious order, will fix when we have an iotree */ #if defined(CONFIG_IOSAPIC) iosapic_init();