Hi,

in the effort to ease debugging by supporting a choice between halting and rebooting
we are introducing a new HAL API:

void tfm_hal_system_halt(void)

which by default (weak) does:


__disable​_irq();
while(1) { __WFE(); }


CPUs cannot halt. But they can sleep until they are awoken in a loop, which is pretty close.

tfm_hal_system_halt() is, when configured so, used by tfm_core_panic() which is why we disable irqs
to stop all threads of execution, not just the thread that is executing.

Currently it is proposed that tfm_core_panic() halts when TFM_HALT_ON_CORE_PANIC is ON
and otherwise reboots.

TFM_HALT_ON_CORE_PANIC is default ON if and only if Debug mode is enabled.

Any feedback to these changes are welcome, and if any platform needs to halt in a different manner
then a contribution would be welcome as well.

https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/13839