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>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/intel/ia32/ml/ddi_i86_asm.s
          +++ new/usr/src/uts/intel/ia32/ml/ddi_i86_asm.s
↓ open down ↓ 16 lines elided ↑ open up ↑
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
  24   24   * Use is subject to license terms.
  25   25   */
  26   26  
  27      -#pragma ident   "%Z%%M% %I%     %E% SMI"
       27 +/*
       28 + * Copyright 2019 Joyent, Inc.
       29 + */
  28   30  
  29   31  #if defined(lint) || defined(__lint)
  30   32  #include <sys/types.h>
  31   33  #include <sys/sunddi.h>
  32   34  #else
  33   35  #include <sys/asm_linkage.h>
  34   36  #include <sys/asm_misc.h>
  35   37  #include "assym.h"
  36   38  #endif
  37   39  
↓ open down ↓ 222 lines elided ↑ open up ↑
 260  262  {}
 261  263  
 262  264  /*ARGSUSED*/
 263  265  void
 264  266  ddi_mem_rep_put64(ddi_acc_handle_t handle, uint64_t *host_addr,
 265  267      uint64_t *dev_addr, size_t repcount, uint_t flags)
 266  268  {}
 267  269  
 268  270  #else   /* lint */
 269  271  
 270      -        
      272 +
 271  273  #if defined(__amd64)
 272  274  
 273  275          ENTRY(ddi_get8)
 274  276          ALTENTRY(ddi_getb)
 275  277          ALTENTRY(ddi_mem_getb)
 276  278          ALTENTRY(ddi_mem_get8)
 277  279          ALTENTRY(ddi_io_getb)
 278  280          ALTENTRY(ddi_io_get8)
 279  281          movl    ACC_ATTR(%rdi), %edx
 280  282          cmpl    $_CONST(DDI_ACCATTR_IO_SPACE|DDI_ACCATTR_DIRECT), %edx
↓ open down ↓ 1 lines elided ↑ open up ↑
 282  284          movq    %rsi, %rdx
 283  285          xorq    %rax, %rax
 284  286          inb     (%dx)
 285  287          ret
 286  288  1:
 287  289          cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx
 288  290          jne     2f
 289  291          movzbq  (%rsi), %rax
 290  292          ret
 291  293  2:
 292      -        jmp     *ACC_GETB(%rdi)
      294 +        movq    ACC_GETB(%rdi), %rax
      295 +        INDIRECT_JMP_REG(rax)
 293  296          SET_SIZE(ddi_get8)
 294  297          SET_SIZE(ddi_getb)
 295  298          SET_SIZE(ddi_mem_getb)
 296  299          SET_SIZE(ddi_mem_get8)
 297  300          SET_SIZE(ddi_io_getb)
 298  301          SET_SIZE(ddi_io_get8)
 299  302  
 300  303  #elif defined(__i386)
 301  304  
 302  305          ENTRY(ddi_get8)
↓ open down ↓ 41 lines elided ↑ open up ↑
 344  347          movq    %rsi, %rdx
 345  348          xorq    %rax, %rax
 346  349          inw     (%dx)
 347  350          ret
 348  351  3:
 349  352          cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx
 350  353          jne     4f
 351  354          movzwq  (%rsi), %rax
 352  355          ret
 353  356  4:
 354      -        jmp     *ACC_GETW(%rdi)
      357 +        movq    ACC_GETW(%rdi), %rax
      358 +        INDIRECT_JMP_REG(rax)
 355  359          SET_SIZE(ddi_get16)
 356  360          SET_SIZE(ddi_getw)
 357  361          SET_SIZE(ddi_mem_getw)
 358  362          SET_SIZE(ddi_mem_get16)
 359  363          SET_SIZE(ddi_io_getw)
 360  364          SET_SIZE(ddi_io_get16)
 361  365  
 362  366  #elif defined(__i386)
 363  367  
 364  368          ENTRY(ddi_get16)
