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>


   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
  24  * Use is subject to license terms.
  25  */
  26 
  27 #pragma ident   "%Z%%M% %I%     %E% SMI"


  28 
  29 #if defined(lint) || defined(__lint)
  30 #include <sys/types.h>
  31 #include <sys/sunddi.h>
  32 #else
  33 #include <sys/asm_linkage.h>
  34 #include <sys/asm_misc.h>
  35 #include "assym.h"
  36 #endif
  37 
  38 #if defined(lint) || defined(__lint)
  39 
  40 /*ARGSUSED*/
  41 uint8_t
  42 ddi_get8(ddi_acc_handle_t handle, uint8_t *addr)
  43 {
  44         return (0);
  45 }
  46 
  47 /*ARGSUSED*/


 272 
 273         ENTRY(ddi_get8)
 274         ALTENTRY(ddi_getb)
 275         ALTENTRY(ddi_mem_getb)
 276         ALTENTRY(ddi_mem_get8)
 277         ALTENTRY(ddi_io_getb)
 278         ALTENTRY(ddi_io_get8)
 279         movl    ACC_ATTR(%rdi), %edx
 280         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %edx
 281         jne     1f
 282         movq    %rsi, %rdx
 283         xorq    %rax, %rax
 284         inb     (%dx)
 285         ret
 286 1:
 287         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx
 288         jne     2f
 289         movzbq  (%rsi), %rax
 290         ret
 291 2:
 292         jmp     *ACC_GETB(%rdi)

 293         SET_SIZE(ddi_get8)
 294         SET_SIZE(ddi_getb)
 295         SET_SIZE(ddi_mem_getb)
 296         SET_SIZE(ddi_mem_get8)
 297         SET_SIZE(ddi_io_getb)
 298         SET_SIZE(ddi_io_get8)
 299 
 300 #elif defined(__i386)
 301 
 302         ENTRY(ddi_get8)
 303         ALTENTRY(ddi_getb)
 304         ALTENTRY(ddi_mem_getb)
 305         ALTENTRY(ddi_mem_get8)
 306         ALTENTRY(ddi_io_getb)
 307         ALTENTRY(ddi_io_get8)
 308         movl    4(%esp), %eax
 309         movl    ACC_ATTR(%eax), %ecx
 310         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 311         jne     1f
 312         movl    8(%esp), %edx


 334 
 335         ENTRY(ddi_get16)
 336         ALTENTRY(ddi_getw)
 337         ALTENTRY(ddi_mem_getw)
 338         ALTENTRY(ddi_mem_get16)
 339         ALTENTRY(ddi_io_getw)
 340         ALTENTRY(ddi_io_get16)
 341         movl    ACC_ATTR(%rdi), %edx
 342         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %edx
 343         jne     3f
 344         movq    %rsi, %rdx
 345         xorq    %rax, %rax
 346         inw     (%dx)
 347         ret
 348 3:
 349         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx
 350         jne     4f
 351         movzwq  (%rsi), %rax
 352         ret
 353 4:
 354         jmp     *ACC_GETW(%rdi)

 355         SET_SIZE(ddi_get16)
 356         SET_SIZE(ddi_getw)
 357         SET_SIZE(ddi_mem_getw)
 358         SET_SIZE(ddi_mem_get16)
 359         SET_SIZE(ddi_io_getw)
 360         SET_SIZE(ddi_io_get16)
 361 
 362 #elif defined(__i386)
 363 
 364         ENTRY(ddi_get16)
 365         ALTENTRY(ddi_getw)
 366         ALTENTRY(ddi_mem_getw)
 367         ALTENTRY(ddi_mem_get16)
 368         ALTENTRY(ddi_io_getw)
 369         ALTENTRY(ddi_io_get16)
 370         movl    4(%esp), %eax
 371         movl    ACC_ATTR(%eax), %ecx
 372         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 373         jne     3f
 374         movl    8(%esp), %edx


 395 #if defined(__amd64)
 396 
 397         ENTRY(ddi_get32)
 398         ALTENTRY(ddi_getl)
 399         ALTENTRY(ddi_mem_getl)
 400         ALTENTRY(ddi_mem_get32)
 401         ALTENTRY(ddi_io_getl)
 402         ALTENTRY(ddi_io_get32)
 403         movl    ACC_ATTR(%rdi), %edx
 404         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %edx
 405         jne     5f
 406         movq    %rsi, %rdx
 407         inl     (%dx)
 408         ret
 409 5:
 410         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx
 411         jne     6f
 412         movl    (%rsi), %eax
 413         ret
 414 6:
 415         jmp     *ACC_GETL(%rdi)

 416         SET_SIZE(ddi_get32)
 417         SET_SIZE(ddi_getl)
 418         SET_SIZE(ddi_mem_getl)
 419         SET_SIZE(ddi_mem_get32)
 420         SET_SIZE(ddi_io_getl)
 421         SET_SIZE(ddi_io_get32)
 422 
 423 #elif defined(__i386)
 424 
 425         ENTRY(ddi_get32)
 426         ALTENTRY(ddi_getl)
 427         ALTENTRY(ddi_mem_getl)
 428         ALTENTRY(ddi_mem_get32)
 429         ALTENTRY(ddi_io_getl)
 430         ALTENTRY(ddi_io_get32)
 431         movl    4(%esp), %eax
 432         movl    ACC_ATTR(%eax), %ecx
 433         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 434         jne     5f
 435         movl    8(%esp), %edx


 441         movl    8(%esp), %eax
 442         movl    (%eax), %eax
 443         ret
 444 6:
 445         jmp     *ACC_GETL(%eax)
 446         SET_SIZE(ddi_get32)
 447         SET_SIZE(ddi_getl)
 448         SET_SIZE(ddi_mem_getl)
 449         SET_SIZE(ddi_mem_get32)
 450         SET_SIZE(ddi_io_getl)
 451         SET_SIZE(ddi_io_get32)
 452 
 453 #endif  /* __i386 */
 454 
 455 #if defined(__amd64)
 456 
 457         ENTRY(ddi_get64)
 458         ALTENTRY(ddi_getll)
 459         ALTENTRY(ddi_mem_getll)
 460         ALTENTRY(ddi_mem_get64)
 461         jmp     *ACC_GETLL(%rdi)

 462         SET_SIZE(ddi_get64)
 463         SET_SIZE(ddi_getll)
 464         SET_SIZE(ddi_mem_getll)
 465         SET_SIZE(ddi_mem_get64)
 466 
 467 #elif defined(__i386)
 468 
 469         ENTRY(ddi_get64)
 470         ALTENTRY(ddi_getll)
 471         ALTENTRY(ddi_mem_getll)
 472         ALTENTRY(ddi_mem_get64)
 473         movl    4(%esp), %eax
 474         jmp     *ACC_GETLL(%eax)
 475         SET_SIZE(ddi_get64)
 476         SET_SIZE(ddi_getll)
 477         SET_SIZE(ddi_mem_getll)
 478         SET_SIZE(ddi_mem_get64)
 479 
 480 #endif  /* __i386 */
 481 


 483 
 484         ENTRY(ddi_put8)
 485         ALTENTRY(ddi_putb)
 486         ALTENTRY(ddi_mem_putb)
 487         ALTENTRY(ddi_mem_put8)
 488         ALTENTRY(ddi_io_putb)
 489         ALTENTRY(ddi_io_put8)
 490         movl    ACC_ATTR(%rdi), %ecx
 491         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 492         jne     7f
 493         movq    %rdx, %rax
 494         movq    %rsi, %rdx
 495         outb    (%dx)
 496         ret
 497 7:
 498         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx
 499         jne     8f
 500         movb    %dl, (%rsi)
 501         ret
 502 8:
 503         jmp     *ACC_PUTB(%rdi)

 504         SET_SIZE(ddi_put8)
 505         SET_SIZE(ddi_putb)
 506         SET_SIZE(ddi_mem_putb)
 507         SET_SIZE(ddi_mem_put8)
 508         SET_SIZE(ddi_io_putb)
 509         SET_SIZE(ddi_io_put8)
 510 
 511 #elif defined(__i386)
 512 
 513         ENTRY(ddi_put8)
 514         ALTENTRY(ddi_putb)
 515         ALTENTRY(ddi_mem_putb)
 516         ALTENTRY(ddi_mem_put8)
 517         ALTENTRY(ddi_io_putb)
 518         ALTENTRY(ddi_io_put8)
 519         movl    4(%esp), %eax
 520         movl    ACC_ATTR(%eax), %ecx
 521         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 522         jne     7f
 523         movl    12(%esp), %eax


 546 
 547         ENTRY(ddi_put16)
 548         ALTENTRY(ddi_putw)
 549         ALTENTRY(ddi_mem_putw)
 550         ALTENTRY(ddi_mem_put16)
 551         ALTENTRY(ddi_io_putw)
 552         ALTENTRY(ddi_io_put16)
 553         movl    ACC_ATTR(%rdi), %ecx
 554         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 555         jne     8f
 556         movq    %rdx, %rax
 557         movq    %rsi, %rdx
 558         outw    (%dx)
 559         ret
 560 8:
 561         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx
 562         jne     9f
 563         movw    %dx, (%rsi)
 564         ret
 565 9:
 566         jmp     *ACC_PUTW(%rdi)

 567         SET_SIZE(ddi_put16)
 568         SET_SIZE(ddi_putw)
 569         SET_SIZE(ddi_mem_putw)
 570         SET_SIZE(ddi_mem_put16)
 571         SET_SIZE(ddi_io_putw)
 572         SET_SIZE(ddi_io_put16)
 573 
 574 #elif defined(__i386)
 575 
 576         ENTRY(ddi_put16)
 577         ALTENTRY(ddi_putw)
 578         ALTENTRY(ddi_mem_putw)
 579         ALTENTRY(ddi_mem_put16)
 580         ALTENTRY(ddi_io_putw)
 581         ALTENTRY(ddi_io_put16)
 582         movl    4(%esp), %eax
 583         movl    ACC_ATTR(%eax), %ecx
 584         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 585         jne     8f
 586         movl    12(%esp), %eax


 609 
 610         ENTRY(ddi_put32)
 611         ALTENTRY(ddi_putl)
 612         ALTENTRY(ddi_mem_putl)
 613         ALTENTRY(ddi_mem_put32)
 614         ALTENTRY(ddi_io_putl)
 615         ALTENTRY(ddi_io_put32)
 616         movl    ACC_ATTR(%rdi), %ecx
 617         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 618         jne     8f
 619         movq    %rdx, %rax
 620         movq    %rsi, %rdx
 621         outl    (%dx)
 622         ret
 623 8:
 624         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx
 625         jne     9f
 626         movl    %edx, (%rsi)
 627         ret
 628 9:
 629         jmp     *ACC_PUTL(%rdi)

 630         SET_SIZE(ddi_put32)
 631         SET_SIZE(ddi_putl)
 632         SET_SIZE(ddi_mem_putl)
 633         SET_SIZE(ddi_mem_put32)
 634         SET_SIZE(ddi_io_putl)
 635         SET_SIZE(ddi_io_put32)
 636 
 637 #elif defined(__i386)
 638 
 639         ENTRY(ddi_put32)
 640         ALTENTRY(ddi_putl)
 641         ALTENTRY(ddi_mem_putl)
 642         ALTENTRY(ddi_mem_put32)
 643         ALTENTRY(ddi_io_putl)
 644         ALTENTRY(ddi_io_put32)
 645         movl    4(%esp), %eax
 646         movl    ACC_ATTR(%eax), %ecx
 647         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 648         jne     8f
 649         movl    12(%esp), %eax


 657         movl    12(%esp), %ecx
 658         movl    %ecx, (%eax)
 659         ret
 660 9:
 661         jmp     *ACC_PUTL(%eax)
 662         SET_SIZE(ddi_put32)
 663         SET_SIZE(ddi_putl)
 664         SET_SIZE(ddi_mem_putl)
 665         SET_SIZE(ddi_mem_put32)
 666         SET_SIZE(ddi_io_putl)
 667         SET_SIZE(ddi_io_put32)
 668 
 669 #endif  /* __i386 */
 670 
 671 #if defined(__amd64)
 672 
 673         ENTRY(ddi_put64)
 674         ALTENTRY(ddi_putll)
 675         ALTENTRY(ddi_mem_putll)
 676         ALTENTRY(ddi_mem_put64)
 677         jmp     *ACC_PUTLL(%rdi)

 678         SET_SIZE(ddi_put64)
 679         SET_SIZE(ddi_putll)
 680         SET_SIZE(ddi_mem_putll)
 681         SET_SIZE(ddi_mem_put64)
 682 
 683 #elif defined(__i386)
 684 
 685         ENTRY(ddi_put64)
 686         ALTENTRY(ddi_putll)
 687         ALTENTRY(ddi_mem_putll)
 688         ALTENTRY(ddi_mem_put64)
 689         movl    4(%esp), %eax
 690         jmp     *ACC_PUTLL(%eax)
 691         SET_SIZE(ddi_put64)
 692         SET_SIZE(ddi_putll)
 693         SET_SIZE(ddi_mem_putll)
 694         SET_SIZE(ddi_mem_put64)
 695 
 696 #endif  /* __i386 */
 697 
 698 #if defined(__amd64)
 699 
 700         ENTRY(ddi_rep_get8)
 701         ALTENTRY(ddi_rep_getb)
 702         ALTENTRY(ddi_mem_rep_getb)
 703         ALTENTRY(ddi_mem_rep_get8)
 704         jmp     *ACC_REP_GETB(%rdi)

 705         SET_SIZE(ddi_rep_get8)
 706         SET_SIZE(ddi_rep_getb)
 707         SET_SIZE(ddi_mem_rep_getb)
 708         SET_SIZE(ddi_mem_rep_get8)
 709 
 710 #elif defined(__i386)
 711 
 712         ENTRY(ddi_rep_get8)
 713         ALTENTRY(ddi_rep_getb)
 714         ALTENTRY(ddi_mem_rep_getb)
 715         ALTENTRY(ddi_mem_rep_get8)
 716         movl    4(%esp), %eax
 717         jmp     *ACC_REP_GETB(%eax)
 718         SET_SIZE(ddi_rep_get8)
 719         SET_SIZE(ddi_rep_getb)
 720         SET_SIZE(ddi_mem_rep_getb)
 721         SET_SIZE(ddi_mem_rep_get8)
 722 
 723 #endif  /* __i386 */
 724 
 725 #if defined(__amd64)
 726 
 727         ENTRY(ddi_rep_get16)
 728         ALTENTRY(ddi_rep_getw)
 729         ALTENTRY(ddi_mem_rep_getw)
 730         ALTENTRY(ddi_mem_rep_get16)
 731         jmp     *ACC_REP_GETW(%rdi)

 732         SET_SIZE(ddi_rep_get16)
 733         SET_SIZE(ddi_rep_getw)
 734         SET_SIZE(ddi_mem_rep_getw)
 735         SET_SIZE(ddi_mem_rep_get16)
 736 
 737 #elif defined(__i386)
 738 
 739         ENTRY(ddi_rep_get16)
 740         ALTENTRY(ddi_rep_getw)
 741         ALTENTRY(ddi_mem_rep_getw)
 742         ALTENTRY(ddi_mem_rep_get16)
 743         movl    4(%esp), %eax
 744         jmp     *ACC_REP_GETW(%eax)
 745         SET_SIZE(ddi_rep_get16)
 746         SET_SIZE(ddi_rep_getw)
 747         SET_SIZE(ddi_mem_rep_getw)
 748         SET_SIZE(ddi_mem_rep_get16)
 749 
 750 #endif  /* __i386 */
 751 
 752 #if defined(__amd64)
 753 
 754         ENTRY(ddi_rep_get32)
 755         ALTENTRY(ddi_rep_getl)
 756         ALTENTRY(ddi_mem_rep_getl)
 757         ALTENTRY(ddi_mem_rep_get32)
 758         jmp     *ACC_REP_GETL(%rdi)

 759         SET_SIZE(ddi_rep_get32)
 760         SET_SIZE(ddi_rep_getl)
 761         SET_SIZE(ddi_mem_rep_getl)
 762         SET_SIZE(ddi_mem_rep_get32)
 763 
 764 #elif defined(__i386)
 765 
 766         ENTRY(ddi_rep_get32)
 767         ALTENTRY(ddi_rep_getl)
 768         ALTENTRY(ddi_mem_rep_getl)
 769         ALTENTRY(ddi_mem_rep_get32)
 770         movl    4(%esp), %eax
 771         jmp     *ACC_REP_GETL(%eax)
 772         SET_SIZE(ddi_rep_get32)
 773         SET_SIZE(ddi_rep_getl)
 774         SET_SIZE(ddi_mem_rep_getl)
 775         SET_SIZE(ddi_mem_rep_get32)
 776 
 777 #endif  /* __i386 */
 778 
 779 #if defined(__amd64)
 780 
 781         ENTRY(ddi_rep_get64)
 782         ALTENTRY(ddi_rep_getll)
 783         ALTENTRY(ddi_mem_rep_getll)
 784         ALTENTRY(ddi_mem_rep_get64)
 785         jmp     *ACC_REP_GETLL(%rdi)

 786         SET_SIZE(ddi_rep_get64)
 787         SET_SIZE(ddi_rep_getll)
 788         SET_SIZE(ddi_mem_rep_getll)
 789         SET_SIZE(ddi_mem_rep_get64)
 790 
 791 #elif defined(__i386)
 792 
 793         ENTRY(ddi_rep_get64)
 794         ALTENTRY(ddi_rep_getll)
 795         ALTENTRY(ddi_mem_rep_getll)
 796         ALTENTRY(ddi_mem_rep_get64)
 797         movl    4(%esp), %eax
 798         jmp     *ACC_REP_GETLL(%eax)
 799         SET_SIZE(ddi_rep_get64)
 800         SET_SIZE(ddi_rep_getll)
 801         SET_SIZE(ddi_mem_rep_getll)
 802         SET_SIZE(ddi_mem_rep_get64)
 803 
 804 #endif  /* __i386 */
 805 
 806 #if defined(__amd64)
 807 
 808         ENTRY(ddi_rep_put8)
 809         ALTENTRY(ddi_rep_putb)
 810         ALTENTRY(ddi_mem_rep_putb)
 811         ALTENTRY(ddi_mem_rep_put8)
 812         jmp     *ACC_REP_PUTB(%rdi)

 813         SET_SIZE(ddi_rep_put8)
 814         SET_SIZE(ddi_rep_putb)
 815         SET_SIZE(ddi_mem_rep_putb)
 816         SET_SIZE(ddi_mem_rep_put8)
 817 
 818 #elif defined(__i386)
 819 
 820         ENTRY(ddi_rep_put8)
 821         ALTENTRY(ddi_rep_putb)
 822         ALTENTRY(ddi_mem_rep_putb)
 823         ALTENTRY(ddi_mem_rep_put8)
 824         movl    4(%esp), %eax
 825         jmp     *ACC_REP_PUTB(%eax)
 826         SET_SIZE(ddi_rep_put8)
 827         SET_SIZE(ddi_rep_putb)
 828         SET_SIZE(ddi_mem_rep_putb)
 829         SET_SIZE(ddi_mem_rep_put8)
 830 
 831 #endif  /* __i386 */
 832 
 833 #if defined(__amd64)
 834 
 835         ENTRY(ddi_rep_put16)
 836         ALTENTRY(ddi_rep_putw)
 837         ALTENTRY(ddi_mem_rep_putw)
 838         ALTENTRY(ddi_mem_rep_put16)
 839         jmp     *ACC_REP_PUTW(%rdi)

 840         SET_SIZE(ddi_rep_put16)
 841         SET_SIZE(ddi_rep_putw)
 842         SET_SIZE(ddi_mem_rep_putw)
 843         SET_SIZE(ddi_mem_rep_put16)
 844 
 845 #elif defined(__i386)
 846 
 847         ENTRY(ddi_rep_put16)
 848         ALTENTRY(ddi_rep_putw)
 849         ALTENTRY(ddi_mem_rep_putw)
 850         ALTENTRY(ddi_mem_rep_put16)
 851         movl    4(%esp), %eax
 852         jmp     *ACC_REP_PUTW(%eax)
 853         SET_SIZE(ddi_rep_put16)
 854         SET_SIZE(ddi_rep_putw)
 855         SET_SIZE(ddi_mem_rep_putw)
 856         SET_SIZE(ddi_mem_rep_put16)
 857 
 858 #endif  /* __i386 */
 859 
 860 #if defined(__amd64)
 861 
 862         ENTRY(ddi_rep_put32)
 863         ALTENTRY(ddi_rep_putl)
 864         ALTENTRY(ddi_mem_rep_putl)
 865         ALTENTRY(ddi_mem_rep_put32)
 866         jmp     *ACC_REP_PUTL(%rdi)

 867         SET_SIZE(ddi_rep_put32)
 868         SET_SIZE(ddi_rep_putl)
 869         SET_SIZE(ddi_mem_rep_putl)
 870         SET_SIZE(ddi_mem_rep_put32)
 871 
 872 #elif defined(__i386)
 873 
 874         ENTRY(ddi_rep_put32)
 875         ALTENTRY(ddi_rep_putl)
 876         ALTENTRY(ddi_mem_rep_putl)
 877         ALTENTRY(ddi_mem_rep_put32)
 878         movl    4(%esp), %eax
 879         jmp     *ACC_REP_PUTL(%eax)
 880         SET_SIZE(ddi_rep_put32)
 881         SET_SIZE(ddi_rep_putl)
 882         SET_SIZE(ddi_mem_rep_putl)
 883         SET_SIZE(ddi_mem_rep_put32)
 884 
 885 #endif  /* __i386 */
 886 
 887 #if defined(__amd64)
 888 
 889         ENTRY(ddi_rep_put64)
 890         ALTENTRY(ddi_rep_putll)
 891         ALTENTRY(ddi_mem_rep_putll)
 892         ALTENTRY(ddi_mem_rep_put64)
 893         jmp     *ACC_REP_PUTLL(%rdi)

 894         SET_SIZE(ddi_rep_put64)
 895         SET_SIZE(ddi_rep_putll)
 896         SET_SIZE(ddi_mem_rep_putll)
 897         SET_SIZE(ddi_mem_rep_put64)
 898 
 899 #elif defined(__i386)
 900 
 901         ENTRY(ddi_rep_put64)
 902         ALTENTRY(ddi_rep_putll)
 903         ALTENTRY(ddi_mem_rep_putll)
 904         ALTENTRY(ddi_mem_rep_put64)
 905         movl    4(%esp), %eax
 906         jmp     *ACC_REP_PUTLL(%eax)
 907         SET_SIZE(ddi_rep_put64)
 908         SET_SIZE(ddi_rep_putll)
 909         SET_SIZE(ddi_mem_rep_putll)
 910         SET_SIZE(ddi_mem_rep_put64)
 911 
 912 #endif  /* __i386 */
 913 




   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
  24  * Use is subject to license terms.
  25  */
  26 
  27 /*
  28  * Copyright 2019 Joyent, Inc.
  29  */
  30 
  31 #if defined(lint) || defined(__lint)
  32 #include <sys/types.h>
  33 #include <sys/sunddi.h>
  34 #else
  35 #include <sys/asm_linkage.h>
  36 #include <sys/asm_misc.h>
  37 #include "assym.h"
  38 #endif
  39 
  40 #if defined(lint) || defined(__lint)
  41 
  42 /*ARGSUSED*/
  43 uint8_t
  44 ddi_get8(ddi_acc_handle_t handle, uint8_t *addr)
  45 {
  46         return (0);
  47 }
  48 
  49 /*ARGSUSED*/


 274 
 275         ENTRY(ddi_get8)
 276         ALTENTRY(ddi_getb)
 277         ALTENTRY(ddi_mem_getb)
 278         ALTENTRY(ddi_mem_get8)
 279         ALTENTRY(ddi_io_getb)
 280         ALTENTRY(ddi_io_get8)
 281         movl    ACC_ATTR(%rdi), %edx
 282         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %edx
 283         jne     1f
 284         movq    %rsi, %rdx
 285         xorq    %rax, %rax
 286         inb     (%dx)
 287         ret
 288 1:
 289         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx
 290         jne     2f
 291         movzbq  (%rsi), %rax
 292         ret
 293 2:
 294         movq    ACC_GETB(%rdi), %rax
 295         INDIRECT_JMP_REG(rax)
 296         SET_SIZE(ddi_get8)
 297         SET_SIZE(ddi_getb)
 298         SET_SIZE(ddi_mem_getb)
 299         SET_SIZE(ddi_mem_get8)
 300         SET_SIZE(ddi_io_getb)
 301         SET_SIZE(ddi_io_get8)
 302 
 303 #elif defined(__i386)
 304 
 305         ENTRY(ddi_get8)
 306         ALTENTRY(ddi_getb)
 307         ALTENTRY(ddi_mem_getb)
 308         ALTENTRY(ddi_mem_get8)
 309         ALTENTRY(ddi_io_getb)
 310         ALTENTRY(ddi_io_get8)
 311         movl    4(%esp), %eax
 312         movl    ACC_ATTR(%eax), %ecx
 313         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 314         jne     1f
 315         movl    8(%esp), %edx


 337 
 338         ENTRY(ddi_get16)
 339         ALTENTRY(ddi_getw)
 340         ALTENTRY(ddi_mem_getw)
 341         ALTENTRY(ddi_mem_get16)
 342         ALTENTRY(ddi_io_getw)
 343         ALTENTRY(ddi_io_get16)
 344         movl    ACC_ATTR(%rdi), %edx
 345         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %edx
 346         jne     3f
 347         movq    %rsi, %rdx
 348         xorq    %rax, %rax
 349         inw     (%dx)
 350         ret
 351 3:
 352         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx
 353         jne     4f
 354         movzwq  (%rsi), %rax
 355         ret
 356 4:
 357         movq    ACC_GETW(%rdi), %rax
 358         INDIRECT_JMP_REG(rax)
 359         SET_SIZE(ddi_get16)
 360         SET_SIZE(ddi_getw)
 361         SET_SIZE(ddi_mem_getw)
 362         SET_SIZE(ddi_mem_get16)
 363         SET_SIZE(ddi_io_getw)
 364         SET_SIZE(ddi_io_get16)
 365 
 366 #elif defined(__i386)
 367 
 368         ENTRY(ddi_get16)
 369         ALTENTRY(ddi_getw)
 370         ALTENTRY(ddi_mem_getw)
 371         ALTENTRY(ddi_mem_get16)
 372         ALTENTRY(ddi_io_getw)
 373         ALTENTRY(ddi_io_get16)
 374         movl    4(%esp), %eax
 375         movl    ACC_ATTR(%eax), %ecx
 376         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 377         jne     3f
 378         movl    8(%esp), %edx


 399 #if defined(__amd64)
 400 
 401         ENTRY(ddi_get32)
 402         ALTENTRY(ddi_getl)
 403         ALTENTRY(ddi_mem_getl)
 404         ALTENTRY(ddi_mem_get32)
 405         ALTENTRY(ddi_io_getl)
 406         ALTENTRY(ddi_io_get32)
 407         movl    ACC_ATTR(%rdi), %edx
 408         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %edx
 409         jne     5f
 410         movq    %rsi, %rdx
 411         inl     (%dx)
 412         ret
 413 5:
 414         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx
 415         jne     6f
 416         movl    (%rsi), %eax
 417         ret
 418 6:
 419         movq    ACC_GETL(%rdi), %rax
 420         INDIRECT_JMP_REG(rax)
 421         SET_SIZE(ddi_get32)
 422         SET_SIZE(ddi_getl)
 423         SET_SIZE(ddi_mem_getl)
 424         SET_SIZE(ddi_mem_get32)
 425         SET_SIZE(ddi_io_getl)
 426         SET_SIZE(ddi_io_get32)
 427 
 428 #elif defined(__i386)
 429 
 430         ENTRY(ddi_get32)
 431         ALTENTRY(ddi_getl)
 432         ALTENTRY(ddi_mem_getl)
 433         ALTENTRY(ddi_mem_get32)
 434         ALTENTRY(ddi_io_getl)
 435         ALTENTRY(ddi_io_get32)
 436         movl    4(%esp), %eax
 437         movl    ACC_ATTR(%eax), %ecx
 438         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 439         jne     5f
 440         movl    8(%esp), %edx


 446         movl    8(%esp), %eax
 447         movl    (%eax), %eax
 448         ret
 449 6:
 450         jmp     *ACC_GETL(%eax)
 451         SET_SIZE(ddi_get32)
 452         SET_SIZE(ddi_getl)
 453         SET_SIZE(ddi_mem_getl)
 454         SET_SIZE(ddi_mem_get32)
 455         SET_SIZE(ddi_io_getl)
 456         SET_SIZE(ddi_io_get32)
 457 
 458 #endif  /* __i386 */
 459 
 460 #if defined(__amd64)
 461 
 462         ENTRY(ddi_get64)
 463         ALTENTRY(ddi_getll)
 464         ALTENTRY(ddi_mem_getll)
 465         ALTENTRY(ddi_mem_get64)
 466         movq    ACC_GETLL(%rdi), %rax
 467         INDIRECT_JMP_REG(rax)
 468         SET_SIZE(ddi_get64)
 469         SET_SIZE(ddi_getll)
 470         SET_SIZE(ddi_mem_getll)
 471         SET_SIZE(ddi_mem_get64)
 472 
 473 #elif defined(__i386)
 474 
 475         ENTRY(ddi_get64)
 476         ALTENTRY(ddi_getll)
 477         ALTENTRY(ddi_mem_getll)
 478         ALTENTRY(ddi_mem_get64)
 479         movl    4(%esp), %eax
 480         jmp     *ACC_GETLL(%eax)
 481         SET_SIZE(ddi_get64)
 482         SET_SIZE(ddi_getll)
 483         SET_SIZE(ddi_mem_getll)
 484         SET_SIZE(ddi_mem_get64)
 485 
 486 #endif  /* __i386 */
 487 


 489 
 490         ENTRY(ddi_put8)
 491         ALTENTRY(ddi_putb)
 492         ALTENTRY(ddi_mem_putb)
 493         ALTENTRY(ddi_mem_put8)
 494         ALTENTRY(ddi_io_putb)
 495         ALTENTRY(ddi_io_put8)
 496         movl    ACC_ATTR(%rdi), %ecx
 497         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 498         jne     7f
 499         movq    %rdx, %rax
 500         movq    %rsi, %rdx
 501         outb    (%dx)
 502         ret
 503 7:
 504         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx
 505         jne     8f
 506         movb    %dl, (%rsi)
 507         ret
 508 8:
 509         movq    ACC_PUTB(%rdi), %rax
 510         INDIRECT_JMP_REG(rax)
 511         SET_SIZE(ddi_put8)
 512         SET_SIZE(ddi_putb)
 513         SET_SIZE(ddi_mem_putb)
 514         SET_SIZE(ddi_mem_put8)
 515         SET_SIZE(ddi_io_putb)
 516         SET_SIZE(ddi_io_put8)
 517 
 518 #elif defined(__i386)
 519 
 520         ENTRY(ddi_put8)
 521         ALTENTRY(ddi_putb)
 522         ALTENTRY(ddi_mem_putb)
 523         ALTENTRY(ddi_mem_put8)
 524         ALTENTRY(ddi_io_putb)
 525         ALTENTRY(ddi_io_put8)
 526         movl    4(%esp), %eax
 527         movl    ACC_ATTR(%eax), %ecx
 528         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 529         jne     7f
 530         movl    12(%esp), %eax


 553 
 554         ENTRY(ddi_put16)
 555         ALTENTRY(ddi_putw)
 556         ALTENTRY(ddi_mem_putw)
 557         ALTENTRY(ddi_mem_put16)
 558         ALTENTRY(ddi_io_putw)
 559         ALTENTRY(ddi_io_put16)
 560         movl    ACC_ATTR(%rdi), %ecx
 561         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 562         jne     8f
 563         movq    %rdx, %rax
 564         movq    %rsi, %rdx
 565         outw    (%dx)
 566         ret
 567 8:
 568         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx
 569         jne     9f
 570         movw    %dx, (%rsi)
 571         ret
 572 9:
 573         movq    ACC_PUTW(%rdi), %rax
 574         INDIRECT_JMP_REG(rax)
 575         SET_SIZE(ddi_put16)
 576         SET_SIZE(ddi_putw)
 577         SET_SIZE(ddi_mem_putw)
 578         SET_SIZE(ddi_mem_put16)
 579         SET_SIZE(ddi_io_putw)
 580         SET_SIZE(ddi_io_put16)
 581 
 582 #elif defined(__i386)
 583 
 584         ENTRY(ddi_put16)
 585         ALTENTRY(ddi_putw)
 586         ALTENTRY(ddi_mem_putw)
 587         ALTENTRY(ddi_mem_put16)
 588         ALTENTRY(ddi_io_putw)
 589         ALTENTRY(ddi_io_put16)
 590         movl    4(%esp), %eax
 591         movl    ACC_ATTR(%eax), %ecx
 592         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 593         jne     8f
 594         movl    12(%esp), %eax


 617 
 618         ENTRY(ddi_put32)
 619         ALTENTRY(ddi_putl)
 620         ALTENTRY(ddi_mem_putl)
 621         ALTENTRY(ddi_mem_put32)
 622         ALTENTRY(ddi_io_putl)
 623         ALTENTRY(ddi_io_put32)
 624         movl    ACC_ATTR(%rdi), %ecx
 625         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 626         jne     8f
 627         movq    %rdx, %rax
 628         movq    %rsi, %rdx
 629         outl    (%dx)
 630         ret
 631 8:
 632         cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx
 633         jne     9f
 634         movl    %edx, (%rsi)
 635         ret
 636 9:
 637         movq    ACC_PUTL(%rdi), %rax
 638         INDIRECT_JMP_REG(rax)
 639         SET_SIZE(ddi_put32)
 640         SET_SIZE(ddi_putl)
 641         SET_SIZE(ddi_mem_putl)
 642         SET_SIZE(ddi_mem_put32)
 643         SET_SIZE(ddi_io_putl)
 644         SET_SIZE(ddi_io_put32)
 645 
 646 #elif defined(__i386)
 647 
 648         ENTRY(ddi_put32)
 649         ALTENTRY(ddi_putl)
 650         ALTENTRY(ddi_mem_putl)
 651         ALTENTRY(ddi_mem_put32)
 652         ALTENTRY(ddi_io_putl)
 653         ALTENTRY(ddi_io_put32)
 654         movl    4(%esp), %eax
 655         movl    ACC_ATTR(%eax), %ecx
 656         cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %ecx
 657         jne     8f
 658         movl    12(%esp), %eax


 666         movl    12(%esp), %ecx
 667         movl    %ecx, (%eax)
 668         ret
 669 9:
 670         jmp     *ACC_PUTL(%eax)
 671         SET_SIZE(ddi_put32)
 672         SET_SIZE(ddi_putl)
 673         SET_SIZE(ddi_mem_putl)
 674         SET_SIZE(ddi_mem_put32)
 675         SET_SIZE(ddi_io_putl)
 676         SET_SIZE(ddi_io_put32)
 677 
 678 #endif  /* __i386 */
 679 
 680 #if defined(__amd64)
 681 
 682         ENTRY(ddi_put64)
 683         ALTENTRY(ddi_putll)
 684         ALTENTRY(ddi_mem_putll)
 685         ALTENTRY(ddi_mem_put64)
 686         movq    ACC_PUTLL(%rdi), %rax
 687         INDIRECT_JMP_REG(rax)
 688         SET_SIZE(ddi_put64)
 689         SET_SIZE(ddi_putll)
 690         SET_SIZE(ddi_mem_putll)
 691         SET_SIZE(ddi_mem_put64)
 692 
 693 #elif defined(__i386)
 694 
 695         ENTRY(ddi_put64)
 696         ALTENTRY(ddi_putll)
 697         ALTENTRY(ddi_mem_putll)
 698         ALTENTRY(ddi_mem_put64)
 699         movl    4(%esp), %eax
 700         jmp     *ACC_PUTLL(%eax)
 701         SET_SIZE(ddi_put64)
 702         SET_SIZE(ddi_putll)
 703         SET_SIZE(ddi_mem_putll)
 704         SET_SIZE(ddi_mem_put64)
 705 
 706 #endif  /* __i386 */
 707 
 708 #if defined(__amd64)
 709 
 710         ENTRY(ddi_rep_get8)
 711         ALTENTRY(ddi_rep_getb)
 712         ALTENTRY(ddi_mem_rep_getb)
 713         ALTENTRY(ddi_mem_rep_get8)
 714         movq    ACC_REP_GETB(%rdi), %rax
 715         INDIRECT_JMP_REG(rax)
 716         SET_SIZE(ddi_rep_get8)
 717         SET_SIZE(ddi_rep_getb)
 718         SET_SIZE(ddi_mem_rep_getb)
 719         SET_SIZE(ddi_mem_rep_get8)
 720 
 721 #elif defined(__i386)
 722 
 723         ENTRY(ddi_rep_get8)
 724         ALTENTRY(ddi_rep_getb)
 725         ALTENTRY(ddi_mem_rep_getb)
 726         ALTENTRY(ddi_mem_rep_get8)
 727         movl    4(%esp), %eax
 728         jmp     *ACC_REP_GETB(%eax)
 729         SET_SIZE(ddi_rep_get8)
 730         SET_SIZE(ddi_rep_getb)
 731         SET_SIZE(ddi_mem_rep_getb)
 732         SET_SIZE(ddi_mem_rep_get8)
 733 
 734 #endif  /* __i386 */
 735 
 736 #if defined(__amd64)
 737 
 738         ENTRY(ddi_rep_get16)
 739         ALTENTRY(ddi_rep_getw)
 740         ALTENTRY(ddi_mem_rep_getw)
 741         ALTENTRY(ddi_mem_rep_get16)
 742         movq    ACC_REP_GETW(%rdi), %rax
 743         INDIRECT_JMP_REG(rax)
 744         SET_SIZE(ddi_rep_get16)
 745         SET_SIZE(ddi_rep_getw)
 746         SET_SIZE(ddi_mem_rep_getw)
 747         SET_SIZE(ddi_mem_rep_get16)
 748 
 749 #elif defined(__i386)
 750 
 751         ENTRY(ddi_rep_get16)
 752         ALTENTRY(ddi_rep_getw)
 753         ALTENTRY(ddi_mem_rep_getw)
 754         ALTENTRY(ddi_mem_rep_get16)
 755         movl    4(%esp), %eax
 756         jmp     *ACC_REP_GETW(%eax)
 757         SET_SIZE(ddi_rep_get16)
 758         SET_SIZE(ddi_rep_getw)
 759         SET_SIZE(ddi_mem_rep_getw)
 760         SET_SIZE(ddi_mem_rep_get16)
 761 
 762 #endif  /* __i386 */
 763 
 764 #if defined(__amd64)
 765 
 766         ENTRY(ddi_rep_get32)
 767         ALTENTRY(ddi_rep_getl)
 768         ALTENTRY(ddi_mem_rep_getl)
 769         ALTENTRY(ddi_mem_rep_get32)
 770         movq    ACC_REP_GETL(%rdi), %rax
 771         INDIRECT_JMP_REG(rax)
 772         SET_SIZE(ddi_rep_get32)
 773         SET_SIZE(ddi_rep_getl)
 774         SET_SIZE(ddi_mem_rep_getl)
 775         SET_SIZE(ddi_mem_rep_get32)
 776 
 777 #elif defined(__i386)
 778 
 779         ENTRY(ddi_rep_get32)
 780         ALTENTRY(ddi_rep_getl)
 781         ALTENTRY(ddi_mem_rep_getl)
 782         ALTENTRY(ddi_mem_rep_get32)
 783         movl    4(%esp), %eax
 784         jmp     *ACC_REP_GETL(%eax)
 785         SET_SIZE(ddi_rep_get32)
 786         SET_SIZE(ddi_rep_getl)
 787         SET_SIZE(ddi_mem_rep_getl)
 788         SET_SIZE(ddi_mem_rep_get32)
 789 
 790 #endif  /* __i386 */
 791 
 792 #if defined(__amd64)
 793 
 794         ENTRY(ddi_rep_get64)
 795         ALTENTRY(ddi_rep_getll)
 796         ALTENTRY(ddi_mem_rep_getll)
 797         ALTENTRY(ddi_mem_rep_get64)
 798         movq    ACC_REP_GETLL(%rdi), %rax
 799         INDIRECT_JMP_REG(rax)
 800         SET_SIZE(ddi_rep_get64)
 801         SET_SIZE(ddi_rep_getll)
 802         SET_SIZE(ddi_mem_rep_getll)
 803         SET_SIZE(ddi_mem_rep_get64)
 804 
 805 #elif defined(__i386)
 806 
 807         ENTRY(ddi_rep_get64)
 808         ALTENTRY(ddi_rep_getll)
 809         ALTENTRY(ddi_mem_rep_getll)
 810         ALTENTRY(ddi_mem_rep_get64)
 811         movl    4(%esp), %eax
 812         jmp     *ACC_REP_GETLL(%eax)
 813         SET_SIZE(ddi_rep_get64)
 814         SET_SIZE(ddi_rep_getll)
 815         SET_SIZE(ddi_mem_rep_getll)
 816         SET_SIZE(ddi_mem_rep_get64)
 817 
 818 #endif  /* __i386 */
 819 
 820 #if defined(__amd64)
 821 
 822         ENTRY(ddi_rep_put8)
 823         ALTENTRY(ddi_rep_putb)
 824         ALTENTRY(ddi_mem_rep_putb)
 825         ALTENTRY(ddi_mem_rep_put8)
 826         movq    ACC_REP_PUTB(%rdi), %rax
 827         INDIRECT_JMP_REG(rax)
 828         SET_SIZE(ddi_rep_put8)
 829         SET_SIZE(ddi_rep_putb)
 830         SET_SIZE(ddi_mem_rep_putb)
 831         SET_SIZE(ddi_mem_rep_put8)
 832 
 833 #elif defined(__i386)
 834 
 835         ENTRY(ddi_rep_put8)
 836         ALTENTRY(ddi_rep_putb)
 837         ALTENTRY(ddi_mem_rep_putb)
 838         ALTENTRY(ddi_mem_rep_put8)
 839         movl    4(%esp), %eax
 840         jmp     *ACC_REP_PUTB(%eax)
 841         SET_SIZE(ddi_rep_put8)
 842         SET_SIZE(ddi_rep_putb)
 843         SET_SIZE(ddi_mem_rep_putb)
 844         SET_SIZE(ddi_mem_rep_put8)
 845 
 846 #endif  /* __i386 */
 847 
 848 #if defined(__amd64)
 849 
 850         ENTRY(ddi_rep_put16)
 851         ALTENTRY(ddi_rep_putw)
 852         ALTENTRY(ddi_mem_rep_putw)
 853         ALTENTRY(ddi_mem_rep_put16)
 854         movq    ACC_REP_PUTW(%rdi), %rax
 855         INDIRECT_JMP_REG(rax)
 856         SET_SIZE(ddi_rep_put16)
 857         SET_SIZE(ddi_rep_putw)
 858         SET_SIZE(ddi_mem_rep_putw)
 859         SET_SIZE(ddi_mem_rep_put16)
 860 
 861 #elif defined(__i386)
 862 
 863         ENTRY(ddi_rep_put16)
 864         ALTENTRY(ddi_rep_putw)
 865         ALTENTRY(ddi_mem_rep_putw)
 866         ALTENTRY(ddi_mem_rep_put16)
 867         movl    4(%esp), %eax
 868         jmp     *ACC_REP_PUTW(%eax)
 869         SET_SIZE(ddi_rep_put16)
 870         SET_SIZE(ddi_rep_putw)
 871         SET_SIZE(ddi_mem_rep_putw)
 872         SET_SIZE(ddi_mem_rep_put16)
 873 
 874 #endif  /* __i386 */
 875 
 876 #if defined(__amd64)
 877 
 878         ENTRY(ddi_rep_put32)
 879         ALTENTRY(ddi_rep_putl)
 880         ALTENTRY(ddi_mem_rep_putl)
 881         ALTENTRY(ddi_mem_rep_put32)
 882         movq    ACC_REP_PUTL(%rdi), %rax
 883         INDIRECT_JMP_REG(rax)
 884         SET_SIZE(ddi_rep_put32)
 885         SET_SIZE(ddi_rep_putl)
 886         SET_SIZE(ddi_mem_rep_putl)
 887         SET_SIZE(ddi_mem_rep_put32)
 888 
 889 #elif defined(__i386)
 890 
 891         ENTRY(ddi_rep_put32)
 892         ALTENTRY(ddi_rep_putl)
 893         ALTENTRY(ddi_mem_rep_putl)
 894         ALTENTRY(ddi_mem_rep_put32)
 895         movl    4(%esp), %eax
 896         jmp     *ACC_REP_PUTL(%eax)
 897         SET_SIZE(ddi_rep_put32)
 898         SET_SIZE(ddi_rep_putl)
 899         SET_SIZE(ddi_mem_rep_putl)
 900         SET_SIZE(ddi_mem_rep_put32)
 901 
 902 #endif  /* __i386 */
 903 
 904 #if defined(__amd64)
 905 
 906         ENTRY(ddi_rep_put64)
 907         ALTENTRY(ddi_rep_putll)
 908         ALTENTRY(ddi_mem_rep_putll)
 909         ALTENTRY(ddi_mem_rep_put64)
 910         movq    ACC_REP_PUTLL(%rdi), %rax
 911         INDIRECT_JMP_REG(rax)
 912         SET_SIZE(ddi_rep_put64)
 913         SET_SIZE(ddi_rep_putll)
 914         SET_SIZE(ddi_mem_rep_putll)
 915         SET_SIZE(ddi_mem_rep_put64)
 916 
 917 #elif defined(__i386)
 918 
 919         ENTRY(ddi_rep_put64)
 920         ALTENTRY(ddi_rep_putll)
 921         ALTENTRY(ddi_mem_rep_putll)
 922         ALTENTRY(ddi_mem_rep_put64)
 923         movl    4(%esp), %eax
 924         jmp     *ACC_REP_PUTLL(%eax)
 925         SET_SIZE(ddi_rep_put64)
 926         SET_SIZE(ddi_rep_putll)
 927         SET_SIZE(ddi_mem_rep_putll)
 928         SET_SIZE(ddi_mem_rep_put64)
 929 
 930 #endif  /* __i386 */
 931