Print this page
de-linting of .s files

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/sun4u/cpu/opl_olympus_copy.s
          +++ new/usr/src/uts/sun4u/cpu/opl_olympus_copy.s
↓ open down ↓ 25 lines elided ↑ open up ↑
  26   26  #include <sys/param.h>
  27   27  #include <sys/errno.h>
  28   28  #include <sys/asm_linkage.h>
  29   29  #include <sys/vtrace.h>
  30   30  #include <sys/machthread.h>
  31   31  #include <sys/clock.h>
  32   32  #include <sys/asi.h>
  33   33  #include <sys/fsr.h>
  34   34  #include <sys/privregs.h>
  35   35  
  36      -#if !defined(lint)
  37   36  #include "assym.h"
  38      -#endif  /* lint */
  39   37  
  40   38  /*
  41   39   * Pseudo-code to aid in understanding the control flow of the
  42   40   * bcopy/copyin/copyout routines.
  43   41   *
  44   42   * On entry:
  45   43   *
  46   44   *      ! Determine whether to use the FP register version
  47   45   *      ! or the leaf routine version depending on size
  48   46   *      ! of copy and flags.  Set up error handling accordingly.
↓ open down ↓ 530 lines elided ↑ open up ↑
 579  577   * first quadrant).
 580  578   *
 581  579   * Similarly: a membar #Sync before restore allows the block stores of
 582  580   * the copy operation to complete before we fill the quadrants with their
 583  581   * original data, and a membar #Sync after restore lets the block loads
 584  582   * of the restore complete before we return to whoever has the fp regs
 585  583   * in use.  To avoid repeated membar #Sync we make it the responsibility
 586  584   * of the copy code to membar #Sync immediately after copy is complete
 587  585   * and before using the BLD_*_FROMSTACK macro.
 588  586   */
 589      -#if !defined(lint)
 590  587  #define BST_FPQ1Q3_TOSTACK(tmp1)                                \
 591  588          /* membar #Sync */                                      ;\
 592  589          add     %fp, STACK_BIAS - SAVED_FPREGS_ADJUST, tmp1     ;\
 593  590          and     tmp1, -VIS_BLOCKSIZE, tmp1 /* block align */    ;\
 594  591          stda    %f0, [tmp1]ASI_BLK_P                            ;\
 595  592          add     tmp1, VIS_BLOCKSIZE, tmp1                       ;\
 596  593          stda    %f32, [tmp1]ASI_BLK_P                           ;\
 597  594          membar  #Sync
 598  595  
 599  596  #define BLD_FPQ1Q3_FROMSTACK(tmp1)                              \
↓ open down ↓ 15 lines elided ↑ open up ↑
 615  612          membar  #Sync
 616  613  
 617  614  #define BLD_FPQ2Q4_FROMSTACK(tmp1)                              \
 618  615          /* membar #Sync - provided at copy completion */        ;\
 619  616          add     %fp, STACK_BIAS - SAVED_FPREGS_ADJUST, tmp1     ;\
 620  617          and     tmp1, -VIS_BLOCKSIZE, tmp1 /* block align */    ;\
 621  618          ldda    [tmp1]ASI_BLK_P, %f16                           ;\
 622  619          add     tmp1, VIS_BLOCKSIZE, tmp1                       ;\
 623  620          ldda    [tmp1]ASI_BLK_P, %f48                           ;\
 624  621          membar  #Sync
 625      -#endif
 626  622  
 627  623  /*
 628  624   * FP_NOMIGRATE and FP_ALLOWMIGRATE.  Prevent migration (or, stronger,
 629  625   * prevent preemption if there is no t_lwp to save FP state to on context
 630  626   * switch) before commencing a FP copy, and reallow it on completion or
 631  627   * in error trampoline paths when we were using FP copy.
 632  628   *
 633  629   * Both macros may call other functions, so be aware that all outputs are
 634  630   * forfeit after using these macros.  For this reason we do not pass registers
 635  631   * to use - we just use any outputs we want.
↓ open down ↓ 49 lines elided ↑ open up ↑
 685  681          call    kpreempt                                        ;\
 686  682            rdpr  %pil, %o0                                       ;\
 687  683  label2:
 688  684  
 689  685  /*
 690  686   * Copy a block of storage, returning an error code if `from' or
 691  687   * `to' takes a kernel pagefault which cannot be resolved.
 692  688   * Returns errno value on pagefault error, 0 if all ok
 693  689   */
 694  690  
 695      -#if defined(lint)
 696      -
 697      -/* ARGSUSED */
 698      -int
 699      -kcopy(const void *from, void *to, size_t count)
 700      -{ return(0); }
 701      -
 702      -#else   /* lint */
 703      -
 704  691          .seg    ".text"
 705  692          .align  4
 706  693  
 707  694          ENTRY(kcopy)
 708  695  
 709  696          cmp     %o2, VIS_COPY_THRESHOLD         ! check for leaf rtn case
 710  697          bleu,pt %ncc, .kcopy_small              ! go to larger cases
 711  698            xor   %o0, %o1, %o3                   ! are src, dst alignable?
 712  699          btst    7, %o3                          !
 713  700          bz,pt   %ncc, .kcopy_8                  ! check for longword alignment