↓ open down ↓ 40 lines elided ↑ open up ↑
 405  409          jne     5f
 406  410          movq    %rsi, %rdx
 407  411          inl     (%dx)
 408  412          ret
 409  413  5:
 410  414          cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %edx
 411  415          jne     6f
 412  416          movl    (%rsi), %eax
 413  417          ret
 414  418  6:
 415      -        jmp     *ACC_GETL(%rdi)
      419 +        movq    ACC_GETL(%rdi), %rax
      420 +        INDIRECT_JMP_REG(rax)
 416  421          SET_SIZE(ddi_get32)
 417  422          SET_SIZE(ddi_getl)
 418  423          SET_SIZE(ddi_mem_getl)
 419  424          SET_SIZE(ddi_mem_get32)
 420  425          SET_SIZE(ddi_io_getl)
 421  426          SET_SIZE(ddi_io_get32)
 422  427  
 423  428  #elif defined(__i386)
 424  429  
 425  430          ENTRY(ddi_get32)
↓ open down ↓ 25 lines elided ↑ open up ↑
 451  456          SET_SIZE(ddi_io_get32)
 452  457  
 453  458  #endif  /* __i386 */
 454  459  
 455  460  #if defined(__amd64)
 456  461  
 457  462          ENTRY(ddi_get64)
 458  463          ALTENTRY(ddi_getll)
 459  464          ALTENTRY(ddi_mem_getll)
 460  465          ALTENTRY(ddi_mem_get64)
 461      -        jmp     *ACC_GETLL(%rdi)
      466 +        movq    ACC_GETLL(%rdi), %rax
      467 +        INDIRECT_JMP_REG(rax)
 462  468          SET_SIZE(ddi_get64)
 463  469          SET_SIZE(ddi_getll)
 464  470          SET_SIZE(ddi_mem_getll)
 465  471          SET_SIZE(ddi_mem_get64)
 466  472  
 467  473  #elif defined(__i386)
 468  474  
 469  475          ENTRY(ddi_get64)
 470  476          ALTENTRY(ddi_getll)
 471  477          ALTENTRY(ddi_mem_getll)
↓ open down ↓ 21 lines elided ↑ open up ↑
 493  499          movq    %rdx, %rax
 494  500          movq    %rsi, %rdx
 495  501          outb    (%dx)
 496  502          ret
 497  503  7:
 498  504          cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx
 499  505          jne     8f
 500  506          movb    %dl, (%rsi)
 501  507          ret
 502  508  8:
 503      -        jmp     *ACC_PUTB(%rdi)
      509 +        movq    ACC_PUTB(%rdi), %rax
      510 +        INDIRECT_JMP_REG(rax)
 504  511          SET_SIZE(ddi_put8)
 505  512          SET_SIZE(ddi_putb)
 506  513          SET_SIZE(ddi_mem_putb)
 507  514          SET_SIZE(ddi_mem_put8)
 508  515          SET_SIZE(ddi_io_putb)
 509  516          SET_SIZE(ddi_io_put8)
 510  517  
 511  518  #elif defined(__i386)
 512  519  
 513  520          ENTRY(ddi_put8)
↓ open down ↓ 42 lines elided ↑ open up ↑
 556  563          movq    %rdx, %rax
 557  564          movq    %rsi, %rdx
 558  565          outw    (%dx)
 559  566          ret
 560  567  8:
 561  568          cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx
 562  569          jne     9f
 563  570          movw    %dx, (%rsi)
 564  571          ret
 565  572  9:
 566      -        jmp     *ACC_PUTW(%rdi)
      573 +        movq    ACC_PUTW(%rdi), %rax
      574 +        INDIRECT_JMP_REG(rax)
 567  575          SET_SIZE(ddi_put16)
 568  576          SET_SIZE(ddi_putw)
 569  577          SET_SIZE(ddi_mem_putw)
 570  578          SET_SIZE(ddi_mem_put16)
 571  579          SET_SIZE(ddi_io_putw)
 572  580          SET_SIZE(ddi_io_put16)
 573  581  
 574  582  #elif defined(__i386)
 575  583  
 576  584          ENTRY(ddi_put16)
