Use this forum to chat about hardware specific topics for the ESP8266 (peripherals, memory, clocks, JTAG, programming)

User avatar
By Aleksei
#26882 Hello,

Can somebody help to understand what's going on in _ResetHandler. I have no insight about witlb and wdtlb registers. What values are passed to it?

Code: Select all00000080 <_ResetVector>:
      80:       000806          j       a4 <_ResetHandler>
      83:       000000          ill
      86:       000000          ill
      89:       400000          ssr     a0
      8c:       1f              .byte 0x1f
      8d:       222221          l32r    a2, fffc8918 <_rom_store+0xfffba590>
      90:       000000          ill
      93:       e0              .byte 0xe0
      94:       f3              .byte 0xf3
      95:       400000          ssr     a0
      98:       e328            l32i.n  a2, a3, 56
      9a:       004000          break   0, 0
      9d:       000000          ill
      a0:       000000          ill
      a3:       00              .byte 00

000000a4 <_ResetHandler>:
      a4:       000c            movi.n  a0, 0
      a6:       13e400          wsr.intenable   a0
      a9:       130500          wsr.litbase     a0
      ac:       002010          rsync
      af:       fff521          l32r    a2, 84 <_ResetVector+0x4>
      b2:       03eb30          rsr.prid        a3
      b5:       743030          extui   a3, a3, 0, 8
      b8:       428c            beqz.n  a2, c0 <_ResetHandler+0x1c>
      ba:       002356          bnez    a3, c0 <_ResetHandler+0x1c>
      bd:       006202          s32i    a0, a2, 0
      c0:       fff221          l32r    a2, 88 <_ResetVector+0x8>
      c3:       13e720          wsr.vecbase     a2
      c6:       006120          rsil    a2, 1
      c9:       fff021          l32r    a2, 8c <_ResetVector+0xc>
      cc:       fff151          l32r    a5, 90 <_ResetVector+0x10>
      cf:       fff161          l32r    a6, 94 <_ResetVector+0x14>
      d2:       030c            movi.n  a3, 0
      d4:       027d            mov.n   a7, a2
      d6:       106650          and     a6, a6, a5
      d9:       000586          j       f3 <_ResetHandler+0x4f>
      dc:       000000          ill
      df:       00              .byte 00
      e0:       506340          witlb   a4, a3
      e3:       002000          isync
      e6:       f03d            nop.n
      e8:       f03d            nop.n
      ea:       c03350          sub     a3, a3, a5
      ed:       14b3b6          bltui   a3, 16, 105 <_ResetHandler+0x61>
      f0:       417470          srli    a7, a7, 4
      f3:       344070          extui   a4, a7, 0, 4
      f6:       e61367          beq     a3, a6, e0 <_ResetHandler+0x3c>
      f9:       506340          witlb   a4, a3
      fc:       c03350          sub     a3, a3, a5
      ff:       edb3f6          bgeui   a3, 16, f0 <_ResetHandler+0x4c>
     102:       002000          isync
     105:       ffe251          l32r    a5, 90 <_ResetVector+0x10>
     108:       030c            movi.n  a3, 0
     10a:       207220          or      a7, a2, a2
     10d:       344070          extui   a4, a7, 0, 4
     110:       50e340          wdtlb   a4, a3
     113:       c03350          sub     a3, a3, a5
     116:       417470          srli    a7, a7, 4
     119:       f0b3f6          bgeui   a3, 16, 10d <_ResetHandler+0x69>
     11c:       002030          dsync
     11f:       ffde21          l32r    a2, 98 <_ResetVector+0x18>
     122:       02ac            beqz.n  a2, 146 <_ResetHandler+0xa2>
     124:       0238            l32i.n  a3, a2, 0
     126:       1248            l32i.n  a4, a2, 4
     128:       2258            l32i.n  a5, a2, 8
     12a:       0cc222          addi    a2, a2, 12
     12d:       0fb347          bgeu    a3, a4, 140 <_ResetHandler+0x9c>
     130:       0568            l32i.n  a6, a5, 0
     132:       554b            addi.n  a5, a5, 4
     134:       0369            s32i.n  a6, a3, 0
     136:       334b            addi.n  a3, a3, 4
     138:       f43347          bltu    a3, a4, 130 <_ResetHandler+0x8c>
     13b:       fff946          j       124 <_ResetHandler+0x80>
     13e:       00              .byte 00
     13f:       00              .byte 00
     140:       fe0356          bnez    a3, 124 <_ResetHandler+0x80>
     143:       fdd556          bnez    a5, 124 <_ResetHandler+0x80>
     146:       002000          isync
     149:       002e05          call0   42c <_start>


Best regards,
Aleksei
User avatar
By eriksl
#26896 (w)itlb is probably the instruction transaction lookaside buffer, (w)dtlb the data transaction lookaside buffer. Caches of the page tables. As the page tables on the esp8266 are very simple, I can't imagine the TLB's are very complex ;)

I didn't know if you already knew about TLB's.
User avatar
By Aleksei
#26900
eriksl wrote:I didn't know if you already knew about TLB's.


I do already know about TLB's but I still can't figure out what values are passed to the registers by means of a4 and a3.