#if !FPSTATESIZE || !NR_IRQS #warning No CPU/platform type selected, your kernel will not work! #warning Are you building an allnoconfig kernel? #endif
case BI_COMMAND_LINE:
strscpy(m68k_command_line, data); break;
case BI_RNG_SEED: {
u16 len = be16_to_cpup(data);
add_bootloader_randomness(data + 2, len); /* * Zero the data to preserve forward secrecy, and zero the * length to prevent kexec from using it.
*/
memzero_explicit((void *)data, len + 2); break;
}
m68k_realnum_memory = m68k_num_memory; #ifdef CONFIG_SINGLE_MEMORY_CHUNK if (m68k_num_memory > 1) {
pr_warn("%s: ignoring last %i chunks of physical memory\n",
__func__, (m68k_num_memory - 1));
m68k_num_memory = 1;
} #endif
}
void __init setup_arch(char **cmdline_p)
{ /* The bootinfo is located right after the kernel */ if (!CPU_IS_COLDFIRE)
m68k_parse_bootinfo((conststruct bi_record *)_end);
if (CPU_IS_040)
m68k_is040or060 = 4; elseif (CPU_IS_060)
m68k_is040or060 = 6;
/* FIXME: m68k_fputype is passed in by Penguin booter, which can * be confused by software FPU emulation. BEWARE. * We should really do our own FPU check at startup. * [what do we do with buggy 68LC040s? if we have problems
* with them, we should add a test to check_bugs() below] */ #ifdefined(CONFIG_FPU) && !defined(CONFIG_M68KFPU_EMU_ONLY) /* clear the fpu if we have one */ if (m68k_fputype & (FPU_68881|FPU_68882|FPU_68040|FPU_68060|FPU_COLDFIRE)) { volatileint zero = 0; asmvolatile ("frestore %0" : : "m" (zero));
} #endif
#ifdefined(CONFIG_BOOTPARAM)
strscpy(m68k_command_line, CONFIG_BOOTPARAM_STRING, CL_SIZE); #endif/* CONFIG_BOOTPARAM */
process_uboot_commandline(&m68k_command_line[0], CL_SIZE);
*cmdline_p = m68k_command_line;
memcpy(boot_command_line, *cmdline_p, CL_SIZE); /* * Initialise the static keys early as they may be enabled by the * cpufeature code and early parameters.
*/
jump_label_init();
parse_early_param();
switch (m68k_machtype) { #ifdef CONFIG_AMIGA case MACH_AMIGA:
config_amiga(); break; #endif #ifdef CONFIG_ATARI case MACH_ATARI:
config_atari(); break; #endif #ifdef CONFIG_MAC case MACH_MAC:
config_mac(); break; #endif #ifdef CONFIG_SUN3 case MACH_SUN3:
config_sun3(); break; #endif #ifdef CONFIG_APOLLO case MACH_APOLLO:
config_apollo(); break; #endif #ifdef CONFIG_MVME147 case MACH_MVME147:
config_mvme147(); break; #endif #ifdef CONFIG_MVME16x case MACH_MVME16x:
config_mvme16x(); break; #endif #ifdef CONFIG_BVME6000 case MACH_BVME6000:
config_bvme6000(); break; #endif #ifdef CONFIG_HP300 case MACH_HP300:
config_hp300(); break; #endif #ifdef CONFIG_Q40 case MACH_Q40:
config_q40(); break; #endif #ifdef CONFIG_SUN3X case MACH_SUN3X:
config_sun3x(); break; #endif #ifdef CONFIG_COLDFIRE case MACH_M54XX: case MACH_M5441X:
cf_bootmem_alloc();
cf_mmu_context_init();
config_BSP(NULL, 0); break; #endif #ifdef CONFIG_VIRT case MACH_VIRT:
config_virt(); break; #endif default:
panic("No configuration setup");
}
if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && m68k_ramdisk.size)
memblock_reserve(m68k_ramdisk.addr, m68k_ramdisk.size);
if (mach_get_model)
mach_get_model(model); else
strscpy(model, "Unknown m68k");
seq_printf(m, "Model:\t\t%s\n", model); for (mem = 0, i = 0; i < m68k_num_memory; i++)
mem += m68k_memory[i].size;
seq_printf(m, "System Memory:\t%ldK\n", mem >> 10);
if (mach_get_hardware_list)
mach_get_hardware_list(m);
void __init arch_cpu_finalize_init(void)
{ #ifdefined(CONFIG_FPU) && !defined(CONFIG_M68KFPU_EMU) if (m68k_fputype == 0) {
pr_emerg("*** YOU DO NOT HAVE A FLOATING POINT UNIT, " "WHICH IS REQUIRED BY LINUX/M68K ***\n");
pr_emerg("Upgrade your hardware or join the FPU " "emulation project\n");
panic("no FPU");
} #endif/* !CONFIG_M68KFPU_EMU */
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.