wie wäre es wenn man einfach zur Stelle null springt?
Wie im genannten thread genannt, wird dabei wirklich nur an die Stelle 0 im Programmcode gesprungen. Die Registerinhalte bleiben erhalten.

Aber eine wirkliche Lösung haben die da auch nicht gefunden.
Eigentlich schon. Wenn du den watchdog normalerweise nicht benötigst, stellst du ihn auf eine kurze reset-Zeit ein (ich glaub, standardmäßig ist schon das kürzeste eingestellt) und schaltest den watchdog an. Nach der eingestellten Zeit wird dann ein echter reset ausgeführt.
Wenn du ihn doch verwendest, musst du halt in der eingestellten Zeit unterbinden, dass der watchdog zurückgesetzt wird. Dann erfolgt auch ein reset.