Print this page
de-linting of .s files

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/sun4/ml/interrupt.s
          +++ new/usr/src/uts/sun4/ml/interrupt.s
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  23   23   */
  24   24  
  25      -#if defined(lint)
  26      -#include <sys/types.h>
  27      -#include <sys/thread.h>
  28      -#else   /* lint */
  29   25  #include "assym.h"
  30      -#endif  /* lint */
  31   26  
  32   27  #include <sys/cmn_err.h>
  33   28  #include <sys/ftrace.h>
  34   29  #include <sys/asm_linkage.h>
  35   30  #include <sys/machthread.h>
  36   31  #include <sys/machcpuvar.h>
  37   32  #include <sys/intreg.h>
  38   33  #include <sys/ivintr.h>
  39   34  
  40   35  #ifdef TRAPTRACE
  41   36  #include <sys/traptrace.h>
  42   37  #endif /* TRAPTRACE */
  43   38  
  44      -#if defined(lint)
  45   39  
  46      -/* ARGSUSED */
  47      -void
  48      -pil_interrupt(int level)
  49      -{}
  50      -
  51      -#else   /* lint */
  52      -
  53      -
  54   40  /*
  55   41   * (TT 0x40..0x4F, TL>0) Interrupt Level N Handler (N == 1..15)
  56   42   *      Register passed from LEVEL_INTERRUPT(level)
  57   43   *      %g4 - interrupt request level
  58   44   */
  59   45          ENTRY_NP(pil_interrupt)
  60   46          !
  61   47          ! Register usage
  62   48          !       %g1 - cpu
  63   49          !       %g2 - pointer to intr_vec_t (iv)
↓ open down ↓ 89 lines elided ↑ open up ↑
 153  139          mov     DISP_LEVEL, %g4         ! %g4 = DISP_LEVEL (11)
 154  140          ba,pt   %xcc, sys_trap
 155  141          or      %g1, %lo(intr_thread), %g1
 156  142  3:
 157  143          sethi   %hi(current_thread), %g1 ! %g1 = current_thread
 158  144          ba,pt   %xcc, sys_trap
 159  145          or      %g1, %lo(current_thread), %g1
 160  146          SET_SIZE(pil_interrupt_common)
 161  147          SET_SIZE(pil_interrupt)
 162  148  
 163      -#endif  /* lint */
 164  149  
 165      -
 166      -#ifndef lint
 167  150  _spurious:
 168  151          .asciz  "!interrupt 0x%x at level %d not serviced"
 169  152  
 170  153  /*
 171  154   * SERVE_INTR_PRE is called once, just before the first invocation
 172  155   * of SERVE_INTR.
 173  156   *
 174  157   * Registers on entry:
 175  158   *
 176  159   * iv_p, cpu, regs: may be out-registers
↓ open down ↓ 145 lines elided ↑ open up ↑
 322  305          stna    %g0, [os1 + TRAP_ENT_F1]%asi;                           \
 323  306          stna    %g0, [os1 + TRAP_ENT_F2]%asi;                           \
 324  307          stna    %g0, [os1 + TRAP_ENT_F3]%asi;                           \
 325  308          stna    %g0, [os1 + TRAP_ENT_F4]%asi;                           \
 326  309          TRACE_NEXT(os1, os2, os3);                                      \
 327  310          wrpr    %g0, os4, %pstate
 328  311  #else   /* TRAPTRACE */
 329  312  #define SERVE_INTR_TRACE2(inum, os1, os2, os3, os4)
 330  313  #endif  /* TRAPTRACE */
 331  314  
 332      -#endif  /* lint */
 333      -
 334      -#if defined(lint)
 335      -
 336      -/*ARGSUSED*/
 337      -void
 338      -intr_thread(struct regs *regs, uint64_t iv_p, uint_t pil)
 339      -{}
 340      -
 341      -#else   /* lint */
 342      -
 343  315  #define INTRCNT_LIMIT 16
 344  316  
 345  317  /*
 346  318   * Handle an interrupt in a new thread.
 347  319   *      Entry:
 348  320   *              %o0       = pointer to regs structure
 349  321   *              %o1       = pointer to current intr_vec_t (iv) to be processed
 350  322   *              %o2       = pil
 351  323   *              %sp       = on current thread's kernel stack
 352  324   *              %o7       = return linkage to trap code
↓ open down ↓ 532 lines elided ↑ open up ↑
 885  857  #ifdef DEBUG
 886  858  intr_thread_actv_bit_set:
 887  859          .asciz  "intr_thread(): cpu_intr_actv bit already set for PIL"
 888  860  intr_thread_actv_bit_not_set:
 889  861          .asciz  "intr_thread(): cpu_intr_actv bit not set for PIL"
 890  862  intr_thread_exit_actv_bit_set:
 891  863          .asciz  "intr_thread_exit(): cpu_intr_actv bit erroneously set for PIL"
 892  864  intr_thread_t_intr_start_zero:
 893  865          .asciz  "intr_thread(): t_intr_start zero upon handler return"
 894  866  #endif /* DEBUG */
 895      -#endif  /* lint */
 896  867  
 897      -#if defined(lint)
 898      -
 899      -/*
 900      - * Handle an interrupt in the current thread
 901      - *      Entry:
 902      - *              %o0       = pointer to regs structure
 903      - *              %o1       = pointer to current intr_vec_t (iv) to be processed
 904      - *              %o2       = pil
 905      - *              %sp       = on current thread's kernel stack
 906      - *              %o7       = return linkage to trap code
 907      - *              %g7       = current thread
 908      - *              %pstate   = normal globals, interrupts enabled, 
 909      - *                          privileged, fp disabled
 910      - *              %pil      = PIL_MAX
 911      - *
 912      - *      Register Usage
 913      - *              %l0       = return linkage
 914      - *              %l1       = old stack
 915      - *              %l2 - %l3 = scratch
 916      - *              %l4 - %l7 = reserved for sys_trap
 917      - *              %o3       = cpu
 918      - *              %o0       = scratch
 919      - *              %o4 - %o5 = scratch
 920      - */
 921      -/* ARGSUSED */
 922      -void
 923      -current_thread(struct regs *regs, uint64_t iv_p, uint_t pil)
 924      -{}
 925      -
 926      -#else   /* lint */
 927      -
 928  868          ENTRY_NP(current_thread)
 929  869          
 930  870          mov     %o7, %l0
 931  871          ldn     [THREAD_REG + T_CPU], %o3
 932  872  
 933  873          ldn     [THREAD_REG + T_ONFAULT], %l2
 934  874          brz,pt  %l2, no_onfault         ! branch if no onfault label set
 935  875          nop
 936  876          stn     %g0, [THREAD_REG + T_ONFAULT]! clear onfault label
 937  877          ldn     [THREAD_REG + T_LOFAULT], %l3
