arm: smh: Add option to detect semihosting
authorSean Anderson <sean.anderson@seco.com>
Tue, 22 Mar 2022 20:59:30 +0000 (16:59 -0400)
committerTom Rini <trini@konsulko.com>
Fri, 1 Apr 2022 20:56:53 +0000 (16:56 -0400)
commit385d69d76b4216c10083f908005983d0c62e159c
tree92bd8f763f5538def3726bacbf5b01fdd2158bcb
parent6d16157426b63361d6390b3ab4b304bbe101c825
arm: smh: Add option to detect semihosting

These functions are intended to support detecting semihosting and
falling back gracefully to alternative implementations. The test starts
by making semihosting call. SYS_ERRNO is chosen because it should not
mutate any state. If this semihosting call results in an exception
(rather than being caught by the debugger), then the exception handler
should call disable_semihosting() and resume execution after the call.

Ideally, this would just be part of semihosting by default, and not a
separate config. However, to reduce space ARM SPL doesn't include
exception vectors by default. This means we can't detect if a
semihosting call failed unless we enable them. To avoid forcing them to
be enabled, we use a separate config option. It might also be possible
to try and detect whether a debugger has enabled (by reading HDE from
DSCR), but I wasn't able to figure out a way to do this from all ELs.

This patch just introduces the generic code to handle detection. The
next patch will implement it for arm64 (but not arm32).

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
arch/arm/Kconfig
arch/arm/lib/semihosting.c
include/semihosting.h