Print this page
11787 Kernel needs to be built with retpolines
11788 Kernel needs to generally use RSB stuffing
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: John Levon <john.levon@joyent.com>

*** 22,32 **** /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ ! #pragma ident "%Z%%M% %I% %E% SMI" #if defined(lint) || defined(__lint) #include <sys/types.h> #include <sys/sunddi.h> #else --- 22,34 ---- /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ ! /* ! * Copyright 2019 Joyent, Inc. ! */ #if defined(lint) || defined(__lint) #include <sys/types.h> #include <sys/sunddi.h> #else
*** 287,297 **** cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx jne 2f movzbq (%rsi), %rax ret 2: ! jmp *ACC_GETB(%rdi) SET_SIZE(ddi_get8) SET_SIZE(ddi_getb) SET_SIZE(ddi_mem_getb) SET_SIZE(ddi_mem_get8) SET_SIZE(ddi_io_getb) --- 289,300 ---- cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx jne 2f movzbq (%rsi), %rax ret 2: ! movq ACC_GETB(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_get8) SET_SIZE(ddi_getb) SET_SIZE(ddi_mem_getb) SET_SIZE(ddi_mem_get8) SET_SIZE(ddi_io_getb)
*** 349,359 **** cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx jne 4f movzwq (%rsi), %rax ret 4: ! jmp *ACC_GETW(%rdi) SET_SIZE(ddi_get16) SET_SIZE(ddi_getw) SET_SIZE(ddi_mem_getw) SET_SIZE(ddi_mem_get16) SET_SIZE(ddi_io_getw) --- 352,363 ---- cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx jne 4f movzwq (%rsi), %rax ret 4: ! movq ACC_GETW(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_get16) SET_SIZE(ddi_getw) SET_SIZE(ddi_mem_getw) SET_SIZE(ddi_mem_get16) SET_SIZE(ddi_io_getw)
*** 410,420 **** cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx jne 6f movl (%rsi), %eax ret 6: ! jmp *ACC_GETL(%rdi) SET_SIZE(ddi_get32) SET_SIZE(ddi_getl) SET_SIZE(ddi_mem_getl) SET_SIZE(ddi_mem_get32) SET_SIZE(ddi_io_getl) --- 414,425 ---- cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx jne 6f movl (%rsi), %eax ret 6: ! movq ACC_GETL(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_get32) SET_SIZE(ddi_getl) SET_SIZE(ddi_mem_getl) SET_SIZE(ddi_mem_get32) SET_SIZE(ddi_io_getl)
*** 456,466 **** ENTRY(ddi_get64) ALTENTRY(ddi_getll) ALTENTRY(ddi_mem_getll) ALTENTRY(ddi_mem_get64) ! jmp *ACC_GETLL(%rdi) SET_SIZE(ddi_get64) SET_SIZE(ddi_getll) SET_SIZE(ddi_mem_getll) SET_SIZE(ddi_mem_get64) --- 461,472 ---- ENTRY(ddi_get64) ALTENTRY(ddi_getll) ALTENTRY(ddi_mem_getll) ALTENTRY(ddi_mem_get64) ! movq ACC_GETLL(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_get64) SET_SIZE(ddi_getll) SET_SIZE(ddi_mem_getll) SET_SIZE(ddi_mem_get64)
*** 498,508 **** cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx jne 8f movb %dl, (%rsi) ret 8: ! jmp *ACC_PUTB(%rdi) SET_SIZE(ddi_put8) SET_SIZE(ddi_putb) SET_SIZE(ddi_mem_putb) SET_SIZE(ddi_mem_put8) SET_SIZE(ddi_io_putb) --- 504,515 ---- cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx jne 8f movb %dl, (%rsi) ret 8: ! movq ACC_PUTB(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_put8) SET_SIZE(ddi_putb) SET_SIZE(ddi_mem_putb) SET_SIZE(ddi_mem_put8) SET_SIZE(ddi_io_putb)
*** 561,571 **** cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx jne 9f movw %dx, (%rsi) ret 9: ! jmp *ACC_PUTW(%rdi) SET_SIZE(ddi_put16) SET_SIZE(ddi_putw) SET_SIZE(ddi_mem_putw) SET_SIZE(ddi_mem_put16) SET_SIZE(ddi_io_putw) --- 568,579 ---- cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx jne 9f movw %dx, (%rsi) ret 9: ! movq ACC_PUTW(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_put16) SET_SIZE(ddi_putw) SET_SIZE(ddi_mem_putw) SET_SIZE(ddi_mem_put16) SET_SIZE(ddi_io_putw)
*** 624,634 **** cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx jne 9f movl %edx, (%rsi) ret 9: ! jmp *ACC_PUTL(%rdi) SET_SIZE(ddi_put32) SET_SIZE(ddi_putl) SET_SIZE(ddi_mem_putl) SET_SIZE(ddi_mem_put32) SET_SIZE(ddi_io_putl) --- 632,643 ---- cmpl $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx jne 9f movl %edx, (%rsi) ret 9: ! movq ACC_PUTL(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_put32) SET_SIZE(ddi_putl) SET_SIZE(ddi_mem_putl) SET_SIZE(ddi_mem_put32) SET_SIZE(ddi_io_putl)
*** 672,682 **** ENTRY(ddi_put64) ALTENTRY(ddi_putll) ALTENTRY(ddi_mem_putll) ALTENTRY(ddi_mem_put64) ! jmp *ACC_PUTLL(%rdi) SET_SIZE(ddi_put64) SET_SIZE(ddi_putll) SET_SIZE(ddi_mem_putll) SET_SIZE(ddi_mem_put64) --- 681,692 ---- ENTRY(ddi_put64) ALTENTRY(ddi_putll) ALTENTRY(ddi_mem_putll) ALTENTRY(ddi_mem_put64) ! movq ACC_PUTLL(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_put64) SET_SIZE(ddi_putll) SET_SIZE(ddi_mem_putll) SET_SIZE(ddi_mem_put64)
*** 699,709 **** ENTRY(ddi_rep_get8) ALTENTRY(ddi_rep_getb) ALTENTRY(ddi_mem_rep_getb) ALTENTRY(ddi_mem_rep_get8) ! jmp *ACC_REP_GETB(%rdi) SET_SIZE(ddi_rep_get8) SET_SIZE(ddi_rep_getb) SET_SIZE(ddi_mem_rep_getb) SET_SIZE(ddi_mem_rep_get8) --- 709,720 ---- ENTRY(ddi_rep_get8) ALTENTRY(ddi_rep_getb) ALTENTRY(ddi_mem_rep_getb) ALTENTRY(ddi_mem_rep_get8) ! movq ACC_REP_GETB(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_rep_get8) SET_SIZE(ddi_rep_getb) SET_SIZE(ddi_mem_rep_getb) SET_SIZE(ddi_mem_rep_get8)
*** 726,736 **** ENTRY(ddi_rep_get16) ALTENTRY(ddi_rep_getw) ALTENTRY(ddi_mem_rep_getw) ALTENTRY(ddi_mem_rep_get16) ! jmp *ACC_REP_GETW(%rdi) SET_SIZE(ddi_rep_get16) SET_SIZE(ddi_rep_getw) SET_SIZE(ddi_mem_rep_getw) SET_SIZE(ddi_mem_rep_get16) --- 737,748 ---- ENTRY(ddi_rep_get16) ALTENTRY(ddi_rep_getw) ALTENTRY(ddi_mem_rep_getw) ALTENTRY(ddi_mem_rep_get16) ! movq ACC_REP_GETW(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_rep_get16) SET_SIZE(ddi_rep_getw) SET_SIZE(ddi_mem_rep_getw) SET_SIZE(ddi_mem_rep_get16)
*** 753,763 **** ENTRY(ddi_rep_get32) ALTENTRY(ddi_rep_getl) ALTENTRY(ddi_mem_rep_getl) ALTENTRY(ddi_mem_rep_get32) ! jmp *ACC_REP_GETL(%rdi) SET_SIZE(ddi_rep_get32) SET_SIZE(ddi_rep_getl) SET_SIZE(ddi_mem_rep_getl) SET_SIZE(ddi_mem_rep_get32) --- 765,776 ---- ENTRY(ddi_rep_get32) ALTENTRY(ddi_rep_getl) ALTENTRY(ddi_mem_rep_getl) ALTENTRY(ddi_mem_rep_get32) ! movq ACC_REP_GETL(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_rep_get32) SET_SIZE(ddi_rep_getl) SET_SIZE(ddi_mem_rep_getl) SET_SIZE(ddi_mem_rep_get32)
*** 780,790 **** ENTRY(ddi_rep_get64) ALTENTRY(ddi_rep_getll) ALTENTRY(ddi_mem_rep_getll) ALTENTRY(ddi_mem_rep_get64) ! jmp *ACC_REP_GETLL(%rdi) SET_SIZE(ddi_rep_get64) SET_SIZE(ddi_rep_getll) SET_SIZE(ddi_mem_rep_getll) SET_SIZE(ddi_mem_rep_get64) --- 793,804 ---- ENTRY(ddi_rep_get64) ALTENTRY(ddi_rep_getll) ALTENTRY(ddi_mem_rep_getll) ALTENTRY(ddi_mem_rep_get64) ! movq ACC_REP_GETLL(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_rep_get64) SET_SIZE(ddi_rep_getll) SET_SIZE(ddi_mem_rep_getll) SET_SIZE(ddi_mem_rep_get64)
*** 807,817 **** ENTRY(ddi_rep_put8) ALTENTRY(ddi_rep_putb) ALTENTRY(ddi_mem_rep_putb) ALTENTRY(ddi_mem_rep_put8) ! jmp *ACC_REP_PUTB(%rdi) SET_SIZE(ddi_rep_put8) SET_SIZE(ddi_rep_putb) SET_SIZE(ddi_mem_rep_putb) SET_SIZE(ddi_mem_rep_put8) --- 821,832 ---- ENTRY(ddi_rep_put8) ALTENTRY(ddi_rep_putb) ALTENTRY(ddi_mem_rep_putb) ALTENTRY(ddi_mem_rep_put8) ! movq ACC_REP_PUTB(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_rep_put8) SET_SIZE(ddi_rep_putb) SET_SIZE(ddi_mem_rep_putb) SET_SIZE(ddi_mem_rep_put8)
*** 834,844 **** ENTRY(ddi_rep_put16) ALTENTRY(ddi_rep_putw) ALTENTRY(ddi_mem_rep_putw) ALTENTRY(ddi_mem_rep_put16) ! jmp *ACC_REP_PUTW(%rdi) SET_SIZE(ddi_rep_put16) SET_SIZE(ddi_rep_putw) SET_SIZE(ddi_mem_rep_putw) SET_SIZE(ddi_mem_rep_put16) --- 849,860 ---- ENTRY(ddi_rep_put16) ALTENTRY(ddi_rep_putw) ALTENTRY(ddi_mem_rep_putw) ALTENTRY(ddi_mem_rep_put16) ! movq ACC_REP_PUTW(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_rep_put16) SET_SIZE(ddi_rep_putw) SET_SIZE(ddi_mem_rep_putw) SET_SIZE(ddi_mem_rep_put16)
*** 861,871 **** ENTRY(ddi_rep_put32) ALTENTRY(ddi_rep_putl) ALTENTRY(ddi_mem_rep_putl) ALTENTRY(ddi_mem_rep_put32) ! jmp *ACC_REP_PUTL(%rdi) SET_SIZE(ddi_rep_put32) SET_SIZE(ddi_rep_putl) SET_SIZE(ddi_mem_rep_putl) SET_SIZE(ddi_mem_rep_put32) --- 877,888 ---- ENTRY(ddi_rep_put32) ALTENTRY(ddi_rep_putl) ALTENTRY(ddi_mem_rep_putl) ALTENTRY(ddi_mem_rep_put32) ! movq ACC_REP_PUTL(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_rep_put32) SET_SIZE(ddi_rep_putl) SET_SIZE(ddi_mem_rep_putl) SET_SIZE(ddi_mem_rep_put32)
*** 888,898 **** ENTRY(ddi_rep_put64) ALTENTRY(ddi_rep_putll) ALTENTRY(ddi_mem_rep_putll) ALTENTRY(ddi_mem_rep_put64) ! jmp *ACC_REP_PUTLL(%rdi) SET_SIZE(ddi_rep_put64) SET_SIZE(ddi_rep_putll) SET_SIZE(ddi_mem_rep_putll) SET_SIZE(ddi_mem_rep_put64) --- 905,916 ---- ENTRY(ddi_rep_put64) ALTENTRY(ddi_rep_putll) ALTENTRY(ddi_mem_rep_putll) ALTENTRY(ddi_mem_rep_put64) ! movq ACC_REP_PUTLL(%rdi), %rax ! INDIRECT_JMP_REG(rax) SET_SIZE(ddi_rep_put64) SET_SIZE(ddi_rep_putll) SET_SIZE(ddi_mem_rep_putll) SET_SIZE(ddi_mem_rep_put64)