Page MenuHomeFreeBSD

D20608.id58542.diff
No OneTemporary

D20608.id58542.diff

Index: sys/powerpc/aim/mmu_oea64.c
===================================================================
--- sys/powerpc/aim/mmu_oea64.c
+++ sys/powerpc/aim/mmu_oea64.c
@@ -685,8 +685,16 @@
* without a direct map or on which the kernel is not already executing
* out of the direct-mapped region.
*/
-
- if (!hw_direct_map || kernelstart < DMAP_BASE_ADDRESS) {
+ if (kernelstart < DMAP_BASE_ADDRESS) {
+ /*
+ * For pre-dmap execution, we need to use identity mapping
+ * because we will be operating with the mmu on but in the
+ * wrong address configuration until we __restartkernel().
+ */
+ for (pa = kernelstart & ~PAGE_MASK; pa < kernelend;
+ pa += PAGE_SIZE)
+ moea64_kenter(mmup, pa, pa);
+ } else if (!hw_direct_map) {
pkernelstart = kernelstart & ~DMAP_BASE_ADDRESS;
pkernelend = kernelend & ~DMAP_BASE_ADDRESS;
for (pa = pkernelstart & ~PAGE_MASK; pa < pkernelend;

File Metadata

Mime Type
text/plain
Expires
Thu, Aug 27, 5:10 PM (2 s ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37403694
Default Alt Text
D20608.id58542.diff (907 B)

Event Timeline