Print this page
loader: document the page table setup
loader: simplify MMU enabling code

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/armv6/loader/fakeloader_core.s
          +++ new/usr/src/uts/armv6/loader/fakeloader_core.s
↓ open down ↓ 67 lines elided ↑ open up ↑
  68   68  
  69   69          /*
  70   70           * We need to set up the world for the first time. We'll do the
  71   71           * following in order:
  72   72           *
  73   73           * o Set the TTBCR to always use TTBR0
  74   74           * o Set domain 0 to manager mode
  75   75           * o Program the Page table root
  76   76           */
  77   77          ENTRY(fakeload_pt_setup)
       78 +        /* use TTBR0 only (should already be true) */
  78   79          mov     r1, #0
  79   80          mcr     p15, 0, r1, c2, c0, 2
       81 +
       82 +        /* set domain 0 to manager mode */
  80   83          mov     r1, #3
  81   84          mcr     p15, 0, r1, c3, c0, 0
  82      -        orr     r0, r0, #0x1b
       85 +
       86 +        /* set TTBR0 to page table root */
       87 +        orr     r0, r0, #0x18           /* Outer WB, no WA Cachable */
       88 +        orr     r0, r0, #0x2            /* Sharable */
       89 +        orr     r0, r0, #0x1            /* Inner Cachable */
  83   90          mcr     p15, 0, r0, c2, c0, 0
  84   91          bx      lr
  85   92          SET_SIZE(fakeload_pt_setup)
  86   93  
  87   94  #endif /* __lint */
  88   95  
  89   96  #if defined(__lint)
  90   97  
  91   98  /* ARGSUSED */
  92   99  void
↓ open down ↓ 1 lines elided ↑ open up ↑
  94  101  {}
  95  102  
  96  103  #else   /* __lint */
  97  104  
  98  105          /*
  99  106           * We first make sure that the ARMv6 pages are enabled (bit 23) and then
 100  107           * enable the MMU (bit 0).
 101  108           */
 102  109          ENTRY(fakeload_mmu_enable)
 103  110          mrc     p15, 0, r0, c1, c0, 0
 104      -        orr     r0, #0x800000
 105      -        mcr     p15, 0, r0, c1, c0, 0
 106      -        mrc     p15, 0, r0, c1, c0, 0
 107      -        orr     r0, #0x1
      111 +        orr     r0, #0x800000           /* enable ARMv6 pages */
      112 +        orr     r0, #0x1                /* enable MMU */
 108  113          mcr     p15, 0, r0, c1, c0, 0
 109  114          bx      lr
 110  115          SET_SIZE(fakeload_mmu_enable)
 111  116  #endif  /* __lint */
 112  117  
 113  118  
 114  119          ENTRY(fakeload_exec)
 115  120          blx     r3
 116  121          /* We should never execute this. If we do we'll go back to a panic */
 117  122          bx      lr
 118  123          SET_SIZE(fakeload_exec)
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX