308
308
* already provide the required functionality.
310
310
extern struct proc_info_list *lookup_processor_type(unsigned int);
311
extern struct machine_desc *lookup_machine_type(unsigned int);
312
static void __init early_print(const char *str, ...)
314
extern void printascii(const char *);
319
vsnprintf(buf, sizeof(buf), str, ap);
322
#ifdef CONFIG_DEBUG_LL
313
328
static void __init feat_v6_fixup(void)
427
442
static struct machine_desc * __init setup_machine(unsigned int nr)
429
struct machine_desc *list;
444
extern struct machine_desc __arch_info_begin[], __arch_info_end[];
445
struct machine_desc *p;
432
448
* locate machine in the list of supported machines.
434
list = lookup_machine_type(nr);
436
printk("Machine configuration botched (nr %d), unable "
437
"to continue.\n", nr);
441
printk("Machine: %s\n", list->name);
450
for (p = __arch_info_begin; p < __arch_info_end; p++)
452
printk("Machine: %s\n", p->name);
457
"Error: unrecognized/unsupported machine ID (r1 = 0x%08x).\n\n"
458
"Available machine support:\n\nID (hex)\tNAME\n", nr);
460
for (p = __arch_info_begin; p < __arch_info_end; p++)
461
early_print("%08x\t%s\n", p->nr, p->name);
463
early_print("\nPlease check your kernel config and/or bootloader.\n");
466
/* can't use cpu_relax() here as it may require MMU setup */;
446
static int __init arm_add_memory(unsigned long start, unsigned long size)
469
static int __init arm_add_memory(phys_addr_t start, unsigned long size)
448
471
struct membank *bank = &meminfo.bank[meminfo.nr_banks];
450
473
if (meminfo.nr_banks >= NR_BANKS) {
451
474
printk(KERN_CRIT "NR_BANKS too low, "
452
"ignoring memory at %#lx\n", start);
475
"ignoring memory at 0x%08llx\n", (long long)start);
703
727
{ tag_size(tag_core), ATAG_CORE },
704
728
{ 1, PAGE_SIZE, 0xff },
705
729
{ tag_size(tag_mem32), ATAG_MEM },
706
{ MEM_SIZE, PHYS_OFFSET },
765
789
static inline void reserve_crashkernel(void) {}
766
790
#endif /* CONFIG_KEXEC */
769
* Note: elfcorehdr_addr is not just limited to vmcore. It is also used by
770
* is_kdump_kernel() to determine if we are booting after a panic. Hence
771
* ifdef it under CONFIG_CRASH_DUMP and not CONFIG_PROC_VMCORE.
774
#ifdef CONFIG_CRASH_DUMP
776
* elfcorehdr= specifies the location of elf core header stored by the crashed
777
* kernel. This option will be passed by kexec loader to the capture kernel.
779
static int __init setup_elfcorehdr(char *arg)
786
elfcorehdr_addr = memparse(arg, &end);
787
return end > arg ? 0 : -EINVAL;
789
early_param("elfcorehdr", setup_elfcorehdr);
790
#endif /* CONFIG_CRASH_DUMP */
792
792
static void __init squash_mem_tags(struct tag *tag)
794
794
for (; tag->hdr.size; tag = tag_next(tag))
815
817
if (__atags_pointer)
816
818
tags = phys_to_virt(__atags_pointer);
817
else if (mdesc->boot_params)
818
tags = phys_to_virt(mdesc->boot_params);
819
else if (mdesc->boot_params) {
822
* We still are executing with a minimal MMU mapping created
823
* with the presumption that the machine default for this
824
* is located in the first MB of RAM. Anything else will
825
* fault and silently hang the kernel at this point.
827
if (mdesc->boot_params < PHYS_OFFSET ||
828
mdesc->boot_params >= PHYS_OFFSET + SZ_1M) {
830
"Default boot params at physical 0x%08lx out of reach\n",
835
tags = phys_to_virt(mdesc->boot_params);
820
839
#if defined(CONFIG_DEPRECATED_PARAM_STRUCT)