↓ open down ↓ 453 lines elided ↑ open up ↑
1391 1331          .asciz  "current_thread(): cpu_intr_actv bit already set for PIL"
1392 1332  current_thread_actv_bit_not_set:
1393 1333          .asciz  "current_thread(): cpu_intr_actv bit not set for PIL"
1394 1334  current_thread_nested_pil_zero:
1395 1335          .asciz  "current_thread(): timestamp zero for nested PIL %d"
1396 1336  current_thread_timestamp_zero:
1397 1337          .asciz  "current_thread(): timestamp zero upon handler return"
1398 1338  current_thread_nested_PIL_not_found:
1399 1339          .asciz  "current_thread: couldn't find nested high-level PIL"
1400 1340  #endif /* DEBUG */
1401      -#endif /* lint */
1402 1341  
1403 1342  /*
1404 1343   * Return a thread's interrupt level.
1405 1344   * Since this isn't saved anywhere but in %l4 on interrupt entry, we
1406 1345   * must dig it out of the save area.
1407 1346   *
1408 1347   * Caller 'swears' that this really is an interrupt thread.
1409 1348   *
1410 1349   * int
1411 1350   * intr_level(t)
1412 1351   *      kthread_id_t    t;
1413 1352   */
1414 1353  
1415      -#if defined(lint)
1416      -
1417      -/* ARGSUSED */
1418      -int
1419      -intr_level(kthread_id_t t)
1420      -{ return (0); }
1421      -
1422      -#else   /* lint */
1423      -
1424 1354          ENTRY_NP(intr_level)
1425 1355          retl
1426 1356          ldub    [%o0 + T_PIL], %o0              ! return saved pil
1427 1357          SET_SIZE(intr_level)
1428 1358  
1429      -#endif  /* lint */
1430      -
1431      -#if defined(lint)
1432      -
1433      -/* ARGSUSED */
1434      -int
1435      -disable_pil_intr()
1436      -{ return (0); }
1437      -
1438      -#else   /* lint */
1439      -
1440 1359          ENTRY_NP(disable_pil_intr)
1441 1360          rdpr    %pil, %o0
1442 1361          retl
1443 1362          wrpr    %g0, PIL_MAX, %pil              ! disable interrupts (1-15)
1444 1363          SET_SIZE(disable_pil_intr)
1445 1364  
1446      -#endif  /* lint */
1447      -
1448      -#if defined(lint)
1449      -
1450      -/* ARGSUSED */
1451      -void
1452      -enable_pil_intr(int pil_save)
1453      -{}
1454      -
1455      -#else   /* lint */
1456      -
1457 1365          ENTRY_NP(enable_pil_intr)
1458 1366          retl
1459 1367          wrpr    %o0, %pil
1460 1368          SET_SIZE(enable_pil_intr)
1461 1369  
1462      -#endif  /* lint */
1463      -
1464      -#if defined(lint)
1465      -
1466      -/* ARGSUSED */
1467      -uint_t
1468      -disable_vec_intr(void)
1469      -{ return (0); }
1470      -
1471      -#else   /* lint */
1472      -
1473 1370          ENTRY_NP(disable_vec_intr)
1474 1371          rdpr    %pstate, %o0
1475 1372          andn    %o0, PSTATE_IE, %g1
1476 1373          retl
1477 1374          wrpr    %g0, %g1, %pstate               ! disable interrupt
1478 1375          SET_SIZE(disable_vec_intr)
1479 1376  
1480      -#endif  /* lint */
1481      -
1482      -#if defined(lint)
1483      -
1484      -/* ARGSUSED */
1485      -void
1486      -enable_vec_intr(uint_t pstate_save)
1487      -{}
1488      -
1489      -#else   /* lint */
1490      -
1491 1377          ENTRY_NP(enable_vec_intr)
1492 1378          retl
1493 1379          wrpr    %g0, %o0, %pstate
1494 1380          SET_SIZE(enable_vec_intr)
1495 1381  
1496      -#endif  /* lint */
1497      -
1498      -#if defined(lint)
1499      - 
1500      -void
1501      -cbe_level14(void)
1502      -{}
1503      -
1504      -#else   /* lint */
1505      -
1506 1382          ENTRY_NP(cbe_level14)
1507 1383          save    %sp, -SA(MINFRAME), %sp ! get a new window
1508 1384          !
1509 1385          ! Make sure that this is from TICK_COMPARE; if not just return
1510 1386          !
1511 1387          rd      SOFTINT, %l1
1512 1388          set     (TICK_INT_MASK | STICK_INT_MASK), %o2
1513 1389          andcc   %l1, %o2, %g0
1514 1390          bz,pn   %icc, 2f
1515 1391          nop
1516 1392  
1517 1393          CPU_ADDR(%o1, %o2)
1518 1394          call    cyclic_fire
1519 1395          mov     %o1, %o0
1520 1396  2:
1521 1397          ret
1522 1398          restore %g0, 1, %o0
1523 1399          SET_SIZE(cbe_level14)
1524 1400  
1525      -#endif  /* lint */
1526 1401  
1527      -
1528      -#if defined(lint)
1529      -
1530      -/* ARGSUSED */
1531      -void
1532      -kdi_setsoftint(uint64_t iv_p)
1533      -{}
1534      -
1535      -#else   /* lint */
1536      -
1537 1402          ENTRY_NP(kdi_setsoftint)
1538 1403          save    %sp, -SA(MINFRAME), %sp ! get a new window 
1539 1404          rdpr    %pstate, %l5
1540 1405          andn    %l5, PSTATE_IE, %l1
1541 1406          wrpr    %l1, %pstate            ! disable interrupt
1542 1407          !
1543 1408          ! We have a pointer to an interrupt vector data structure.
1544 1409          ! Put the request on the cpu's softint priority list and
1545 1410          ! set %set_softint.
1546 1411          !
↓ open down ↓ 53 lines elided ↑ open up ↑
1600 1465          !
1601 1466          mov     1, %l1                  ! %l1 = 1
1602 1467          sll     %l1, %l2, %l1           ! %l1 = 1 << pil
1603 1468          wr      %l1, SET_SOFTINT        ! trigger required pil softint
1604 1469  4:
1605 1470          wrpr    %g0, %l5, %pstate       ! %pstate = saved %pstate (in %l5)
1606 1471          ret
1607 1472          restore
1608 1473          SET_SIZE(kdi_setsoftint)
1609 1474          
1610      -#endif  /* lint */
1611      -
1612      -#if defined(lint)
1613      -
1614      -/*ARGSUSED*/
1615      -void
1616      -setsoftint_tl1(uint64_t iv_p, uint64_t dummy)
1617      -{}
1618      -
1619      -#else   /* lint */
1620      -
1621 1475          !
1622 1476          ! Register usage
1623 1477          !       Arguments:
1624 1478          !       %g1 - Pointer to intr_vec_t (iv)
1625 1479          !
1626 1480          !       Internal:
1627 1481          !       %g2 - pil
1628 1482          !       %g4 - cpu
1629 1483          !       %g3,%g5-g7 - temps
1630 1484          !
↓ open down ↓ 64 lines elided ↑ open up ↑
1695 1549  #endif /* TRAPTRACE */
1696 1550          !
1697 1551          ! Write %set_softint with (1<<pil) to cause a "pil" level trap
1698 1552          !
1699 1553          mov     1, %g5                  ! %g5 = 1
1700 1554          sll     %g5, %g2, %g5           ! %g5 = 1 << pil
1701 1555          wr      %g5, SET_SOFTINT        ! trigger required pil softint
1702 1556          retry
1703 1557          SET_SIZE(setsoftint_tl1)
1704 1558  
1705      -#endif  /* lint */
1706      -
1707      -#if defined(lint)
1708      -
1709      -/*ARGSUSED*/
1710      -void
1711      -setvecint_tl1(uint64_t inum, uint64_t dummy)
1712      -{}
1713      -
1714      -#else   /* lint */
1715      -
1716 1559          !
1717 1560          ! Register usage
1718 1561          !       Arguments:
1719 1562          !       %g1 - inumber
1720 1563          !
1721 1564          !       Internal:
1722 1565          !       %g1 - softint pil mask
1723 1566          !       %g2 - pil of intr_vec_t
1724 1567          !       %g3 - pointer to current intr_vec_t (iv)
1725 1568          !       %g4 - cpu
↓ open down ↓ 112 lines elided ↑ open up ↑
1838 1681  
1839 1682  .no_ivintr:
1840 1683          ! no_ivintr: arguments: rp, inum (%g1), pil (%g2 == 0)
1841 1684          mov     %g2, %g3
1842 1685          mov     %g1, %g2
1843 1686          set     no_ivintr, %g1
1844 1687          ba,pt   %xcc, sys_trap
1845 1688          mov     PIL_15, %g4
1846 1689          SET_SIZE(setvecint_tl1)
1847 1690  
1848      -#endif  /* lint */
1849      -
1850      -#if defined(lint)
1851      -
1852      -/*ARGSUSED*/
1853      -void
1854      -wr_clr_softint(uint_t value)
1855      -{}
1856      -
1857      -#else
1858      -
1859 1691          ENTRY_NP(wr_clr_softint)
1860 1692          retl
1861 1693          wr      %o0, CLEAR_SOFTINT
1862 1694          SET_SIZE(wr_clr_softint)
1863 1695  
1864      -#endif /* lint */
1865      -
1866      -#if defined(lint)
1867      -
1868      -/*ARGSUSED*/
1869      -void
1870      -intr_enqueue_req(uint_t pil, uint64_t inum)
1871      -{}
1872      -
1873      -#else   /* lint */
1874      -
1875 1696  /*
1876 1697   * intr_enqueue_req
1877 1698   *
1878 1699   * %o0 - pil
1879 1700   * %o1 - pointer to intr_vec_t (iv)
1880 1701   * %o5 - preserved
1881 1702   * %g5 - preserved
1882 1703   */
1883 1704          ENTRY_NP(intr_enqueue_req)
1884 1705          !
↓ open down ↓ 29 lines elided ↑ open up ↑
1914 1735          !
1915 1736          ! no intr_vec_t's queued so make intr_vec_t as new head
1916 1737          !
1917 1738          add     %g4, INTR_HEAD, %g6     ! %g6 = &cpu->m_cpu.intr_head[pil]
1918 1739          stn     %o1, [%g6 + %o0]        ! cpu->m_cpu.intr_head[pil] = iv
1919 1740  3:
1920 1741          retl
1921 1742          nop
1922 1743          SET_SIZE(intr_enqueue_req)
1923 1744  
1924      -#endif  /* lint */
1925      -
1926 1745  /*
1927 1746   * Set CPU's base SPL level, based on which interrupt levels are active.
1928 1747   *      Called at spl7 or above.
1929 1748   */
1930 1749  
1931      -#if defined(lint)
1932      -
1933      -void
1934      -set_base_spl(void)
1935      -{}
1936      -
1937      -#else   /* lint */
1938      -
1939 1750          ENTRY_NP(set_base_spl)
1940 1751          ldn     [THREAD_REG + T_CPU], %o2       ! load CPU pointer
1941 1752          ld      [%o2 + CPU_INTR_ACTV], %o5      ! load active interrupts mask
1942 1753  
1943 1754  /*
1944 1755   * WARNING: non-standard callinq sequence; do not call from C
1945 1756   *      %o2 = pointer to CPU
1946 1757   *      %o5 = updated CPU_INTR_ACTV
1947 1758   */
1948 1759  _intr_set_spl:                                  ! intr_thread_exit enters here
↓ open down ↓ 30 lines elided ↑ open up ↑
1979 1790  /*
1980 1791   * Table that finds the most significant bit set in a five bit field.
1981 1792   * Each entry is the high-order bit number + 1 of it's index in the table.
1982 1793   * This read-only data is in the text segment.
1983 1794   */
1984 1795  _intr_flag_table:
1985 1796          .byte   0, 1, 2, 2,     3, 3, 3, 3,     4, 4, 4, 4,     4, 4, 4, 4
1986 1797          .byte   5, 5, 5, 5,     5, 5, 5, 5,     5, 5, 5, 5,     5, 5, 5, 5
1987 1798          .align  4
1988 1799  
1989      -#endif  /* lint */
1990      -
1991 1800  /*
1992 1801   * int
1993 1802   * intr_passivate(from, to)
1994 1803   *      kthread_id_t    from;           interrupt thread
1995 1804   *      kthread_id_t    to;             interrupted thread
1996 1805   */
1997 1806  
1998      -#if defined(lint)
1999      -
2000      -/* ARGSUSED */
2001      -int
2002      -intr_passivate(kthread_id_t from, kthread_id_t to)
2003      -{ return (0); }
2004      -
2005      -#else   /* lint */
2006      -
2007 1807          ENTRY_NP(intr_passivate)
2008 1808          save    %sp, -SA(MINFRAME), %sp ! get a new window 
2009 1809  
2010 1810          flushw                          ! force register windows to stack
2011 1811          !
2012 1812          ! restore registers from the base of the stack of the interrupt thread.
2013 1813          !
2014 1814          ldn     [%i0 + T_STACK], %i2    ! get stack save area pointer
2015 1815          ldn     [%i2 + (0*GREGSIZE)], %l0       ! load locals
2016 1816          ldn     [%i2 + (1*GREGSIZE)], %l1
↓ open down ↓ 36 lines elided ↑ open up ↑
2053 1853          stn     %i5, [%i3 + STACK_BIAS + (15*GREGSIZE)]
2054 1854          stn     %g0, [%i2 + ((8+6)*GREGSIZE)]
2055 1855                                                  ! clear fp in save area
2056 1856          
2057 1857          ! load saved pil for return
2058 1858          ldub    [%i0 + T_PIL], %i0
2059 1859          ret
2060 1860          restore
2061 1861          SET_SIZE(intr_passivate)
2062 1862  
2063      -#endif  /* lint */
2064      -
2065      -#if defined(lint)
2066      -
2067      -/*
2068      - * intr_get_time() is a resource for interrupt handlers to determine how
2069      - * much time has been spent handling the current interrupt. Such a function
2070      - * is needed because higher level interrupts can arrive during the
2071      - * processing of an interrupt, thus making direct comparisons of %tick by
2072      - * the handler inaccurate. intr_get_time() only returns time spent in the
2073      - * current interrupt handler.
2074      - *
2075      - * The caller must be calling from an interrupt handler running at a pil
2076      - * below or at lock level. Timings are not provided for high-level
2077      - * interrupts.
2078      - *
2079      - * The first time intr_get_time() is called while handling an interrupt,
2080      - * it returns the time since the interrupt handler was invoked. Subsequent
2081      - * calls will return the time since the prior call to intr_get_time(). Time
2082      - * is returned as ticks, adjusted for any clock divisor due to power 
2083      - * management. Use tick2ns() to convert ticks to nsec. Warning: ticks may 
2084      - * not be the same across CPUs.
2085      - *
2086      - * Theory Of Intrstat[][]:
2087      - *
2088      - * uint64_t intrstat[pil][0..1] is an array indexed by pil level, with two
2089      - * uint64_ts per pil.
2090      - *
2091      - * intrstat[pil][0] is a cumulative count of the number of ticks spent
2092      - * handling all interrupts at the specified pil on this CPU. It is
2093      - * exported via kstats to the user.
2094      - *
2095      - * intrstat[pil][1] is always a count of ticks less than or equal to the
2096      - * value in [0]. The difference between [1] and [0] is the value returned
2097      - * by a call to intr_get_time(). At the start of interrupt processing,
2098      - * [0] and [1] will be equal (or nearly so). As the interrupt consumes
2099      - * time, [0] will increase, but [1] will remain the same. A call to
2100      - * intr_get_time() will return the difference, then update [1] to be the
2101      - * same as [0]. Future calls will return the time since the last call.
2102      - * Finally, when the interrupt completes, [1] is updated to the same as [0].
2103      - *
2104      - * Implementation:
2105      - *
2106      - * intr_get_time() works much like a higher level interrupt arriving. It
2107      - * "checkpoints" the timing information by incrementing intrstat[pil][0]
2108      - * to include elapsed running time, and by setting t_intr_start to %tick.
2109      - * It then sets the return value to intrstat[pil][0] - intrstat[pil][1],
2110      - * and updates intrstat[pil][1] to be the same as the new value of
2111      - * intrstat[pil][0].
2112      - *
2113      - * In the normal handling of interrupts, after an interrupt handler returns
2114      - * and the code in intr_thread() updates intrstat[pil][0], it then sets
2115      - * intrstat[pil][1] to the new value of intrstat[pil][0]. When [0] == [1],
2116      - * the timings are reset, i.e. intr_get_time() will return [0] - [1] which
2117      - * is 0.
2118      - *
2119      - * Whenever interrupts arrive on a CPU which is handling a lower pil
2120      - * interrupt, they update the lower pil's [0] to show time spent in the
2121      - * handler that they've interrupted. This results in a growing discrepancy
2122      - * between [0] and [1], which is returned the next time intr_get_time() is
2123      - * called. Time spent in the higher-pil interrupt will not be returned in
2124      - * the next intr_get_time() call from the original interrupt, because
2125      - * the higher-pil interrupt's time is accumulated in intrstat[higherpil][].
2126      - */
2127      -
2128      -/*ARGSUSED*/
2129      -uint64_t
2130      -intr_get_time(void)
2131      -{ return 0; }
2132      -#else   /* lint */
2133      -
2134 1863          ENTRY_NP(intr_get_time)
2135 1864  #ifdef DEBUG
2136 1865          !
2137 1866          ! Lots of asserts, but just check panic_quiesce first.
2138 1867          ! Don't bother with lots of tests if we're just ignoring them.
2139 1868          !
2140 1869          sethi   %hi(panic_quiesce), %o0
2141 1870          ld      [%o0 + %lo(panic_quiesce)], %o0
2142 1871          brnz,pn %o0, 2f
2143 1872          nop     
↓ open down ↓ 88 lines elided ↑ open up ↑
2232 1961          SET_SIZE(intr_get_time)
2233 1962  
2234 1963  #ifdef DEBUG
2235 1964  intr_get_time_high_pil:
2236 1965          .asciz  "intr_get_time(): %pil > LOCK_LEVEL"
2237 1966  intr_get_time_not_intr:
2238 1967          .asciz  "intr_get_time(): not called from an interrupt thread"
2239 1968  intr_get_time_no_start_time:
2240 1969          .asciz  "intr_get_time(): t_intr_start == 0"
2241 1970  #endif /* DEBUG */
2242      -#endif  /* lint */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX