This part in __do_double_fault looks fishy: cmpl $__KERNEL_CS,CS(%rdi) jne do_double_faultShouldn't that be: test $3,CS(%rdi) jnz do_double_fault--Andy