From: Andy P. <at...@us...> - 2001-02-18 16:41:55
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/boot In directory usw-pr-cvs1:/tmp/cvs-serv23123/arch/vax/boot Modified Files: head.S tmp_init.c Log Message: Reorganise tmp_start_kernel. max_pfn/hwpfn fixes. update config file. Index: head.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/head.S,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- head.S 2001/02/15 01:26:58 1.3 +++ head.S 2001/02/18 16:42:45 1.4 @@ -267,7 +267,7 @@ halt now_on_kstack: - calls $0, tmp_start_kernel # should never return + calls $0, vax_start_kernel # should never return halt msg_loaded: Index: tmp_init.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/tmp_init.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- tmp_init.c 2001/02/18 12:03:31 1.7 +++ tmp_init.c 2001/02/18 16:42:45 1.8 @@ -83,6 +83,8 @@ extern struct task_struct *child_reaper; static int tmp_init(void * unused); +char *vax_linux_banner="Linux/VAX (lin...@mi...)\n"; +extern void start_kernel(void); /* This is a transitionary function. When things are finally sorted * the only tasks this function will perform will relate to the interaction @@ -96,8 +98,61 @@ * ok ive changed my mind. We turn on MM in the asm before we hit C code * (keeps stacks simpler) just like the i386, with a default 8mb system * page table setup (with a 1:1 mapping of system space. + * + * Things that are temporary have a habit of becoming permanent. + * I've renamed from tmp_start_kernel to vax_start_kernel, as convenient + * bit of arch-specific C code before starting the main start_kernel */ +void vax_start_kernel(void) +{ + unsigned long mempages; +/* this is a temporary command line that allows booting via nfsroot */ +/* + * Interrupts are still disabled. Do necessary setups, then + * enable them + */ + /* set the number of 4k pages */ + max_pfn = max_hwpfn/8; + + printk(vax_linux_banner); + + /* Protect us from interrupt stack overflows */ + guard_int_stack(); + + /* If it is possible to register a console for your + machine at this point in the boot sequence, do so + in post_vm_init(). Otherwise, implement mv->console_init() + which will be called later. */ + + mv->post_vm_init(); + + #ifdef __SMP__ + static int boot_cpu = 1; + /* "current" has been set up, we need to load it now */ + if (!boot_cpu) + initialize_secondary(); + boot_cpu = 0; + #endif + + /* + * Interrupts are still disabled. Do necessary setups, then + * enable them + */ + + printk("RPB info: l_pfncnt: %08x, .l_vmb_version: %08x .l_badpgs: %08x\n", + boot_rpb.l_pfncnt, boot_rpb.l_vmb_version, boot_rpb.l_badpgs); + + printk("Physical memory: %08x HW pagelets, %08x pages (%dKB)\n", + max_hwpfn, max_pfn, max_hwpfn/2); + + printk("CPU type: %s, SID: %08x\n", mv->cpu_type_str(), vax_cpu.sid); + + printk("calling start_kernel...\n"); + start_kernel(); + +} + void tmp_start_kernel(void) { char * command_line; @@ -107,6 +162,9 @@ * Interrupts are still disabled. Do necessary setups, then * enable them */ + /* set the number of 4k pages */ + max_pfn = max_hwpfn/8; + /* Protect us from interrupt stack overflows */ guard_int_stack(); @@ -129,7 +187,6 @@ * Interrupts are still disabled. Do necessary setups, then * enable them */ - lock_kernel(); printk(linux_banner); @@ -137,7 +194,7 @@ boot_rpb.l_pfncnt, boot_rpb.l_vmb_version, boot_rpb.l_badpgs); printk("Physical memory: %08x HW pagelets, %08x pages (%dKB)\n", - max_pfn, max_pfn/8, max_pfn / 2); + max_hwpfn, max_pfn, max_hwpfn/2); setup_arch(&command_line); @@ -163,7 +220,6 @@ memory on the free list */ mem_init(); - asm("halt"); kmem_cache_sizes_init(); #ifdef CONFIG_PROC_FS |