<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2017-08-15 14:57 GMT+02:00 Joel Sherrill <span dir="ltr"><<a href="mailto:joel@rtems.org" target="_blank">joel@rtems.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><span class="gmail-m_-4678324850106140641gmail-"><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Aug 15, 2017 4:32 AM, "Denis Obrezkov" <<a href="mailto:denisobrezkov@gmail.com" target="_blank">denisobrezkov@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail-m_-4678324850106140641gmail-m_8837629927732152313quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail-m_-4678324850106140641gmail-m_8837629927732152313elided-text"><div class="gmail_quote">2017-08-15 5:44 GMT+02:00 Hesham Almatary <span dir="ltr"><<a href="mailto:heshamelmatary@gmail.com" target="_blank">heshamelmatary@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Denis,<br>
<br>
You just need to modify riscv_interrupt_disable(). Read the priv-spec<br>
manual for your RISC-V version, and determine which bit should be<br>
cleared (it's called MIE in priv-1.10, but you mentioned you work with<br>
priv-1.9).<br></blockquote></div></div></div></div></blockquote></div></div></div><div dir="auto"><br></div></span><div dir="auto">Is the bit set correctly for the idle thread?</div><div dir="auto"><br></div><div dir="auto">I assume this is with a real clock driver so is it maintained properly across an ISR?</div><div dir="auto"><br></div><div dir="auto">It is either screwed up by the thread context initialization, context switch, or ISR code. ISR code has two exit paths. It could be the preemption path. That would occur about 5 seconds into the execution of ticker and TA1 will preemption idle.</div><div><div class="gmail-m_-4678324850106140641gmail-h5"><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail-m_-4678324850106140641gmail-m_8837629927732152313quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail-m_-4678324850106140641gmail-m_8837629927732152313elided-text"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br></blockquote></div></div></div></div></blockquote></div><br></div></div></div></div></div>
</blockquote></div>I understand this but still can find a mistake.</div><div class="gmail_extra">This is what I get:</div><div class="gmail_extra">
<p style="margin:0px"><br></p>
<p style="margin:0px">*** LOW MEMORY CLOCK TICK TEST ***</p>
<p style="margin:0px">TA1  - rtems_clock_get_tod - 09:00:00   12/31/1988</p>
<p style="margin:0px">TA2  - rtems_clock_get_tod - 09:00:00   12/31/1988</p>
<p style="margin:0px">TA3  - rtems_clock_get_tod - 09:00:00   12/31/1988</p>
<p style="margin:0px">TA1  - rtems_clock_get_tod - 09:00:04   12/31/1988</p>
<p style="margin:0px">TA2  - rtems_clock_get_tod - 09:00:09   12/31/1988</p>
<p style="margin:0px">TA1  - rtems_clock_get_tod - 09:00:09   12/31/1988</p><p style="margin:0px"><br></p><p style="margin:0px">After that I can examine: p Clock_driver_ticksĀ </p><p style="margin:0px">$8 = 1001</p><div><br></div><div>mstatus value is 0x0001800 (interrupts disabled)</div><div><br></div><div>Instruction for enabling global interrupts is:</div><div>csrsi mstatus, 0x8</div><div>for disabling:</div><div>csrci mstatus, 0x8</div><div>it atomically changes the fourth bit of mstatus (ie bit).</div><div><br></div><div>I think that something wrong happens in context switches between TA1, TA2 and Idle.</div><div><br></div><div>This is my context switch file:</div><div><a href="https://github.com/embeddedden/rtems-riscv/blob/hifive1/cpukit/score/cpu/riscv32/riscv-context-switch.S">https://github.com/embeddedden/rtems-riscv/blob/hifive1/cpukit/score/cpu/riscv32/riscv-context-switch.S</a><br></div><div>Interrupt disabling:</div><div><a href="https://github.com/embeddedden/rtems-riscv/blob/hifive1/cpukit/score/cpu/riscv32/rtems/score/cpu.h#L542">https://github.com/embeddedden/rtems-riscv/blob/hifive1/cpukit/score/cpu/riscv32/rtems/score/cpu.h#L542</a><br></div><div>Context initialize:</div><div><a href="https://github.com/embeddedden/rtems-riscv/blob/hifive1/cpukit/score/cpu/riscv32/riscv-context-initialize.c">https://github.com/embeddedden/rtems-riscv/blob/hifive1/cpukit/score/cpu/riscv32/riscv-context-initialize.c</a><br></div><div>Interrupt context save:</div><div><a href="https://github.com/embeddedden/rtems-riscv/blob/hifive1/c/src/lib/libbsp/riscv32/hifive1/start/start.S#L200">https://github.com/embeddedden/rtems-riscv/blob/hifive1/c/src/lib/libbsp/riscv32/hifive1/start/start.S#L200</a><br></div><div><br></div><div>Could have a look?</div><div><br></div><div><br></div><br clear="all"><div><br></div>-- <br><div class="gmail-m_-4678324850106140641gmail_signature">Regards, Denis Obrezkov</div>
</div></div>