> Up to now I found the mbed team uses WDT reset to implement software reset (CMSIS function NVIC_SystemReset) - this
> is somehow strange, I wonder if they did this because there is no other way for SW reset?.
Correct. A WDT is the only way to do a software reset. Same was true with the older SH4A MPUs.
For the "software reset", just write a unique value to RAM and then check in on RESET and you'll know it was you that caused the reset on purpose.
If you look at Table 58.3 Register States, you can see that "Note 1. Retained on internal power-on reset by the watchdog timer". That is for register XTALCTR. So, you could also check that register on reset to see if that was caused by a WDT reset that you did not cause (as, application hang) assume you set it to something other than 0x00.