↓ open down ↓ 42 lines elided ↑ open up ↑
 619  627          movq    %rdx, %rax
 620  628          movq    %rsi, %rdx
 621  629          outl    (%dx)
 622  630          ret
 623  631  8:
 624  632          cmpl    $_CONST(DDI_ACCATTR_CPU_VADDR|DDI_ACCATTR_DIRECT), %ecx
 625  633          jne     9f
 626  634          movl    %edx, (%rsi)
 627  635          ret
 628  636  9:
 629      -        jmp     *ACC_PUTL(%rdi)
      637 +        movq    ACC_PUTL(%rdi), %rax
      638 +        INDIRECT_JMP_REG(rax)
 630  639          SET_SIZE(ddi_put32)
 631  640          SET_SIZE(ddi_putl)
 632  641          SET_SIZE(ddi_mem_putl)
 633  642          SET_SIZE(ddi_mem_put32)
 634  643          SET_SIZE(ddi_io_putl)
 635  644          SET_SIZE(ddi_io_put32)
 636  645  
 637  646  #elif defined(__i386)
 638  647  
 639  648          ENTRY(ddi_put32)
↓ open down ↓ 27 lines elided ↑ open up ↑
 667  676          SET_SIZE(ddi_io_put32)
 668  677  
 669  678  #endif  /* __i386 */
 670  679  
 671  680  #if defined(__amd64)
 672  681  
 673  682          ENTRY(ddi_put64)
 674  683          ALTENTRY(ddi_putll)
 675  684          ALTENTRY(ddi_mem_putll)
 676  685          ALTENTRY(ddi_mem_put64)
 677      -        jmp     *ACC_PUTLL(%rdi)
      686 +        movq    ACC_PUTLL(%rdi), %rax
      687 +        INDIRECT_JMP_REG(rax)
 678  688          SET_SIZE(ddi_put64)
 679  689          SET_SIZE(ddi_putll)
 680  690          SET_SIZE(ddi_mem_putll)
 681  691          SET_SIZE(ddi_mem_put64)
 682  692  
 683  693  #elif defined(__i386)
 684  694  
 685  695          ENTRY(ddi_put64)
 686  696          ALTENTRY(ddi_putll)
 687  697          ALTENTRY(ddi_mem_putll)
↓ open down ↓ 6 lines elided ↑ open up ↑
 694  704          SET_SIZE(ddi_mem_put64)
 695  705  
 696  706  #endif  /* __i386 */
 697  707  
 698  708  #if defined(__amd64)
 699  709  
 700  710          ENTRY(ddi_rep_get8)
 701  711          ALTENTRY(ddi_rep_getb)
 702  712          ALTENTRY(ddi_mem_rep_getb)
 703  713          ALTENTRY(ddi_mem_rep_get8)
 704      -        jmp     *ACC_REP_GETB(%rdi)
      714 +        movq    ACC_REP_GETB(%rdi), %rax
      715 +        INDIRECT_JMP_REG(rax)
 705  716          SET_SIZE(ddi_rep_get8)
 706  717          SET_SIZE(ddi_rep_getb)
 707  718          SET_SIZE(ddi_mem_rep_getb)
 708  719          SET_SIZE(ddi_mem_rep_get8)
 709  720  
 710  721  #elif defined(__i386)
 711  722  
 712  723          ENTRY(ddi_rep_get8)
 713  724          ALTENTRY(ddi_rep_getb)
 714  725          ALTENTRY(ddi_mem_rep_getb)
