Annotation of coherent/b/lib/libc/crt/i386/scount.s, revision 1.1.1.1

1.1       root        1: ////////
                      2: / libc/crt/i386/scount.s
                      3: / i386 C runtime library.
                      4: / Profile call counter.
                      5: ////////
                      6: 
                      7:        .globl  _scount
                      8:        .globl  _fnclst
                      9:        .globl  _mhdr
                     10: 
                     11: ////////
                     12: / Profile count routine.
                     13: / Called from the entry sequence of every function
                     14: / compiled with the -VPROF profile option.
                     15: / On entry:
                     16: /      %ecx    pointer to 12 byte block in BSS
                     17: / The block looks like this:
                     18: /      .long   ?       ; vaddr_t pc
                     19: /      .long   ?       ; long count
                     20: /      .long   ?       ; struct m_flst * link into _fnclst
                     21: /
                     22: / C source (roughly; delete prolog and epilog, hack parameters):
                     23: /      #include <mon.h>
                     24: /
                     25: /      void
                     26: /      _scount(pc, flp)
                     27: /      vaddr_t pc;                     /* actually passed in (%esp) */
                     28: /      register struct m_flst  *flp;   /* actually passed in %ecx */
                     29: /      {
                     30: /              ++flp->m_data.m_ncalls;
                     31: /              if ((vaddr_t)&pc < _mhdr.m_lowsp)
                     32: /                      _mhdr.m_lowsp = (vaddr_t)&pc;
                     33: /              if (flp->m_link == NULL) {
                     34: /                      flp->m_link = _fnclst;
                     35: /                      _fnclst = flp;
                     36: /                      flp->m_data.m_addr = pc;
                     37: /              }
                     38: /      }
                     39: ////////
                     40: 
                     41:        .text
                     42: 
                     43: _scount:
                     44:        incl    4(%ecx)
                     45:        cmpl    %esp, _mhdr+12
                     46:        jae     .L2
                     47:        movl    _mhdr+12, %esp
                     48: .L2:
                     49:        cmpl    8(%ecx), $0
                     50:        jne     .L1
                     51:        movl    %eax, _fnclst
                     52:        movl    8(%ecx), %eax
                     53:        movl    _fnclst, %ecx
                     54:        movl    %eax, (%esp)
                     55:        movl    (%ecx), %eax
                     56: .L1:
                     57:        ret
                     58: 
                     59: / end of libc/crt/i386/scount.s

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.