title: cortex m1 hard fault at ldrsh
body: <p>Hello everyone i have HardFault exception on my cortex m1 many times at the same place. I've got HardFault implementation and i can read stacked registers:</p>
  
  <p>stacked_r0  unsigned int    0x4 (Hex)<br>
  stacked_r1  unsigned int    0x60905f98 (Hex)<br>
  stacked_r2  unsigned int    0x0 (Hex)<br>
  stacked_r3  unsigned int    0x6092304b (Hex)<br>
  stacked_r12 unsigned int    0x60922ff8 (Hex)<br>
  stacked_lr  unsigned int    0x60810be3 (Hex)<br>
  stacked_pc  unsigned int    0x60810ce2 (Hex)<br>
  stacked_psr unsigned int    0x41000000 (Hex)    </p>
  
  <p>the operation at stacked PC is:
  60810ce2:   ldrsh   r2, [r3, r2]</p>
  
  <p>why it causes fault?</p>
  
  <p>upd
  i've rearranged variables and for now it has crashed in memcpy called from freertos code </p>
  
  <p>stacked_r0  unsigned int    0x6090c858 (Hex)<br>
  stacked_r1  unsigned int    0x6091f8b4 (Hex)<br>
  stacked_r2  unsigned int    0x3c (Hex)<br>
  stacked_r3  unsigned int    0x6091f8a4 (Hex)<br>
  stacked_r12 unsigned int    0x280 (Hex) 
  stacked_lr  unsigned int    0x60827f89 (Hex)<br>
  stacked_pc  unsigned int    0x6082b0dc (Hex)<br>
  stacked_psr unsigned int    0x1000000 (Hex) </p>
  
  <p>6082b0ba:   bne.n   0x6082b120 </p>
  
  <p>6082b0bc:   adds    r5, r2, #0</p>
  
  <p>6082b0be:   adds    r4, r0, #0</p>
  
  <p>6082b0c0:   subs    r5, #16</p>
  
  <p>6082b0c2:   lsrs    r5, r5, #4</p>
  
  <p>6082b0c4:   adds    r5, #1</p>
  
  <p>6082b0c6:   lsls    r5, r5, #4</p>
  
  <p>6082b0c8:   adds    r1, r1, r5</p>
  
  <p>6082b0ca:   ldr     r6, [r3, #0]</p>
  
  <p>6082b0cc:   str     r6, [r4, #0]</p>
  
  <p>6082b0ce:   ldr     r6, [r3, #4]</p>
  
  <p>6082b0d0:   str     r6, [r4, #4]</p>
  
  <p>6082b0d2:   ldr     r6, [r3, #8]</p>
  
  <p>6082b0d4:   str     r6, [r4, #8]</p>
  
  <p>6082b0d6:   ldr     r6, [r3, #12]</p>
  
  <p>6082b0d8:   adds    r3, #16</p>
  
  <p>6082b0da:   str     r6, [r4, #12] </p>
  
  <p>6082b0dc:   adds    r4, #16 </p>