* Move functions out of IRAM when possible
umm_init() is called in OS startup after flash is enabled, and never
again.
cont_get_free_stack() shouldn't be called from IRQ.
Don't inline _iram_read_byte() function.
* Move system fault handler to flash, use new printf
The __wrap_system_restart call has been in flash for quite a while and
seems to be working fine. There were some support routines that were
placed in IRAM (mistakenly thinking the wrap_restart caller was also in
IRAM) which are now moved to flash.
Clean up the printf code to use the new stdlib which handles PGM_P
strings as format and arguments without any difficulty.
* Make STR macro more unique
Add double-underscores to some string assistance macros to avoid
conflicts with user applications.
* Use function, not macro, to save code space
Save ~2KB final bin size by using a ets_printf_P function and not
an inline macro. IRAM and HEAP unaffected.
* Don't actually touch the SP in the dump
Store a copy of the incoming stack pointer in the postmortem in order
to avoid actually changing the SP when a crash happend in BearSSL.
* Make C++ uncaught exceptions explicit
Use the term "Unhandled C++ exception" instead of just "Unhandled
exception" to make it clear such crashes are caused by a C++ throw
and now a system exception.