Print this page
bcm2835: move strict alignment check disable code into the loader
Since the loader wants to muck with alignment related bits of the SCTLR
anyway, it should set both A and U to the desired values (0 and 1
respectively).

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 ↓ 43 lines elided ↑ open up ↑
  44   44  fakeload_unaligned_enable(void)
  45   45  {}
  46   46  
  47   47  #else   /* __lint */
  48   48  
  49   49          /*
  50   50           * Fix up alignment by turning off A and by turning on U.
  51   51           */
  52   52          ENTRY(fakeload_unaligned_enable)
  53   53          mrc     p15, 0, r0, c1, c0, 0
  54      -        orr     r0, #0x400000
       54 +        orr     r0, #0x400000   /* U = 1 */
       55 +        bic     r0, r0, #2      /* A = 0 */
  55   56          mcr     p15, 0, r0, c1, c0, 0
  56   57          bx      lr
  57   58          SET_SIZE(fakeload_unaligned_enable);
  58   59  
  59   60  #endif  /* __lint */
  60   61  
  61   62  #if defined(__lint)
  62   63  
  63   64  fakeload_pt_setup(uintptr_t ptroot)
  64   65  {}
↓ open down ↓ 53 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX