Print this page
loader: map as much as possible using 1MB pages
Chances are that we never actually executed this bit of code since all the
maps we ever deal with are either very short or much larger than 1MB.

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/armv6/loader/fakeloader.c
          +++ new/usr/src/uts/armv6/loader/fakeloader.c
↓ open down ↓ 438 lines elided ↑ open up ↑
 439  439                  }
 440  440  
 441  441                  entry = ARMPT_VADDR_TO_L1E(vstart);
 442  442                  pte = &pt[entry];
 443  443  
 444  444                  if (!ARMPT_L1E_ISVALID(*pte)) {
 445  445                          uintptr_t l2table;
 446  446  
 447  447                          if (!(vstart & MMU_PAGEOFFSET1M) &&
 448  448                              !(pstart & MMU_PAGEOFFSET1M) &&
 449      -                            len == MMU_PAGESIZE1M) {
      449 +                            len >= MMU_PAGESIZE1M) {
 450  450                                  fakeload_map_1mb(pstart, vstart, prot);
 451  451                                  vstart += MMU_PAGESIZE1M;
 452  452                                  pstart += MMU_PAGESIZE1M;
 453  453                                  len -= MMU_PAGESIZE1M;
 454  454                                  continue;
 455  455                          }
 456  456  
 457  457                          l2table = fakeload_alloc_l2pt();
 458  458                          *pte = 0;
 459  459                          l1pt = (arm_l1pt_t *)pte;
↓ open down ↓ 250 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX