Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/aim/moea64_native.c
Context not available. | |||||
*/ | */ | ||||
moea64_pteg_table = (struct lpte *)moea64_bootstrap_alloc(size, size); | moea64_pteg_table = (struct lpte *)moea64_bootstrap_alloc(size, size); | ||||
if (hw_direct_map && !(mfmsr() & PSL_DR)) | |||||
moea64_pteg_table = | |||||
(struct lpte *)PHYS_TO_DMAP((vm_offset_t)moea64_pteg_table); | |||||
DISABLE_TRANS(msr); | DISABLE_TRANS(msr); | ||||
bzero(__DEVOLATILE(void *, moea64_pteg_table), moea64_pteg_count * | bzero(__DEVOLATILE(void *, moea64_pteg_table), moea64_pteg_count * | ||||
sizeof(struct lpteg)); | sizeof(struct lpteg)); | ||||
Context not available. | |||||
moea64_mid_bootstrap(mmup, kernelstart, kernelend); | moea64_mid_bootstrap(mmup, kernelstart, kernelend); | ||||
/* | /* | ||||
* Add a mapping for the page table itself if there is no direct map. | * Add a mapping for the page table itself if there is no direct map | ||||
* or the kernel is executing in a way that does let us make use of | |||||
* real-aliased addresses. | |||||
*/ | */ | ||||
if (!hw_direct_map) { | if (!hw_direct_map || | ||||
(vm_offset_t)moea64_pteg_table < DMAP_BASE_ADDRESS) { | |||||
size = moea64_pteg_count * sizeof(struct lpteg); | size = moea64_pteg_count * sizeof(struct lpteg); | ||||
off = (vm_offset_t)(moea64_pteg_table); | off = (vm_offset_t)(moea64_pteg_table); | ||||
DISABLE_TRANS(msr); | DISABLE_TRANS(msr); | ||||
Context not available. |