Die Rücksprungaddresse, sprich z.B. EIP vom Prozess der unterbrochen wurde (und noch ein paar Dinge mehr) werden von der CPU gesichert bevor dein Code im ISR zum Zuge kommt. Und diese werden auf dem Stack von dem Ziel-ISR gesichert, weil der Stack wohl vom Betriebssystem verwaltet wird.
Du kannst Software Task Switching ohne TSS machen, solange du keine sog. Ring Transisitions hast, also Sprünge von Ring zu Ring (z.B. von Ring 3 durch einen ISR der in Ring 0 behandelt wird). Das bedeutet jedoch das dann dein ganzes System im Ring 0 laufen müsste.