↓ open down ↓ 6 lines elided ↑ open up ↑
 721  732          SET_SIZE(ddi_mem_rep_get8)
 722  733  
 723  734  #endif  /* __i386 */
 724  735  
 725  736  #if defined(__amd64)
 726  737  
 727  738          ENTRY(ddi_rep_get16)
 728  739          ALTENTRY(ddi_rep_getw)
 729  740          ALTENTRY(ddi_mem_rep_getw)
 730  741          ALTENTRY(ddi_mem_rep_get16)
 731      -        jmp     *ACC_REP_GETW(%rdi)
      742 +        movq    ACC_REP_GETW(%rdi), %rax
      743 +        INDIRECT_JMP_REG(rax)
 732  744          SET_SIZE(ddi_rep_get16)
 733  745          SET_SIZE(ddi_rep_getw)
 734  746          SET_SIZE(ddi_mem_rep_getw)
 735  747          SET_SIZE(ddi_mem_rep_get16)
 736  748  
 737  749  #elif defined(__i386)
 738  750  
 739  751          ENTRY(ddi_rep_get16)
 740  752          ALTENTRY(ddi_rep_getw)
 741  753          ALTENTRY(ddi_mem_rep_getw)
↓ open down ↓ 6 lines elided ↑ open up ↑
 748  760          SET_SIZE(ddi_mem_rep_get16)
 749  761  
 750  762  #endif  /* __i386 */
 751  763  
 752  764  #if defined(__amd64)
 753  765  
 754  766          ENTRY(ddi_rep_get32)
 755  767          ALTENTRY(ddi_rep_getl)
 756  768          ALTENTRY(ddi_mem_rep_getl)
 757  769          ALTENTRY(ddi_mem_rep_get32)
 758      -        jmp     *ACC_REP_GETL(%rdi)
      770 +        movq    ACC_REP_GETL(%rdi), %rax
      771 +        INDIRECT_JMP_REG(rax)
 759  772          SET_SIZE(ddi_rep_get32)
 760  773          SET_SIZE(ddi_rep_getl)
 761  774          SET_SIZE(ddi_mem_rep_getl)
 762  775          SET_SIZE(ddi_mem_rep_get32)
 763  776  
 764  777  #elif defined(__i386)
 765  778  
 766  779          ENTRY(ddi_rep_get32)
 767  780          ALTENTRY(ddi_rep_getl)
 768  781          ALTENTRY(ddi_mem_rep_getl)
↓ open down ↓ 6 lines elided ↑ open up ↑
 775  788          SET_SIZE(ddi_mem_rep_get32)
 776  789  
 777  790  #endif  /* __i386 */
 778  791  
 779  792  #if defined(__amd64)
 780  793  
 781  794          ENTRY(ddi_rep_get64)
 782  795          ALTENTRY(ddi_rep_getll)
 783  796          ALTENTRY(ddi_mem_rep_getll)
 784  797          ALTENTRY(ddi_mem_rep_get64)
 785      -        jmp     *ACC_REP_GETLL(%rdi)
      798 +        movq    ACC_REP_GETLL(%rdi), %rax
      799 +        INDIRECT_JMP_REG(rax)
 786  800          SET_SIZE(ddi_rep_get64)
 787  801          SET_SIZE(ddi_rep_getll)
 788  802          SET_SIZE(ddi_mem_rep_getll)
 789  803          SET_SIZE(ddi_mem_rep_get64)
 790  804  
 791  805  #elif defined(__i386)
 792  806  
 793  807          ENTRY(ddi_rep_get64)
 794  808          ALTENTRY(ddi_rep_getll)
 795  809          ALTENTRY(ddi_mem_rep_getll)
