<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/arch/arc/kernel/entry-compact.S, branch v4.9</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v4.9</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v4.9'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2016-05-30T17:15:04Z</updated>
<entry>
<title>ARC: [intc-compact] simplify code for 2 priority levels</title>
<updated>2016-05-30T17:15:04Z</updated>
<author>
<name>Vineet Gupta</name>
<email>vgupta@synopsys.com</email>
</author>
<published>2016-05-30T13:51:22Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=60f2b4b8af548150cc56bf6fd213e47897964794'/>
<id>urn:sha1:60f2b4b8af548150cc56bf6fd213e47897964794</id>
<content type='text'>
ARC700 support for 2 interrupt priorities historically allowed even slow
perpherals such as emac and uart to setup high priority interrupts
which was wrong from the beginning as they could possibly delay the more
critical timer interrupt.

The hardware support for 2 level interrupts in ARCompact is less than
ideal anyways (judging from the "hacks" in low level entry code and thus
is not used in productions systems I know of.

So reduce the scope of this to timer only, thereby reducing a bunch of
complexity.

Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARCv2: Enable LOCKDEP</title>
<updated>2016-04-22T12:42:31Z</updated>
<author>
<name>Evgeny Voevodin</name>
<email>evgeny.voevodin@intel.com</email>
</author>
<published>2016-03-23T09:26:52Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=d9676fa152c83b82137af950b1d4f629045d90c9'/>
<id>urn:sha1:d9676fa152c83b82137af950b1d4f629045d90c9</id>
<content type='text'>
- The asm helpers for calling into irq tracer were missing

- Add calls to above helpers in low level assembly entry code for ARCv2

- irq_save() uses CLRI to disable interrupts and returns the prev interrupt
  state (in STATUS32) in a specific encoding (and not the raw value of
  STATUS32). This is usable with SETI in irq_restore(). However
  save_flags() reads the raw value of STATUS32 which doesn't pair with
  irq_save/restore() and thus needs fixing.

Signed-off-by: Evgeny Voevodin &lt;evgeny.voevodin@intel.com&gt;
[vgupta: updated changelog and also added some comments]
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARC: [arcompact] Handle bus error from userspace as Interrupt not exception</title>
<updated>2015-11-14T07:42:20Z</updated>
<author>
<name>Vineet Gupta</name>
<email>vgupta@synopsys.com</email>
</author>
<published>2015-10-30T19:52:51Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=541366da6a93f52f468b408ba24ab6bb5e4fd3d8'/>
<id>urn:sha1:541366da6a93f52f468b408ba24ab6bb5e4fd3d8</id>
<content type='text'>
Bus errors from userspace on ARCompact based cores are handled by core
as a high priority L2 interrupt but current code treated it as interrupt
Handling an interrupt like exception is certainly not going to go unnoticed.
(and it worked so far as we never saw a Bus error from userspace until
IPPK guys tested a DDR controller with ECC error detection etc hence
needed to explicitly trigger/handle such errors)

 - So move mem_service exception handler from common code into ARCv2 code.
 - In ARCompact code, define  mem_service as L2 interrupt handler which
   just drops down to pure kernel mode and goes of to enqueue SIGBUS

Reported-by: Nelson Pereira &lt;npereira@synopsys.com&gt;
Tested-by: Ana Martins &lt;amartins@synopsys.com&gt;
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARC: boot: Support Halt-on-reset and Run-on-reset SMP booting modes</title>
<updated>2015-10-28T10:38:17Z</updated>
<author>
<name>Vineet Gupta</name>
<email>vgupta@synopsys.com</email>
</author>
<published>2015-10-09T05:56:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=3971cdc202f638f252e39316d42492ace04cc1b1'/>
<id>urn:sha1:3971cdc202f638f252e39316d42492ace04cc1b1</id>
<content type='text'>
For Run-on-reset, non masters need to spin wait. For Halt-on-reset they
can jump to entry point directly.

Also while at it, made reset vector handler as "the" entry point for
kernel including host debugger based boot (which uses the ELF header
entry point)

Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARC: [arcompact] entry.S: Elide extra check/branch in exception ret path</title>
<updated>2015-10-17T12:18:23Z</updated>
<author>
<name>Vineet Gupta</name>
<email>vgupta@synopsys.com</email>
</author>
<published>2015-10-08T12:22:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=9fabcc636bf57dcb9c6fc5b1f34861c548944fd4'/>
<id>urn:sha1:9fabcc636bf57dcb9c6fc5b1f34861c548944fd4</id>
<content type='text'>
This is done by improving the laddering logic !

Before:

   if Exception
      goto excep_or_pure_k_ret

   if !Interrupt(L2)
      goto l1_chk
   else
      INTERRUPT_EPILOGUE 2

 l1_chk:
   if !Interrupt(L1)  (i.e. pure kernel mode)
      goto excep_or_pure_k_ret
   else
      INTERRUPT_EPILOGUE 1

 excep_or_pure_k_ret:
   EXCEPTION_EPILOGUE

Now:

   if !Interrupt(L1 or L2) (i.e. exception or pure kernel mode)
      goto excep_or_pure_k_ret

  ; guaranteed to be an interrupt
   if !Interrupt(L2)
      goto l1_ret
   else
      INTERRUPT_EPILOGUE 2

 ; by virtue of above, no need to chk for L1 active
 l1_ret:
    INTERRUPT_EPILOGUE 1

 excep_or_pure_k_ret:
    EXCEPTION_EPILOGUE

Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARC: [arcompact] entry.S: Document preemption games for L2 intr</title>
<updated>2015-10-17T12:18:23Z</updated>
<author>
<name>Vineet Gupta</name>
<email>vgupta@synopsys.com</email>
</author>
<published>2015-09-06T13:41:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5f888087455c5199195c2ba17b91ac7285a33921'/>
<id>urn:sha1:5f888087455c5199195c2ba17b91ac7285a33921</id>
<content type='text'>
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARC: entry.S: use single EXCEPTION_PROLOGUE</title>
<updated>2015-06-19T12:39:39Z</updated>
<author>
<name>Vineet Gupta</name>
<email>vgupta@synopsys.com</email>
</author>
<published>2015-03-27T15:29:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=c80417b61200072968225e2bed71ed699859a4a3'/>
<id>urn:sha1:c80417b61200072968225e2bed71ed699859a4a3</id>
<content type='text'>
Returning from pure kernel mode and exception mode use the same code
anyways. Remove one the duplicate blocks

Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARC: entry.S: move some code around for cache locality in return path</title>
<updated>2015-06-19T12:39:38Z</updated>
<author>
<name>Vineet Gupta</name>
<email>vgupta@synopsys.com</email>
</author>
<published>2015-03-10T13:43:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=c7e6d7920409c11f158ac5d38bdd08062bf16978'/>
<id>urn:sha1:c7e6d7920409c11f158ac5d38bdd08062bf16978</id>
<content type='text'>
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARC: entry.S: split into ARCompact ISA specific, common bits</title>
<updated>2015-06-19T12:39:38Z</updated>
<author>
<name>Vineet Gupta</name>
<email>vgupta@synopsys.com</email>
</author>
<published>2015-02-21T09:39:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=6d1a20b1d237db29878ae54142e39c87a36d0e95'/>
<id>urn:sha1:6d1a20b1d237db29878ae54142e39c87a36d0e95</id>
<content type='text'>
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
</feed>