↓ open down ↓ 147 lines elided ↑ open up ↑
 861  848          andn    %o4, TRAMP_FLAG, %o4
 862  849          bnz,pn  %ncc, 3f
 863  850            stn   %o4, [THREAD_REG + T_LOFAULT]   ! restore old t_lofault
 864  851          retl
 865  852            mov   %g1, %o0
 866  853  3:
 867  854          jmp     %o4                             ! goto real handler
 868  855            mov   %g0, %o0                        !
 869  856  
 870  857          SET_SIZE(kcopy)
 871      -#endif  /* lint */
 872  858  
 873  859  
 874  860  /*
 875  861   * Copy a block of storage - must not overlap (from + len <= to).
 876  862   * Registers: l6 - saved t_lofault
 877  863   * (for short copies, o4 - saved t_lofault)
 878  864   *
 879  865   * Copy a page of memory.
 880  866   * Assumes double word alignment and a count >= 256.
 881  867   */
 882      -#if defined(lint)
 883  868  
 884      -/* ARGSUSED */
 885      -void
 886      -bcopy(const void *from, void *to, size_t count)
 887      -{}
 888      -
 889      -#else   /* lint */
 890      -
 891  869          ENTRY(bcopy)
 892  870  
 893  871          cmp     %o2, VIS_COPY_THRESHOLD         ! check for leaf rtn case
 894  872          bleu,pt %ncc, .bcopy_small              ! go to larger cases
 895  873            xor   %o0, %o1, %o3                   ! are src, dst alignable?
 896  874          btst    7, %o3                          !
 897  875          bz,pt   %ncc, .bcopy_8                  ! check for longword alignment
 898  876            nop
 899  877          btst    1, %o3                          !
 900  878          bz,pt   %ncc, .bcopy_2                  ! check for half-word
