The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/osfmk/i386/pio.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_LICENSE_HEADER_START@
    5  * 
    6  * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
    7  * 
    8  * This file contains Original Code and/or Modifications of Original Code
    9  * as defined in and that are subject to the Apple Public Source License
   10  * Version 2.0 (the 'License'). You may not use this file except in
   11  * compliance with the License. Please obtain a copy of the License at
   12  * http://www.opensource.apple.com/apsl/ and read it before using this
   13  * file.
   14  * 
   15  * The Original Code and all software distributed under the License are
   16  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   17  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   18  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   19  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   20  * Please see the License for the specific language governing rights and
   21  * limitations under the License.
   22  * 
   23  * @APPLE_LICENSE_HEADER_END@
   24  */
   25 /*
   26  * @OSF_COPYRIGHT@
   27  */
   28 /* 
   29  * Mach Operating System
   30  * Copyright (c) 1991,1990 Carnegie Mellon University
   31  * All Rights Reserved.
   32  * 
   33  * Permission to use, copy, modify and distribute this software and its
   34  * documentation is hereby granted, provided that both the copyright
   35  * notice and this permission notice appear in all copies of the
   36  * software, derivative works or modified versions, and any portions
   37  * thereof, and that both notices appear in supporting documentation.
   38  * 
   39  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
   40  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
   41  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
   42  * 
   43  * Carnegie Mellon requests users of this software to return to
   44  * 
   45  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
   46  *  School of Computer Science
   47  *  Carnegie Mellon University
   48  *  Pittsburgh PA 15213-3890
   49  * 
   50  * any improvements or extensions that they make and grant Carnegie Mellon
   51  * the rights to redistribute these changes.
   52  */
   53 /* 
   54  */
   55 #ifndef I386_PIO_H
   56 #define I386_PIO_H
   57 #include <cpus.h>
   58 #include <mach_assert.h>
   59 
   60 typedef unsigned short i386_ioport_t;
   61 
   62 /* read a longword */
   63 extern unsigned long    inl(
   64                                 i386_ioport_t   port);
   65 /* read a shortword */
   66 extern unsigned short   inw(
   67                                 i386_ioport_t   port);
   68 /* read a byte */
   69 extern unsigned char    inb(
   70                                 i386_ioport_t   port);
   71 /* write a longword */
   72 extern void             outl(
   73                                 i386_ioport_t   port,
   74                                 unsigned long   datum);
   75 /* write a word */
   76 extern void             outw(
   77                                 i386_ioport_t   port,
   78                                 unsigned short  datum);
   79 /* write a longword */
   80 extern void             outb(
   81                                 i386_ioport_t   port,
   82                                 unsigned char   datum);
   83 
   84 /* input an array of longwords */
   85 extern void             linl(
   86                                 i386_ioport_t   port,
   87                                 int             * data,
   88                                 int             count);
   89 /* output an array of longwords */
   90 extern void             loutl(
   91                                 i386_ioport_t   port,
   92                                 int             * data,
   93                                 int             count);
   94 
   95 /* input an array of words */
   96 extern void             linw(
   97                                 i386_ioport_t   port,
   98                                 int             * data,
   99                                 int             count);
  100 /* output an array of words */
  101 extern void             loutw(
  102                                 i386_ioport_t   port,
  103                                 int             * data,
  104                                 int             count);
  105 
  106 /* input an array of bytes */
  107 extern void             linb(
  108                                 i386_ioport_t   port,
  109                                 char            * data,
  110                                 int             count);
  111 /* output an array of bytes */
  112 extern void             loutb(
  113                                 i386_ioport_t   port,
  114                                 char            * data,
  115                                 int             count);
  116 
  117 #if defined(__GNUC__) && (!MACH_ASSERT)
  118 extern __inline__ unsigned long inl(
  119                                 i386_ioport_t port)
  120 {
  121         unsigned long datum;
  122         __asm__ volatile("inl %1, %0" : "=a" (datum) : "d" (port));
  123         return(datum);
  124 }
  125 
  126 extern __inline__ unsigned short inw(
  127                                 i386_ioport_t port)
  128 {
  129         unsigned short datum;
  130         __asm__ volatile(".byte 0x66; inl %1, %0" : "=a" (datum) : "d" (port));
  131         return(datum);
  132 }
  133 
  134 extern __inline__ unsigned char inb(
  135                                 i386_ioport_t port)
  136 {
  137         unsigned char datum;
  138         __asm__ volatile("inb %1, %0" : "=a" (datum) : "d" (port));
  139         return(datum);
  140 }
  141 
  142 extern __inline__ void outl(
  143                                 i386_ioport_t port,
  144                                 unsigned long datum)
  145 {
  146         __asm__ volatile("outl %0, %1" : : "a" (datum), "d" (port));
  147 }
  148 
  149 extern __inline__ void outw(
  150                                 i386_ioport_t port,
  151                                 unsigned short datum)
  152 {
  153         __asm__ volatile(".byte 0x66; outl %0, %1" : : "a" (datum), "d" (port));
  154 }
  155 
  156 extern __inline__ void outb(
  157                                 i386_ioport_t port,
  158                                 unsigned char datum)
  159 {
  160         __asm__ volatile("outb %0, %1" : : "a" (datum), "d" (port));
  161 }
  162 #endif /* defined(__GNUC__) && (!MACH_ASSERT) */
  163 #endif /* I386_PIO_H */

Cache object: bd465cdf2ecdae6582c7a64618791d5a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.