Annotation of coherent/d/286_KERNEL/USRSRC/ldrv/ffmem.s, revision 1.1

1.1     ! root        1: / $Header: /usr/src/sys/ldrv/RCS/ffmem.s,v 1.1 88/03/24 16:30:31 src Exp $
        !             2: /
        !             3: /      The  information  contained herein  is a trade secret  of INETCO
        !             4: /      Systems, and is confidential information.   It is provided under
        !             5: /      a license agreement,  and may be copied or disclosed  only under
        !             6: /      the terms of that agreement.   Any reproduction or disclosure of
        !             7: /      this  material  without  the express  written  authorization  of
        !             8: /      INETCO Systems or persuant to the license agreement is unlawful.
        !             9: /
        !            10: /      Copyright (c) 1986
        !            11: /      An unpublished work by INETCO Systems, Ltd.
        !            12: /      All rights reserved.
        !            13: /
        !            14: / $Log:        /usr/src/sys/ldrv/RCS/ffmem.s,v $
        !            15: / Revision 1.1 88/03/24  16:30:31      src
        !            16: / Initial revision
        !            17: / 
        !            18: /
        !            19: ////////
        !            20: 
        !            21: ////////
        !            22: /
        !            23: / void
        !            24: / ffmem( fp, m, n )    -- fetch far memory
        !            25: / faddr_t fp;
        !            26: / char * m;
        !            27: / int n;
        !            28: /
        !            29: /      Input:  fp = far pointer [32 bit selector:offset] to source
        !            30: /              m  = destination
        !            31: /              n  = number of bytes to transfer.
        !            32: /
        !            33: /      Action: Transfer 'n' bytes from far address 'fp' to offset 'm'
        !            34: /              in the current data space.
        !            35: /
        !            36: /      Return: None.
        !            37: /
        !            38: ////////
        !            39: 
        !            40:        .globl  ffmem_
        !            41: 
        !            42: ffmem_:        push    si              / void
        !            43:        push    di              / ffmem( fp, m, n )
        !            44:        push    bp              /
        !            45:        mov     bp, sp          / register faddr_t fp;          /* DS:SI */
        !            46:        push    ds              / register char * m;            /* DI */
        !            47:        lds     si, 8(bp)       / register int n;               /* CX */
        !            48:        mov     di, 12(bp)      /
        !            49:        mov     cx, 14(bp)      / {
        !            50:                                /
        !            51:        cld                     /
        !            52:        clc                     /       for ( ; n != 0; --n )
        !            53:        rcr     cx, $1          /
        !            54:        rep                     /               *m++ = *fp++;
        !            55:        movsw                   /
        !            56:        rcl     cx, $1          /
        !            57:        rep                     /
        !            58:        movsb                   /
        !            59:                                /
        !            60:        pop     ds              / }
        !            61:        pop     bp
        !            62:        pop     di
        !            63:        pop     si
        !            64:        ret

unix.superglobalmegacorp.com

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