version 1.30, 2018/08/03 13:48:24 |
version 1.31, 2018/08/05 06:48:50 |
Line 419 initarm(void *arg) |
|
Line 419 initarm(void *arg) |
|
parse_mi_bootargs(mi_bootargs); |
parse_mi_bootargs(mi_bootargs); |
#endif |
#endif |
|
|
#ifndef __aarch64__ |
|
VPRINTF("KERNEL_BASE=0x%x, " |
|
"KERNEL_VM_BASE=0x%x, " |
|
"KERNEL_VM_BASE - KERNEL_BASE=0x%x, " |
|
"KERNEL_BASE_VOFFSET=0x%x\n", |
|
KERNEL_BASE, |
|
KERNEL_VM_BASE, |
|
KERNEL_VM_BASE - KERNEL_BASE, |
|
KERNEL_BASE_VOFFSET); |
|
#endif |
|
|
|
fdt_get_memory(&memory_start, &memory_end); |
fdt_get_memory(&memory_start, &memory_end); |
|
|
#if !defined(_LP64) |
#if !defined(_LP64) |
Line 437 initarm(void *arg) |
|
Line 426 initarm(void *arg) |
|
if (memory_end >= 0x100000000ULL) |
if (memory_end >= 0x100000000ULL) |
memory_end = 0x100000000ULL - PAGE_SIZE; |
memory_end = 0x100000000ULL - PAGE_SIZE; |
|
|
uint64_t memory_size = memory_end - memory_start; |
|
#endif |
|
|
|
#ifndef __aarch64__ |
|
#ifdef __HAVE_MM_MD_DIRECT_MAPPED_PHYS |
|
const bool mapallmem_p = true; |
|
#ifndef PMAP_NEED_ALLOC_POOLPAGE |
|
if (memory_size > KERNEL_VM_BASE - KERNEL_BASE) { |
|
VPRINTF("%s: dropping RAM size from %luMB to %uMB\n", |
|
__func__, (unsigned long) (memory_size >> 20), |
|
(KERNEL_VM_BASE - KERNEL_BASE) >> 20); |
|
memory_size = KERNEL_VM_BASE - KERNEL_BASE; |
|
} |
|
#endif |
|
#else |
|
const bool mapallmem_p = false; |
|
#endif |
|
#endif |
#endif |
|
uint64_t memory_size = memory_end - memory_start; |
|
|
/* Parse ramdisk info */ |
/* Parse ramdisk info */ |
fdt_probe_initrd(&initrd_start, &initrd_end); |
fdt_probe_initrd(&initrd_start, &initrd_end); |
Line 465 initarm(void *arg) |
|
Line 438 initarm(void *arg) |
|
*/ |
*/ |
fdt_build_bootconfig(memory_start, memory_end); |
fdt_build_bootconfig(memory_start, memory_end); |
|
|
#ifdef __aarch64__ |
/* Perform PT build and VM init */ |
extern char __kernel_text[]; |
cpu_kernel_vm_init(memory_start, memory_size); |
extern char _end[]; |
|
|
|
vaddr_t kernstart = trunc_page((vaddr_t)__kernel_text); |
|
vaddr_t kernend = round_page((vaddr_t)_end); |
|
|
|
paddr_t kernstart_phys = KERN_VTOPHYS(kernstart); |
|
paddr_t kernend_phys = KERN_VTOPHYS(kernend); |
|
|
|
VPRINTF("%s: kernel phys start %lx end %lx\n", __func__, kernstart_phys, kernend_phys); |
|
|
|
fdt_add_reserved_memory_range(kernstart_phys, |
|
kernend_phys - kernstart_phys); |
|
#else |
|
arm32_bootmem_init(memory_start, memory_size, KERNEL_BASE_PHYS); |
|
arm32_kernel_vm_init(KERNEL_VM_BASE, ARM_VECTORS_HIGH, 0, |
|
plat->devmap(), mapallmem_p); |
|
#endif |
|
|
|
VPRINTF("bootargs: %s\n", bootargs); |
VPRINTF("bootargs: %s\n", bootargs); |
|
|