↓ open down ↓ 6 lines elided ↑ open up ↑
 802  816          SET_SIZE(ddi_mem_rep_get64)
 803  817  
 804  818  #endif  /* __i386 */
 805  819  
 806  820  #if defined(__amd64)
 807  821  
 808  822          ENTRY(ddi_rep_put8)
 809  823          ALTENTRY(ddi_rep_putb)
 810  824          ALTENTRY(ddi_mem_rep_putb)
 811  825          ALTENTRY(ddi_mem_rep_put8)
 812      -        jmp     *ACC_REP_PUTB(%rdi)
      826 +        movq    ACC_REP_PUTB(%rdi), %rax
      827 +        INDIRECT_JMP_REG(rax)
 813  828          SET_SIZE(ddi_rep_put8)
 814  829          SET_SIZE(ddi_rep_putb)
 815  830          SET_SIZE(ddi_mem_rep_putb)
 816  831          SET_SIZE(ddi_mem_rep_put8)
 817  832  
 818  833  #elif defined(__i386)
 819  834  
 820  835          ENTRY(ddi_rep_put8)
 821  836          ALTENTRY(ddi_rep_putb)
 822  837          ALTENTRY(ddi_mem_rep_putb)
↓ open down ↓ 6 lines elided ↑ open up ↑
 829  844          SET_SIZE(ddi_mem_rep_put8)
 830  845  
 831  846  #endif  /* __i386 */
 832  847  
 833  848  #if defined(__amd64)
 834  849  
 835  850          ENTRY(ddi_rep_put16)
 836  851          ALTENTRY(ddi_rep_putw)
 837  852          ALTENTRY(ddi_mem_rep_putw)
 838  853          ALTENTRY(ddi_mem_rep_put16)
 839      -        jmp     *ACC_REP_PUTW(%rdi)
      854 +        movq    ACC_REP_PUTW(%rdi), %rax
      855 +        INDIRECT_JMP_REG(rax)
 840  856          SET_SIZE(ddi_rep_put16)
 841  857          SET_SIZE(ddi_rep_putw)
 842  858          SET_SIZE(ddi_mem_rep_putw)
 843  859          SET_SIZE(ddi_mem_rep_put16)
 844  860  
 845  861  #elif defined(__i386)
 846  862  
 847  863          ENTRY(ddi_rep_put16)
 848  864          ALTENTRY(ddi_rep_putw)
 849  865          ALTENTRY(ddi_mem_rep_putw)
↓ open down ↓ 6 lines elided ↑ open up ↑
 856  872          SET_SIZE(ddi_mem_rep_put16)
 857  873  
 858  874  #endif  /* __i386 */
 859  875  
 860  876  #if defined(__amd64)
 861  877  
 862  878          ENTRY(ddi_rep_put32)
 863  879          ALTENTRY(ddi_rep_putl)
 864  880          ALTENTRY(ddi_mem_rep_putl)
 865  881          ALTENTRY(ddi_mem_rep_put32)
 866      -        jmp     *ACC_REP_PUTL(%rdi)
      882 +        movq    ACC_REP_PUTL(%rdi), %rax
      883 +        INDIRECT_JMP_REG(rax)
 867  884          SET_SIZE(ddi_rep_put32)
 868  885          SET_SIZE(ddi_rep_putl)
 869  886          SET_SIZE(ddi_mem_rep_putl)
 870  887          SET_SIZE(ddi_mem_rep_put32)
 871  888  
 872  889  #elif defined(__i386)
 873  890  
 874  891          ENTRY(ddi_rep_put32)
 875  892          ALTENTRY(ddi_rep_putl)
 876  893          ALTENTRY(ddi_mem_rep_putl)
