.code64
        .globl startup_64
  startup_64:
 -
        /*
-        * At this point the CPU runs in 64bit mode CS.L = 1 CS.D = 1,
+        * At this point the CPU runs in 64bit mode CS.L = 1 CS.D = 0,
         * and someone has loaded an identity mapped page table
         * for us.  These identity mapped page tables map all of the
         * kernel pages and possibly all of memory.
        /* Fixup phys_base */
        addq    %rbp, phys_base(%rip)
  
 -      /* Due to ENTRY(), sometimes the empty space gets filled with
 -       * zeros. Better take a jmp than relying on empty space being
 -       * filled with 0x90 (nop)
 -       */
 -      jmp secondary_startup_64
 +      movq    $(early_level4_pgt - __START_KERNEL_map), %rax
 +      jmp 1f
  ENTRY(secondary_startup_64)
        /*
-        * At this point the CPU runs in 64bit mode CS.L = 1 CS.D = 1,
+        * At this point the CPU runs in 64bit mode CS.L = 1 CS.D = 0,
         * and someone has loaded a mapped page table.
         *
 -       * %esi holds a physical pointer to real_mode_data.
 +       * %rsi holds a physical pointer to real_mode_data.
         *
         * We come here either from startup_64 (using physical addresses)
         * or from trampoline.S (using virtual addresses).