↓ open down ↓ 536 lines elided ↑ open up ↑
1437 1415  2:
1438 1416          membar  #Sync                           ! sync error barrier
1439 1417          andn    %l6, MASK_FLAGS, %l6
1440 1418          stn     %l6, [THREAD_REG + T_LOFAULT]   ! restore old t_lofault
1441 1419          FP_ALLOWMIGRATE(5, 6)
1442 1420          ret
1443 1421            restore       %g0, 0, %o0
1444 1422  
1445 1423          SET_SIZE(bcopy_more)
1446 1424  
1447      -#endif  /* lint */
1448      -
1449 1425  /*
1450 1426   * Block copy with possibly overlapped operands.
1451 1427   */
1452 1428  
1453      -#if defined(lint)
1454      -
1455      -/*ARGSUSED*/
1456      -void
1457      -ovbcopy(const void *from, void *to, size_t count)
1458      -{}
1459      -
1460      -#else   /* lint */
1461      -
1462 1429          ENTRY(ovbcopy)
1463 1430          tst     %o2                     ! check count
1464 1431          bgu,a   %ncc, 1f                ! nothing to do or bad arguments
1465 1432            subcc %o0, %o1, %o3           ! difference of from and to address
1466 1433  
1467 1434          retl                            ! return
1468 1435            nop
1469 1436  1:
1470 1437          bneg,a  %ncc, 2f
1471 1438            neg   %o3                     ! if < 0, make it positive
↓ open down ↓ 23 lines elided ↑ open up ↑
1495 1462          deccc   %o2                     ! dec count
1496 1463          ldub    [%o0 + %o2], %o3        ! get byte at end of src
1497 1464          bgu     %ncc, .ov_bkwd          ! loop till done
1498 1465            stb   %o3, [%o1 + %o2]        ! delay slot, store at end of dst
1499 1466  
1500 1467          retl                            ! return
1501 1468            nop
1502 1469  
1503 1470          SET_SIZE(ovbcopy)
1504 1471  
1505      -#endif  /* lint */
1506 1472  
1507      -
1508 1473  /*
1509 1474   * hwblkpagecopy()
1510 1475   *
1511 1476   * Copies exactly one page.  This routine assumes the caller (ppcopy)
1512 1477   * has already disabled kernel preemption and has checked
1513 1478   * use_hw_bcopy.  Preventing preemption also prevents cpu migration.
1514 1479   */
1515      -#ifdef lint
1516      -/*ARGSUSED*/
1517      -void
1518      -hwblkpagecopy(const void *src, void *dst)
1519      -{ }
1520      -#else /* lint */
1521 1480          ENTRY(hwblkpagecopy)
1522 1481          ! get another window w/space for three aligned blocks of saved fpregs
1523 1482          prefetch [%o0], #n_reads
1524 1483          save    %sp, -SA(MINFRAME + HWCOPYFRAMESIZE), %sp
1525 1484  
1526 1485          ! %i0 - source address (arg)
1527 1486          ! %i1 - destination address (arg)
1528 1487          ! %i2 - length of region (not arg)
1529 1488          ! %l0 - saved fprs
1530 1489          ! %l1 - pointer to saved fpregs
↓ open down ↓ 97 lines elided ↑ open up ↑
1628 1587          ba      3f
1629 1588            nop
1630 1589  
1631 1590  2:      FZEROQ1Q3
1632 1591  
1633 1592  3:      wr      %l0, 0, %fprs           ! restore fprs
1634 1593          ret
1635 1594            restore       %g0, 0, %o0
1636 1595  
1637 1596          SET_SIZE(hwblkpagecopy)
1638      -#endif  /* lint */
1639 1597  
1640 1598  
1641 1599  /*
1642 1600   * Transfer data to and from user space -
1643 1601   * Note that these routines can cause faults
1644 1602   * It is assumed that the kernel has nothing at
1645 1603   * less than KERNELBASE in the virtual address space.
1646 1604   *
1647 1605   * Note that copyin(9F) and copyout(9F) are part of the
1648 1606   * DDI/DKI which specifies that they return '-1' on "errors."
↓ open down ↓ 38 lines elided ↑ open up ↑
1687 1645   *
1688 1646   * See the description of bcopy above for more details of the
1689 1647   * data copying algorithm and the default limits.
1690 1648   *
1691 1649   */
1692 1650  
1693 1651  /*
1694 1652   * Copy kernel data to user space (copyout/xcopyout/xcopyout_little).
1695 1653   */
1696 1654  
1697      -#if defined(lint)
1698      -
1699      -
1700      -#else   /* lint */
1701 1655  /*
1702 1656   * We save the arguments in the following registers in case of a fault:
1703 1657   *      kaddr - %l1
1704 1658   *      uaddr - %l2
1705 1659   *      count - %l3
1706 1660   */
1707 1661  #define SAVE_SRC        %l1
1708 1662  #define SAVE_DST        %l2
1709 1663  #define SAVE_COUNT      %l3
1710 1664  
↓ open down ↓ 46 lines elided ↑ open up ↑
1757 1711          FP_ALLOWMIGRATE(5, 6)
1758 1712  
1759 1713          mov     SAVE_SRC, %i0
1760 1714          mov     SAVE_DST, %i1
1761 1715          jmp     REAL_LOFAULT
1762 1716            mov   SAVE_COUNT, %i2
1763 1717  
1764 1718          SET_SIZE(copyio_fault)
1765 1719  
1766 1720  
1767      -#endif
1768      -
1769      -#if defined(lint)
1770      -
1771      -/*ARGSUSED*/
1772      -int
1773      -copyout(const void *kaddr, void *uaddr, size_t count)
1774      -{ return (0); }
1775      -
1776      -#else   /* lint */
1777      -
1778 1721          ENTRY(copyout)
1779 1722  
1780 1723          cmp     %o2, VIS_COPY_THRESHOLD         ! check for leaf rtn case
1781 1724          bleu,pt %ncc, .copyout_small            ! go to larger cases
1782 1725            xor   %o0, %o1, %o3                   ! are src, dst alignable?
1783 1726          btst    7, %o3                          !
1784 1727          bz,pt   %ncc, .copyout_8                ! check for longword alignment
1785 1728            nop
1786 1729          btst    1, %o3                          !
1787 1730          bz,pt   %ncc, .copyout_2                ! check for half-word
↓ open down ↓ 595 lines elided ↑ open up ↑
2383 2326          ldn     [%o4 + CP_COPYOUT], %g2         ! if handler, invoke it with
2384 2327          jmp     %g2                             ! original arguments
2385 2328            restore %g0, 0, %g0                   ! dispose of copy window
2386 2329  2:
2387 2330          ret
2388 2331            restore %g0, -1, %o0                  ! return error value
2389 2332  
2390 2333  
2391 2334          SET_SIZE(copyout_more)
2392 2335  
2393      -#endif  /* lint */
2394 2336  
2395      -
2396      -#ifdef  lint
2397      -
2398      -/*ARGSUSED*/
2399      -int
2400      -xcopyout(const void *kaddr, void *uaddr, size_t count)
2401      -{ return (0); }
2402      -
2403      -#else   /* lint */
2404      -
2405 2337          ENTRY(xcopyout)
2406 2338          cmp     %o2, VIS_COPY_THRESHOLD         ! check for leaf rtn case
2407 2339          bleu,pt %ncc, .xcopyout_small           ! go to larger cases
2408 2340            xor   %o0, %o1, %o3                   ! are src, dst alignable?
2409 2341          btst    7, %o3                          !
2410 2342          bz,pt   %ncc, .xcopyout_8               !
2411 2343            nop
2412 2344          btst    1, %o3                          !
2413 2345          bz,pt   %ncc, .xcopyout_2               ! check for half-word
2414 2346            nop
↓ open down ↓ 84 lines elided ↑ open up ↑
2499 2431            nop
2500 2432          ldn     [%o3 + CP_XCOPYOUT], %o5        ! if handler, invoke it with
2501 2433          jmp     %o5                             ! original arguments
2502 2434            nop
2503 2435  3:
2504 2436          retl
2505 2437            or    %g1, 0, %o0             ! return errno value
2506 2438  
2507 2439          SET_SIZE(xcopyout)
2508 2440  
2509      -#endif  /* lint */
2510      -
2511      -#ifdef  lint
2512      -
2513      -/*ARGSUSED*/
2514      -int
2515      -xcopyout_little(const void *kaddr, void *uaddr, size_t count)
2516      -{ return (0); }
2517      -
2518      -#else   /* lint */
2519      -
2520 2441          ENTRY(xcopyout_little)
2521 2442          sethi   %hi(.xcopyio_err), %o5
2522 2443          or      %o5, %lo(.xcopyio_err), %o5
2523 2444          ldn     [THREAD_REG + T_LOFAULT], %o4
2524 2445          membar  #Sync                           ! sync error barrier
2525 2446          stn     %o5, [THREAD_REG + T_LOFAULT]
2526 2447          mov     %o4, %o5
2527 2448  
2528 2449          subcc   %g0, %o2, %o3
2529 2450          add     %o0, %o2, %o0
↓ open down ↓ 10 lines elided ↑ open up ↑
2540 2461            ldub  [%o0 + %o3], %o4
2541 2462  
2542 2463  2:
2543 2464          membar  #Sync                           ! sync error barrier
2544 2465          stn     %o5, [THREAD_REG + T_LOFAULT]   ! restore old t_lofault
2545 2466          retl
2546 2467            mov   %g0, %o0                ! return (0)
2547 2468  
2548 2469          SET_SIZE(xcopyout_little)
2549 2470  
2550      -#endif  /* lint */
2551      -
2552 2471  /*
2553 2472   * Copy user data to kernel space (copyin/xcopyin/xcopyin_little)
2554 2473   */
2555 2474  
2556      -#if defined(lint)
2557      -
2558      -/*ARGSUSED*/
2559      -int
2560      -copyin(const void *uaddr, void *kaddr, size_t count)
2561      -{ return (0); }
2562      -
2563      -#else   /* lint */
2564      -
2565 2475          ENTRY(copyin)
2566 2476          cmp     %o2, VIS_COPY_THRESHOLD         ! check for leaf rtn case
2567 2477          bleu,pt %ncc, .copyin_small             ! go to larger cases
2568 2478            xor   %o0, %o1, %o3                   ! are src, dst alignable?
2569 2479          btst    7, %o3                          !
2570 2480          bz,pt   %ncc, .copyin_8                 ! check for longword alignment
2571 2481            nop
2572 2482          btst    1, %o3                          !
2573 2483          bz,pt   %ncc, .copyin_2                 ! check for half-word
2574 2484            nop
↓ open down ↓ 586 lines elided ↑ open up ↑
3161 3071          ldn     [%o4 + CP_COPYIN], %g2          ! if handler, invoke it with
3162 3072          jmp     %g2                             ! original arguments
3163 3073          restore %g0, 0, %g0                     ! dispose of copy window
3164 3074  2:
3165 3075          ret
3166 3076          restore %g0, -1, %o0                    ! return error value
3167 3077  
3168 3078  
3169 3079          SET_SIZE(copyin_more)
3170 3080  
3171      -#endif  /* lint */
3172      -
3173      -#ifdef  lint
3174      -
3175      -/*ARGSUSED*/
3176      -int
3177      -xcopyin(const void *uaddr, void *kaddr, size_t count)
3178      -{ return (0); }
3179      -
3180      -#else   /* lint */
3181      -
3182 3081          ENTRY(xcopyin)
3183 3082  
3184 3083          cmp     %o2, VIS_COPY_THRESHOLD         ! check for leaf rtn case
3185 3084          bleu,pt %ncc, .xcopyin_small            ! go to larger cases
3186 3085            xor   %o0, %o1, %o3                   ! are src, dst alignable?
3187 3086          btst    7, %o3                          !
3188 3087          bz,pt   %ncc, .xcopyin_8                ! check for longword alignment
3189 3088            nop
3190 3089          btst    1, %o3                          !
3191 3090          bz,pt   %ncc, .xcopyin_2                ! check for half-word
↓ open down ↓ 85 lines elided ↑ open up ↑
3277 3176            nop
3278 3177          ldn     [%o3 + CP_XCOPYIN], %o5         ! if handler, invoke it with
3279 3178          jmp     %o5                             ! original arguments
3280 3179            nop
3281 3180  3:
3282 3181          retl
3283 3182            or    %g1, 0, %o0             ! return errno value
3284 3183  
3285 3184          SET_SIZE(xcopyin)
3286 3185  
3287      -#endif  /* lint */
3288      -
3289      -#ifdef  lint
3290      -
3291      -/*ARGSUSED*/
3292      -int
3293      -xcopyin_little(const void *uaddr, void *kaddr, size_t count)
3294      -{ return (0); }
3295      -
3296      -#else   /* lint */
3297      -
3298 3186          ENTRY(xcopyin_little)
3299 3187          sethi   %hi(.xcopyio_err), %o5
3300 3188          or      %o5, %lo(.xcopyio_err), %o5
3301 3189          ldn     [THREAD_REG + T_LOFAULT], %o4
3302 3190          membar  #Sync                           ! sync error barrier
3303 3191          stn     %o5, [THREAD_REG + T_LOFAULT]
3304 3192          mov     %o4, %o5
3305 3193  
3306 3194          subcc   %g0, %o2, %o3
3307 3195          add     %o0, %o2, %o0
↓ open down ↓ 16 lines elided ↑ open up ↑
3324 3212            mov   %g0, %o0                ! return (0)
3325 3213  
3326 3214  .xcopyio_err:
3327 3215          membar  #Sync                           ! sync error barrier
3328 3216          stn     %o5, [THREAD_REG + T_LOFAULT]   ! restore old t_lofault
3329 3217          retl
3330 3218            mov   %g1, %o0
3331 3219  
3332 3220          SET_SIZE(xcopyin_little)
3333 3221  
3334      -#endif  /* lint */
3335 3222  
3336      -
3337 3223  /*
3338 3224   * Copy a block of storage - must not overlap (from + len <= to).
3339 3225   * No fault handler installed (to be called under on_fault())
3340 3226   */
3341      -#if defined(lint)
3342      -
3343      -/* ARGSUSED */
3344      -void
3345      -copyin_noerr(const void *ufrom, void *kto, size_t count)
3346      -{}
3347      -
3348      -#else   /* lint */
3349 3227          ENTRY(copyin_noerr)
3350 3228  
3351 3229          cmp     %o2, VIS_COPY_THRESHOLD         ! check for leaf rtn case
3352 3230          bleu,pt %ncc, .copyin_ne_small          ! go to larger cases
3353 3231            xor   %o0, %o1, %o3                   ! are src, dst alignable?
3354 3232          btst    7, %o3                          !
3355 3233          bz,pt   %ncc, .copyin_ne_8              ! check for longword alignment
3356 3234            nop
3357 3235          btst    1, %o3                          !
3358 3236          bz,pt   %ncc, .copyin_ne_2              ! check for half-word
↓ open down ↓ 63 lines elided ↑ open up ↑
3422 3300          jmp     %l6
3423 3301            restore %g0,0,%g0
3424 3302  
3425 3303  .sm_copyio_noerr:
3426 3304          membar  #Sync
3427 3305          stn     %o4, [THREAD_REG + T_LOFAULT]   ! restore t_lofault
3428 3306          jmp     %o4
3429 3307            nop
3430 3308  
3431 3309          SET_SIZE(copyin_noerr)
3432      -#endif /* lint */
3433 3310  
3434 3311  /*
3435 3312   * Copy a block of storage - must not overlap (from + len <= to).
3436 3313   * No fault handler installed (to be called under on_fault())
3437 3314   */
3438 3315  
3439      -#if defined(lint)
3440      -
3441      -/* ARGSUSED */
3442      -void
3443      -copyout_noerr(const void *kfrom, void *uto, size_t count)
3444      -{}
3445      -
3446      -#else   /* lint */
3447 3316          ENTRY(copyout_noerr)
3448 3317  
3449 3318          cmp     %o2, VIS_COPY_THRESHOLD         ! check for leaf rtn case
3450 3319          bleu,pt %ncc, .copyout_ne_small         ! go to larger cases
3451 3320            xor   %o0, %o1, %o3                   ! are src, dst alignable?
3452 3321          btst    7, %o3                          !
3453 3322          bz,pt   %ncc, .copyout_ne_8             ! check for longword alignment
3454 3323            nop
3455 3324          btst    1, %o3                          !
3456 3325          bz,pt   %ncc, .copyout_ne_2             ! check for half-word
↓ open down ↓ 53 lines elided ↑ open up ↑
3510 3379          ba,pt   %ncc, .sm_do_copyout
3511 3380          stn     %o5, [THREAD_REG + T_LOFAULT]   ! set/save t_lofault
3512 3381  
3513 3382  .copyout_noerr_more:
3514 3383          save    %sp, -SA(MINFRAME + HWCOPYFRAMESIZE), %sp
3515 3384          sethi   %hi(.copyio_noerr), REAL_LOFAULT
3516 3385          ba,pt   %ncc, .do_copyout
3517 3386            or    REAL_LOFAULT, %lo(.copyio_noerr), REAL_LOFAULT
3518 3387  
3519 3388          SET_SIZE(copyout_noerr)
3520      -#endif /* lint */
3521 3389  
3522 3390  
3523 3391  /*
3524 3392   * hwblkclr - clears block-aligned, block-multiple-sized regions that are
3525 3393   * longer than 256 bytes in length using spitfire's block stores.  If
3526 3394   * the criteria for using this routine are not met then it calls bzero
3527 3395   * and returns 1.  Otherwise 0 is returned indicating success.
3528 3396   * Caller is responsible for ensuring use_hw_bzero is true and that
3529 3397   * kpreempt_disable() has been called.
3530 3398   */
3531      -#ifdef lint
3532      -/*ARGSUSED*/
3533      -int
3534      -hwblkclr(void *addr, size_t len)
3535      -{
3536      -        return(0);
3537      -}
3538      -#else /* lint */
3539 3399          ! %i0 - start address
3540 3400          ! %i1 - length of region (multiple of 64)
3541 3401          ! %l0 - saved fprs
3542 3402          ! %l1 - pointer to saved %d0 block
3543 3403          ! %l2 - saved curthread->t_lwp
3544 3404  
3545 3405          ENTRY(hwblkclr)
3546 3406          ! get another window w/space for one aligned block of saved fpregs
3547 3407          save    %sp, -SA(MINFRAME + 2*VIS_BLOCKSIZE), %sp
3548 3408  
↓ open down ↓ 80 lines elided ↑ open up ↑
3629 3489          ! restore fpregs from stack
3630 3490          ldda    [%l1]ASI_BLK_P, %d0
3631 3491          membar  #Sync
3632 3492          wr      %l0, 0, %fprs           ! restore fprs
3633 3493  
3634 3494  .pz_finished:
3635 3495          ret
3636 3496            restore       %g0, 0, %o0             ! return (bzero or not)
3637 3497  
3638 3498          SET_SIZE(hwblkclr)
3639      -#endif  /* lint */
3640 3499  
3641      -#ifdef lint
3642      -/*ARGSUSED*/
3643      -void
3644      -hw_pa_bcopy32(uint64_t src, uint64_t dst)
3645      -{}
3646      -#else /*!lint */
3647 3500          /*
3648 3501           * Copy 32 bytes of data from src (%o0) to dst (%o1)
3649 3502           * using physical addresses.
3650 3503           */
3651 3504          ENTRY_NP(hw_pa_bcopy32)
3652 3505          rdpr    %pstate, %g1
3653 3506          andn    %g1, PSTATE_IE, %g2
3654 3507          wrpr    %g0, %g2, %pstate
3655 3508  
3656 3509          rdpr    %pstate, %g0
↓ open down ↓ 12 lines elided ↑ open up ↑
3669 3522          add     %o1, 8, %o1
3670 3523          stxa    %o4, [%o1]ASI_MEM
3671 3524          add     %o1, 8, %o1
3672 3525          stxa    %o5, [%o1]ASI_MEM
3673 3526  
3674 3527          retl
3675 3528            wrpr    %g0, %g1, %pstate
3676 3529  
3677 3530          SET_SIZE(hw_pa_bcopy32)
3678 3531  
3679      -#endif /* lint */
3680      -
3681      -#if defined(lint)
3682      -
3683      -int use_hw_bcopy = 1;
3684      -int use_hw_bzero = 1;
3685      -uint_t hw_copy_limit_1 = 0;
3686      -uint_t hw_copy_limit_2 = 0;
3687      -uint_t hw_copy_limit_4 = 0;
3688      -uint_t hw_copy_limit_8 = 0;
3689      -
3690      -#else /* !lint */
3691      -
3692 3532          DGDEF(use_hw_bcopy)
3693 3533          .word   1
3694 3534          DGDEF(use_hw_bzero)
3695 3535          .word   1
3696 3536          DGDEF(hw_copy_limit_1)
3697 3537          .word   0
3698 3538          DGDEF(hw_copy_limit_2)
3699 3539          .word   0
3700 3540          DGDEF(hw_copy_limit_4)
3701 3541          .word   0
3702 3542          DGDEF(hw_copy_limit_8)
3703 3543          .word   0
3704 3544  
3705 3545          .align  64
3706 3546          .section ".text"
3707      -#endif /* !lint */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX