The x86_64 SysV calling convention does not require r8-r11 to be preserved by the callee. So we need to save and restore them in the low-level interrupt handling code in case the C interrupt() function uses them.