Annotation of coherent/f/etc/conf/streams/src/xcohio.s, revision 1.1

1.1     ! root        1: / This file contains implementations of I/O primitives used by the DDI/DDK
        !             2: / system. With GCC or other compilers that permit in-line generation of
        !             3: / assembly-language code in C programs a separate assembly language file
        !             4: / containing these implementations is not necessary. Since the MWC C compiler
        !             5: / that is the default development tool under Coherent does not permit inlining,
        !             6: / references to the I/O functions will be resolved to the external-linkage
        !             7: / implementations below.
        !             8:                .unixorder
        !             9: 
        !            10: / The header file <kernel/x86io.h> contains prototypes for the functions below.
        !            11: / The functions inb (), inw (), inl (), outb (), outw () and outl () which are
        !            12: / prototyped there are already present in the base Coherent implementation with
        !            13: / identical functionality to the DDI/DDK definitions.
        !            14: 
        !            15:                .globl  repinsb
        !            16:                .globl  repinsw
        !            17:                .globl  repinsd
        !            18: 
        !            19:                .globl  repoutsb
        !            20:                .globl  repoutsw
        !            21:                .globl  repoutsd
        !            22: 
        !            23: / void repinsb (int _port, uchar_t * _addr, int _count);
        !            24: repinsb:
        !            25:                mov     %edi, %eax      / save %edi
        !            26: 
        !            27:                mov     4(%esp), %edx   / port
        !            28:                mov     8(%esp), %edi   / address
        !            29:                mov     12(%esp), %ecx  / count
        !            30: 
        !            31:                rep
        !            32:                insb
        !            33: 
        !            34:                mov     %eax, %edi
        !            35:                ret
        !            36: 
        !            37: / void repinsw (int _port, ushort_t * _addr, int _count);
        !            38: repinsw:
        !            39:                mov     %edi, %eax      / save %edi
        !            40: 
        !            41:                mov     4(%esp), %edx   / port
        !            42:                mov     8(%esp), %edi   / address
        !            43:                mov     12(%esp), %ecx  / count
        !            44: 
        !            45:                rep
        !            46:                insw
        !            47: 
        !            48:                mov     %eax, %edi
        !            49:                ret
        !            50: 
        !            51: / void repinsd (int _port, ulong_t * addr, int _count);
        !            52: repinsd:
        !            53:                mov     %edi, %eax      / save %edi
        !            54: 
        !            55:                mov     4(%esp), %edx   / port
        !            56:                mov     8(%esp), %edi   / address
        !            57:                mov     12(%esp), %ecx  / count
        !            58: 
        !            59:                rep
        !            60:                insl
        !            61: 
        !            62:                mov     %eax, %edi
        !            63:                ret
        !            64: 
        !            65: / void repoutsb (int _port, uchar_t * _addr, int _count);
        !            66: repoutsb:
        !            67:                mov     %esi, %eax      / save %esi
        !            68: 
        !            69:                mov     4(%esp), %edx   / port
        !            70:                mov     8(%esp), %esi   / addr
        !            71:                mov     12(%esp), %ecx  / count
        !            72: 
        !            73:                rep
        !            74:                outsb
        !            75: 
        !            76:                mov     %eax, %esi
        !            77:                ret
        !            78: 
        !            79: / void repoutsw (int _port, ushort_t * _addr, int _count);
        !            80: repoutsw:
        !            81:                mov     %esi, %eax      / save %esi
        !            82: 
        !            83:                mov     4(%esp), %edx   / port
        !            84:                mov     8(%esp), %esi   / addr
        !            85:                mov     12(%esp), %ecx  / count
        !            86: 
        !            87:                rep
        !            88:                outsw
        !            89: 
        !            90:                mov     %eax, %esi
        !            91:                ret
        !            92: 
        !            93: / void repoutsd (int _port, ulong_t * _addr, int _count);
        !            94: repoutsd:
        !            95:                mov     %esi, %eax      / save %esi
        !            96: 
        !            97:                mov     4(%esp), %edx   / port
        !            98:                mov     8(%esp), %esi   / addr
        !            99:                mov     12(%esp), %ecx  / count
        !           100: 
        !           101:                rep
        !           102:                outsl
        !           103: 
        !           104:                mov     %eax, %esi
        !           105:                ret

unix.superglobalmegacorp.com

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