↓ open down ↓ 6 lines elided ↑ open up ↑
 883  900          SET_SIZE(ddi_mem_rep_put32)
 884  901  
 885  902  #endif  /* __i386 */
 886  903  
 887  904  #if defined(__amd64)
 888  905  
 889  906          ENTRY(ddi_rep_put64)
 890  907          ALTENTRY(ddi_rep_putll)
 891  908          ALTENTRY(ddi_mem_rep_putll)
 892  909          ALTENTRY(ddi_mem_rep_put64)
 893      -        jmp     *ACC_REP_PUTLL(%rdi)
      910 +        movq    ACC_REP_PUTLL(%rdi), %rax
      911 +        INDIRECT_JMP_REG(rax)
 894  912          SET_SIZE(ddi_rep_put64)
 895  913          SET_SIZE(ddi_rep_putll)
 896  914          SET_SIZE(ddi_mem_rep_putll)
 897  915          SET_SIZE(ddi_mem_rep_put64)
 898  916  
 899  917  #elif defined(__i386)
 900  918  
 901  919          ENTRY(ddi_rep_put64)
 902  920          ALTENTRY(ddi_rep_putll)
 903  921          ALTENTRY(ddi_mem_rep_putll)
↓ open down ↓ 425 lines elided ↑ open up ↑
1329 1347          ENTRY(i_ddi_io_rep_get8)
1330 1348  
1331 1349          cmpq    $DDI_DEV_AUTOINCR, %r8
1332 1350          je      gb_ioadv
1333 1351          movq    %rsi, %rdi
1334 1352          rep
1335 1353          insb
1336 1354          ret
1337 1355  
1338 1356  gb_ioadv:
1339      -        andq    %rcx, %rcx              
     1357 +        andq    %rcx, %rcx
1340 1358          jz      gb_ioadv_done
1341 1359  gb_ioadv2:
1342 1360          inb     (%dx)
1343 1361          movb    %al, (%rsi)
1344 1362          incq    %rdx
1345 1363          incq    %rsi
1346 1364          decq    %rcx
1347 1365          jg      gb_ioadv2
1348 1366  
1349 1367  gb_ioadv_done:
↓ open down ↓ 6 lines elided ↑ open up ↑
1356 1374  
1357 1375          ENTRY(i_ddi_io_rep_get8)
1358 1376          pushl   %edi
1359 1377  
1360 1378          movl    12(%esp),%edi                   / get host_addr
1361 1379          movl    16(%esp),%edx                   / get port
1362 1380          movl    20(%esp),%ecx                   / get repcount
1363 1381          cmpl    $DDI_DEV_AUTOINCR, 24(%esp)
1364 1382          je      gb_ioadv
1365 1383  
1366      -        rep     
     1384 +        rep
1367 1385          insb
1368 1386          popl    %edi
1369 1387          ret
1370 1388  
1371 1389  gb_ioadv:
1372 1390          andl    %ecx, %ecx
1373 1391          jz      gb_ioadv_done
1374 1392  gb_ioadv2:
1375 1393          inb     (%dx)
1376 1394          movb    %al,(%edi)
↓ open down ↓ 11 lines elided ↑ open up ↑
1388 1406  #endif  /* __i386 */
1389 1407  
1390 1408  #if defined(__amd64)
1391 1409  
1392 1410          ENTRY(i_ddi_io_rep_get16)
1393 1411  
1394 1412          cmpq    $DDI_DEV_AUTOINCR, %r8
1395 1413          je      gw_ioadv
1396 1414  
1397 1415          movq    %rsi, %rdi
1398      -        rep     
     1416 +        rep
1399 1417          insw
1400 1418          ret
1401 1419  
1402 1420  gw_ioadv:
1403 1421          andq    %rcx, %rcx
1404 1422          jz      gw_ioadv_done
1405 1423  gw_ioadv2:
1406 1424          inw     (%dx)
1407 1425          movw    %ax,(%rsi)
1408 1426          addq    $2, %rsi
↓ open down ↓ 10 lines elided ↑ open up ↑
1419 1437  
1420 1438          ENTRY(i_ddi_io_rep_get16)
1421 1439          pushl   %edi
1422 1440  
1423 1441          movl    12(%esp),%edi                   / get host_addr
1424 1442          movl    16(%esp),%edx                   / get port
1425 1443          movl    20(%esp),%ecx                   / get repcount
1426 1444          cmpl    $DDI_DEV_AUTOINCR, 24(%esp)
1427 1445          je      gw_ioadv
1428 1446  
1429      -        rep     
     1447 +        rep
