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)