version 1.10, 2014/11/04 22:37:09 |
version 1.10.2.3, 2016/03/19 11:29:55 |
Line 151 __KERNEL_RCSID(1, "$NetBSD$"); |
|
Line 151 __KERNEL_RCSID(1, "$NetBSD$"); |
|
#include <sys/kgdb.h> |
#include <sys/kgdb.h> |
#endif |
#endif |
|
|
|
#ifdef MULTIPROCESSOR |
|
static kmutex_t cpu_hatch_lock; |
|
#endif |
|
|
vaddr_t |
vaddr_t |
initarm_common(vaddr_t kvm_base, vsize_t kvm_size, |
initarm_common(vaddr_t kvm_base, vsize_t kvm_size, |
const struct boot_physmem *bp, size_t nbp) |
const struct boot_physmem *bp, size_t nbp) |
Line 264 initarm_common(vaddr_t kvm_base, vsize_t |
|
Line 268 initarm_common(vaddr_t kvm_base, vsize_t |
|
break; |
break; |
} |
} |
} |
} |
|
|
uvm_page_physload(start, segend, start, segend, |
uvm_page_physload(start, segend, start, segend, |
vm_freelist); |
vm_freelist); |
start = segend; |
start = segend; |
Line 276 initarm_common(vaddr_t kvm_base, vsize_t |
|
Line 280 initarm_common(vaddr_t kvm_base, vsize_t |
|
printf("pmap "); |
printf("pmap "); |
#endif |
#endif |
pmap_bootstrap(kvm_base, kvm_base + kvm_size); |
pmap_bootstrap(kvm_base, kvm_base + kvm_size); |
|
|
#ifdef __HAVE_MEMORY_DISK__ |
#ifdef __HAVE_MEMORY_DISK__ |
md_root_setconf(memory_disk, sizeof memory_disk); |
md_root_setconf(memory_disk, sizeof memory_disk); |
#endif |
#endif |
Line 300 initarm_common(vaddr_t kvm_base, vsize_t |
|
Line 304 initarm_common(vaddr_t kvm_base, vsize_t |
|
Debugger(); |
Debugger(); |
#endif |
#endif |
|
|
|
#ifdef MULTIPROCESSOR |
|
mutex_init(&cpu_hatch_lock, MUTEX_DEFAULT, IPL_NONE); |
|
#endif |
|
|
#ifdef VERBOSE_INIT_ARM |
#ifdef VERBOSE_INIT_ARM |
printf("done.\n"); |
printf("done.\n"); |
#endif |
#endif |
Line 323 cpu_hatch(struct cpu_info *ci, cpuid_t c |
|
Line 331 cpu_hatch(struct cpu_info *ci, cpuid_t c |
|
*/ |
*/ |
splhigh(); |
splhigh(); |
|
|
|
#ifdef CPU_CORTEX |
|
#if 0 |
|
KASSERTMSG(armreg_auxctl_read() & CORTEXA9_AUXCTL_SMP, "auxctl %#x", |
|
armreg_auxctl_read()); |
|
#endif |
|
#endif |
|
|
#ifdef VERBOSE_INIT_ARM |
#ifdef VERBOSE_INIT_ARM |
printf("%s(%s): ", __func__, ci->ci_data.cpu_name); |
printf("%s(%s): ", __func__, ci->ci_data.cpu_name); |
#endif |
#endif |
Line 377 cpu_hatch(struct cpu_info *ci, cpuid_t c |
|
Line 392 cpu_hatch(struct cpu_info *ci, cpuid_t c |
|
if (CPU_ID_CORTEX_P(ci->ci_arm_cpuid)) { |
if (CPU_ID_CORTEX_P(ci->ci_arm_cpuid)) { |
/* |
/* |
* Start and reset the PMC Cycle Counter. |
* Start and reset the PMC Cycle Counter. |
*/ |
*/ |
armreg_pmcr_write(ARM11_PMCCTL_E|ARM11_PMCCTL_P|ARM11_PMCCTL_C); |
armreg_pmcr_write(ARM11_PMCCTL_E|ARM11_PMCCTL_P|ARM11_PMCCTL_C); |
armreg_pmcntenset_write(CORTEX_CNTENS_C); |
armreg_pmcntenset_write(CORTEX_CNTENS_C); |
} |
} |
#endif |
#endif |
|
|
|
mutex_enter(&cpu_hatch_lock); |
|
|
aprint_naive("%s", device_xname(ci->ci_dev)); |
aprint_naive("%s", device_xname(ci->ci_dev)); |
aprint_normal("%s", device_xname(ci->ci_dev)); |
aprint_normal("%s", device_xname(ci->ci_dev)); |
identify_arm_cpu(ci->ci_dev, ci); |
identify_arm_cpu(ci->ci_dev, ci); |
Line 391 cpu_hatch(struct cpu_info *ci, cpuid_t c |
|
Line 408 cpu_hatch(struct cpu_info *ci, cpuid_t c |
|
#endif |
#endif |
vfp_attach(ci); |
vfp_attach(ci); |
|
|
|
mutex_exit(&cpu_hatch_lock); |
|
|
#ifdef VERBOSE_INIT_ARM |
#ifdef VERBOSE_INIT_ARM |
printf(" interrupts"); |
printf(" interrupts"); |
#endif |
#endif |