1430 1448          insw
1431 1449          popl    %edi
1432 1450          ret
1433 1451  
1434 1452  gw_ioadv:
1435 1453          andl    %ecx, %ecx
1436 1454          jz      gw_ioadv_done
1437 1455  gw_ioadv2:
1438 1456          inw     (%dx)
1439 1457          movw    %ax,(%edi)
↓ open down ↓ 10 lines elided ↑ open up ↑
1450 1468  #endif  /* __i386 */
1451 1469  
1452 1470  #if defined(__amd64)
1453 1471  
1454 1472          ENTRY(i_ddi_io_rep_get32)
1455 1473  
1456 1474          cmpq    $DDI_DEV_AUTOINCR, %r8
1457 1475          je      gl_ioadv
1458 1476  
1459 1477          movq    %rsi, %rdi
1460      -        rep     
     1478 +        rep
1461 1479          insl
1462 1480          ret
1463 1481  
1464 1482  gl_ioadv:
1465 1483          andq    %rcx, %rcx
1466 1484          jz      gl_ioadv_done
1467 1485  gl_ioadv2:
1468 1486          inl     (%dx)
1469 1487          movl    %eax,(%rsi)
1470 1488          addq    $4, %rsi
↓ open down ↓ 12 lines elided ↑ open up ↑
1483 1501  
1484 1502          ENTRY(i_ddi_io_rep_get32)
1485 1503          pushl   %edi
1486 1504  
1487 1505          movl    12(%esp),%edi                   / get host_addr
1488 1506          movl    16(%esp),%edx                   / get port
1489 1507          movl    20(%esp),%ecx                   / get repcount
1490 1508          cmpl    $DDI_DEV_AUTOINCR, 24(%esp)
1491 1509          je      gl_ioadv
1492 1510  
1493      -        rep     
     1511 +        rep
1494 1512          insl
1495 1513          popl    %edi
1496 1514          ret
1497 1515  
1498 1516  gl_ioadv:
1499 1517          andl    %ecx, %ecx
1500 1518          jz      gl_ioadv_done
1501 1519  gl_ioadv2:
1502 1520          inl     (%dx)
1503 1521          movl    %eax,(%edi)
↓ open down ↓ 46 lines elided ↑ open up ↑
1550 1568           * %r8  : flags
1551 1569           *
1552 1570           * This routine will destroy values in %rdx, %rsi, %rcx.
1553 1571           */
1554 1572          ENTRY(i_ddi_io_rep_put8)
1555 1573  
1556 1574          cmpq    $DDI_DEV_AUTOINCR, %r8
1557 1575          je      pb_ioadv
1558 1576  
1559 1577          movq    %rsi, %rdi
1560      -        rep     
     1578 +        rep
1561 1579          outsb
1562 1580          ret
1563 1581  
1564 1582  pb_ioadv:
1565 1583          andq    %rcx, %rcx
1566 1584          jz      pb_ioadv_done
1567 1585  pb_ioadv2:
1568 1586          movb    (%rsi), %al
1569 1587          outb    (%dx)
1570 1588          incq    %rsi
↓ open down ↓ 10 lines elided ↑ open up ↑
1581 1599  
1582 1600          ENTRY(i_ddi_io_rep_put8)
1583 1601          pushl   %esi
1584 1602  
1585 1603          movl    12(%esp),%esi                   / get host_addr
1586 1604          movl    16(%esp),%edx                   / get port
1587 1605          movl    20(%esp),%ecx                   / get repcount
1588 1606          cmpl    $DDI_DEV_AUTOINCR, 24(%esp)
1589 1607          je      pb_ioadv
1590 1608  
1591      -        rep     
     1609 +        rep
