Correct KERNEL PANIC on IIci: move bootinfo() and set_kernel_bootinfo() after disable_cache()

This commit is contained in:
Laurent Vivier 2005-09-07 00:29:22 +00:00
parent 2665d70906
commit f77dcd8300

View File

@ -269,21 +269,22 @@ int start(emile_l2_header_t* info)
#ifdef ARCH_M68K
if (arch_type == gestalt68k)
{
/* initialize bootinfo structure */
bootinfo_init(info->command_line,
(char*)ramdisk_start, info->ramdisk_size);
/* set bootinfo at end of kernel image */
set_kernel_bootinfo(kernel + info->kernel_size);
/* compute final address of kernel */
if (mmu_type == gestaltNoMMU)
{
unsigned long size = end_enter_kernel - enter_kernel;
/* initialize bootinfo structure */
bootinfo_init(info->command_line,
(char*)ramdisk_start, info->ramdisk_size);
/* set bootinfo at end of kernel image */
set_kernel_bootinfo(kernel + info->kernel_size);
physImage = (unsigned long)kernel;
start_mem = KERNEL_BASEADDR + 0x1000;
entry = (entry_t)(start_mem - size);
@ -298,11 +299,17 @@ int start(emile_l2_header_t* info)
else
{
ret = logical2physical((unsigned long)kernel, &physImage);
/* disable and flush cache */
disable_cache();
/* initialize bootinfo structure */
bootinfo_init(info->command_line,
(char*)ramdisk_start, info->ramdisk_size);
/* add KERNEL_ALIGN if we have to align */
aligned_size = boot_info.memory[0].addr & (KERNEL_ALIGN - 1);
@ -315,6 +322,10 @@ int start(emile_l2_header_t* info)
boot_info.memory[0].size = aligned_size;
}
/* set bootinfo at end of kernel image */
set_kernel_bootinfo(kernel + info->kernel_size);
start_mem = boot_info.memory[0].addr + PAGE_SIZE;
printf("\n");