parisc: add support for TOC (transfer of control)
Almost all PA-RISC machines have either a button that
is labeled with 'TOC' or a BMC function to trigger a TOC.
TOC is a non-maskable interrupt that is sent to the processor.
This can be used for diagnostic purposes like obtaining a
stack trace/register dump or to enter KDB/KGDB.
As an example, on my c8000, TOC can be used with:
CONFIG_KGDB=y
CONFIG_KGDB_KDB=y
and the 'kgdboc=ttyS0,115200' appended to the command line.
Press ^[( on serial console, which will enter the BMC command line,
and enter 'TOC s':
root@(none):/# (
cli>TOC s
Sending TOC/INIT.
<Cpu3>
2800035d03e00000 0000000040c21ac8 CC_ERR_CHECK_TOC
<Cpu0>
2800035d00e00000 0000000040c21ad0 CC_ERR_CHECK_TOC
<Cpu2>
2800035d02e00000 0000000040c21ac8 CC_ERR_CHECK_TOC
<Cpu1>
2800035d01e00000 0000000040c21ad0 CC_ERR_CHECK_TOC
<Cpu3>
37000f7303e00000 2000000000000000 CC_ERR_CPU_CHECK_SUMMARY
<Cpu0>
37000f7300e00000 2000000000000000 CC_ERR_CPU_CHECK_SUMMARY
<Cpu2>
37000f7302e00000 2000000000000000 CC_ERR_CPU_CHECK_SUMMARY
<Cpu1>
37000f7301e00000 2000000000000000 CC_ERR_CPU_CHECK_SUMMARY
<Cpu3>
4300100803e00000 c0000000001d26cc CC_MC_BR_TO_OS_TOC
<Cpu0>
4300100800e00000 c0000000001d26cc CC_MC_BR_TO_OS_TOC
<Cpu2>
4300100802e00000 c0000000001d26cc CC_MC_BR_TO_OS_TOC
<Cpu1>
4300100801e00000 c0000000001d26cc CC_MC_BR_TO_OS_TOC
Entering kdb (current=0x00000000411cef80, pid 0) on processor 0 due to NonMaskable Interrupt @ 0x40c21ad0
[0]kdb>
Signed-off-by: Sven Schnelle <svens@stackframe.org>
Signed-off-by: Helge Deller <deller@gmx.de>