In der ISR brauchst du kein cli zu machen, Interrupts werden durch die Hardware während Ausführung der ISR deaktiviert.
Das sei am Ende ermöglicht geschachtelte Interrupts! Das willst du sicher nicht. Wirf das raus.