MIPS: CPS: Early debug using an ns16550-compatible UART
Provide support for outputting early debug information, in the form of various register values should an exception occur, during the early bringup of secondary cores. This code requires an ns16550-compatible UART accessible from the secondary core, and is written in assembly due to the environment in which such early exceptions occur where way may not have a stack, be coherent or even have initialised caches. [ralf@linux-mips.org: Fix merge conflict.] Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Cc: Steven J. Hill <Steven.Hill@imgtec.com> Cc: Andrew Bresticker <abrestic@chromium.org> Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com> Cc: Maciej W. Rozycki <macro@linux-mips.org> Cc: Jason Cooper <jason@lakedaemon.net> Cc: linux-kernel@vger.kernel.org Cc: James Hogan <james.hogan@imgtec.com> Cc: Markos Chandras <markos.chandras@imgtec.com> Patchwork: https://patchwork.linux-mips.org/patch/11202/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:

committed by
Ralf Baechle

parent
195cee92af
commit
609cf6f229
@@ -31,6 +31,20 @@
|
||||
# define STATUS_BITDEPS 0
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MIPS_CPS_NS16550
|
||||
|
||||
#define DUMP_EXCEP(name) \
|
||||
PTR_LA a0, 8f; \
|
||||
jal mips_cps_bev_dump; \
|
||||
nop; \
|
||||
TEXT(name)
|
||||
|
||||
#else /* !CONFIG_MIPS_CPS_NS16550 */
|
||||
|
||||
#define DUMP_EXCEP(name)
|
||||
|
||||
#endif /* !CONFIG_MIPS_CPS_NS16550 */
|
||||
|
||||
/*
|
||||
* Set dest to non-zero if the core supports the MT ASE, else zero. If
|
||||
* MT is not supported then branch to nomt.
|
||||
@@ -194,36 +208,42 @@ dcache_done:
|
||||
|
||||
.org 0x200
|
||||
LEAF(excep_tlbfill)
|
||||
DUMP_EXCEP("TLB Fill")
|
||||
b .
|
||||
nop
|
||||
END(excep_tlbfill)
|
||||
|
||||
.org 0x280
|
||||
LEAF(excep_xtlbfill)
|
||||
DUMP_EXCEP("XTLB Fill")
|
||||
b .
|
||||
nop
|
||||
END(excep_xtlbfill)
|
||||
|
||||
.org 0x300
|
||||
LEAF(excep_cache)
|
||||
DUMP_EXCEP("Cache")
|
||||
b .
|
||||
nop
|
||||
END(excep_cache)
|
||||
|
||||
.org 0x380
|
||||
LEAF(excep_genex)
|
||||
DUMP_EXCEP("General")
|
||||
b .
|
||||
nop
|
||||
END(excep_genex)
|
||||
|
||||
.org 0x400
|
||||
LEAF(excep_intex)
|
||||
DUMP_EXCEP("Interrupt")
|
||||
b .
|
||||
nop
|
||||
END(excep_intex)
|
||||
|
||||
.org 0x480
|
||||
LEAF(excep_ejtag)
|
||||
DUMP_EXCEP("EJTAG")
|
||||
PTR_LA k0, ejtag_debug_handler
|
||||
jr k0
|
||||
nop
|
||||
|
Reference in New Issue
Block a user