Annotation of coherent/b/STREAMS/conf/streams/src/xcohio.s, revision 1.1.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.