1592 1610          outsb
1593 1611          popl    %esi
1594 1612          ret
1595 1613  
1596 1614  pb_ioadv:
1597 1615          andl    %ecx, %ecx
1598 1616          jz      pb_ioadv_done
1599 1617  pb_ioadv2:
1600 1618          movb    (%esi), %al
1601 1619          outb    (%dx)
↓ open down ↓ 10 lines elided ↑ open up ↑
1612 1630  #endif  /* __i386 */
1613 1631  
1614 1632  #if defined(__amd64)
1615 1633  
1616 1634          ENTRY(i_ddi_io_rep_put16)
1617 1635  
1618 1636          cmpq    $DDI_DEV_AUTOINCR, %r8
1619 1637          je      pw_ioadv
1620 1638  
1621 1639          movq    %rsi, %rdi
1622      -        rep     
     1640 +        rep
1623 1641          outsw
1624 1642          ret
1625 1643  
1626 1644  pw_ioadv:
1627 1645          andq    %rcx, %rcx
1628 1646          jz      pw_ioadv_done
1629 1647  pw_ioadv2:
1630 1648          movw    (%rsi), %ax
1631 1649          outw    (%dx)
1632 1650          addq    $2, %rsi
↓ open down ↓ 10 lines elided ↑ open up ↑
1643 1661  
1644 1662          ENTRY(i_ddi_io_rep_put16)
1645 1663          pushl   %esi
1646 1664  
1647 1665          movl    12(%esp),%esi                   / get host_addr
1648 1666          movl    16(%esp),%edx                   / get port
1649 1667          movl    20(%esp),%ecx                   / get repcount
1650 1668          cmpl    $DDI_DEV_AUTOINCR, 24(%esp)
1651 1669          je      pw_ioadv
1652 1670  
1653      -        rep     
     1671 +        rep
1654 1672          outsw
1655 1673          popl    %esi
1656 1674          ret
1657 1675  
1658 1676  pw_ioadv:
1659 1677          andl    %ecx, %ecx
1660 1678          jz      pw_ioadv_done
1661 1679  pw_ioadv2:
1662 1680          movw    (%esi), %ax
1663 1681          outw    (%dx)
↓ open down ↓ 10 lines elided ↑ open up ↑
1674 1692  #endif  /* __i386 */
1675 1693  
1676 1694  #if defined(__amd64)
1677 1695  
1678 1696          ENTRY(i_ddi_io_rep_put32)
1679 1697  
1680 1698          cmpq    $DDI_DEV_AUTOINCR, %r8
1681 1699          je      pl_ioadv
1682 1700  
1683 1701          movq    %rsi, %rdi
1684      -        rep     
     1702 +        rep
1685 1703          outsl
1686 1704          ret
1687 1705  
1688 1706  pl_ioadv:
1689 1707          andq    %rcx, %rcx
1690 1708          jz      pl_ioadv_done
1691 1709  pl_ioadv2:
1692 1710          movl    (%rsi), %eax
1693 1711          outl    (%dx)
1694 1712          addq    $4, %rsi
↓ open down ↓ 10 lines elided ↑ open up ↑
1705 1723  
1706 1724          ENTRY(i_ddi_io_rep_put32)
1707 1725          pushl   %esi
1708 1726  
1709 1727          movl    12(%esp),%esi                   / get host_addr
1710 1728          movl    16(%esp),%edx                   / get port
1711 1729          movl    20(%esp),%ecx                   / get repcount
1712 1730          cmpl    $DDI_DEV_AUTOINCR, 24(%esp)
1713 1731          je      pl_ioadv
1714 1732  
1715      -        rep     
     1733 +        rep
1716 1734          outsl
1717 1735          popl    %esi
1718 1736          ret
1719 1737  
1720 1738  pl_ioadv:
1721 1739          andl    %ecx, %ecx
1722 1740          jz      pl_ioadv_done
1723 1741  pl_ioadv2:
1724 1742          movl    (%esi), %eax
1725 1743          outl    (%dx)
↓ open down ↓ 13 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX