Annotation of Examples/DriverKit/AMDPCSCSIDriver/AMDPCSCSIDriver_reloc.tproj/ioPorts.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1993 NeXT Computer, Inc.
                      3:  *
                      4:  * Primitives for IO port access.
                      5:  *
                      6:  * HISTORY
                      7:  *
                      8:  * 30Mar94 Doug Mitchell
                      9:  *     Custom version for debugging - real functions, not static __inline__.
                     10:  * 16Feb93 David E. Bohman at NeXT
                     11:  *     Created.
                     12:  */
                     13: 
                     14: #import "ioPorts.h"
                     15: 
                     16: #if    USE_COMPILED_IO
                     17: 
                     18: #import <driverkit/i386/driverTypes.h>
                     19: 
                     20: unsigned char
                     21: inb(
                     22:     IOEISAPortAddress  port
                     23: )
                     24: {
                     25:     unsigned char      data;
                     26:     
                     27:     asm volatile(
                     28:        "inb %1,%0"
                     29:        
                     30:        : "=a" (data)
                     31:        : "d" (port));
                     32:        
                     33:     return (data);
                     34: }
                     35:  
                     36: unsigned short
                     37: inw(
                     38:     IOEISAPortAddress  port
                     39: )
                     40: {
                     41:     unsigned short     data;
                     42:     
                     43:     asm volatile(
                     44:        "inw %1,%0"
                     45:        
                     46:        : "=a" (data)
                     47:        : "d" (port));
                     48:        
                     49:     return (data);
                     50: }
                     51: 
                     52: unsigned long
                     53: inl(
                     54:     IOEISAPortAddress  port
                     55: )
                     56: {
                     57:     unsigned long      data;
                     58:     
                     59:     asm volatile(
                     60:        "inl %1,%0"
                     61:        
                     62:        : "=a" (data)
                     63:        : "d" (port));
                     64:        
                     65:     return (data);
                     66: }
                     67: 
                     68: void
                     69: outb(
                     70:     IOEISAPortAddress  port,
                     71:     unsigned char      data
                     72: )
                     73: {
                     74:     static int         xxx;
                     75: 
                     76:     asm volatile(
                     77:        "outb %2,%1; lock; incl %0"
                     78:        
                     79:        : "=m" (xxx)
                     80:        : "d" (port), "a" (data), "0" (xxx)
                     81:        : "cc");
                     82: }
                     83: 
                     84: void
                     85: outw(
                     86:     IOEISAPortAddress  port,
                     87:     unsigned short     data
                     88: )
                     89: {
                     90:     static int         xxx;
                     91: 
                     92:     asm volatile(
                     93:        "outw %2,%1; lock; incl %0"
                     94:        
                     95:        : "=m" (xxx)
                     96:        : "d" (port), "a" (data), "0" (xxx)
                     97:        : "cc");
                     98: }
                     99: 
                    100: void
                    101: outl(
                    102:     IOEISAPortAddress  port,
                    103:     unsigned long      data
                    104: )
                    105: {
                    106:     static int         xxx;
                    107: 
                    108:     asm volatile(
                    109:        "outl %2,%1; lock; incl %0"
                    110:        
                    111:        : "=m" (xxx)
                    112:        : "d" (port), "a" (data), "0" (xxx)
                    113:        : "cc");
                    114: }
                    115: 
                    116: #else  USE_COMPILED_IO
                    117: 
                    118: /* this file is a nop */
                    119: 
                    120: #endif USE_COMPILED_IO
                    121: 

unix.superglobalmegacorp.com

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