pushq   %r8                             /* pt_regs->r8 */
        pushq   %r9                             /* pt_regs->r9 */
        pushq   %r10                            /* pt_regs->r10 */
+       /*
+        * Clear extra registers that a speculation attack might
+        * otherwise want to exploit. Interleave XOR with PUSH
+        * for better uop scheduling:
+        */
+       xorq    %r10, %r10                      /* nospec   r10 */
        pushq   %r11                            /* pt_regs->r11 */
+       xorq    %r11, %r11                      /* nospec   r11 */
        pushq   %rbx                            /* pt_regs->rbx */
+       xorl    %ebx, %ebx                      /* nospec   rbx */
        pushq   %rbp                            /* pt_regs->rbp */
+       xorl    %ebp, %ebp                      /* nospec   rbp */
        pushq   %r12                            /* pt_regs->r12 */
+       xorq    %r12, %r12                      /* nospec   r12 */
        pushq   %r13                            /* pt_regs->r13 */
+       xorq    %r13, %r13                      /* nospec   r13 */
        pushq   %r14                            /* pt_regs->r14 */
+       xorq    %r14, %r14                      /* nospec   r14 */
        pushq   %r15                            /* pt_regs->r15 */
+       xorq    %r15, %r15                      /* nospec   r15 */
        UNWIND_HINT_REGS
 
        TRACE_IRQS_OFF