The IDT you're building here is what every x86 kernel uses to route hardware IRQs, CPU exceptions, and syscalls to handler code, and vector 128 (0x80) is the literal interrupt number Linux used for system calls for two decades before syscall/sysret replaced it. Forgetting to end a handler with iret instead of ret is a classic bug that corrupts the interrupted task's entire register and flag state.