Der Sprung per Goto aus der ISR heraus ist an sich keine so gute Idee. Man weiss nicht wie die Hardware gerade eingestellt ist, und auch wie viele Daten ggf. auf dem Stack sind, weiss man auch nicht. Wenn man Pech hat wird auch gerade ein Integer Zahl oder ähnliches mit mehr als 1 Byte Länge verändert - das gibt dann ggf. Datenmüll weil alte und neue Daten gemischt werden. Die richtigere Lösung wäre die Struktur des Programms so zu ändern das der Sprung nicht mehr nötig ist. Ggf. einfach in der ISR ein Flag setzen und dann im Hauptprogramm das Flag an den Stellen kontrollieren wo es passt.

Wenn es unbedingt sein muss, dass man aus der ISR verzweigt, müsste man schon fast so etwas wie einen Rest machen, also die Hardware ggf. neu initialilisieren, den Stackpointer neu auf den passenden Wert setzen. Auch im Hauptprogramm müsste man an vielen Stellen Interrupts sperren, z.B. immer wenn man eine Variable mit mehr 1 Byte verändert oder in 16 Bit HW Register (z.B. 16 Bit PWM Werte) schreibt.