POK(kernelpart)
/home/jaouen/pok_official/pok/trunk/kernel/include/arch/x86/ioports.h
Go to the documentation of this file.
00001 /*
00002  *                               POK header
00003  * 
00004  * The following file is a part of the POK project. Any modification should
00005  * made according to the POK licence. You CANNOT use this file or a part of
00006  * this file is this part of a file for your own project
00007  *
00008  * For more information on the POK licence, please see our LICENCE FILE
00009  *
00010  * Please follow the coding guidelines described in doc/CODING_GUIDELINES
00011  *
00012  *                                      Copyright (c) 2007-2009 POK team 
00013  *
00014  * Created by julien on Thu Jan 15 23:34:13 2009 
00015  */
00016 
00017 
00018 #ifndef __POK_IOPORTS_H__
00019 #define __POK_IOPORTS_H__
00020 
00021 # include <core/syscall.h>
00022 
00023 #define outb(port, data)                                        \
00024   asm volatile ("outb %b0,%w1"                                  \
00025                 :                                               \
00026                 :"a" (data),"d" (port))
00027 
00028 #define inb(port)                                               \
00029 ({                                                              \
00030   unsigned char res;                                            \
00031   asm volatile ("inb %w1,%0"                                    \
00032                 :"=a" (res)                                     \
00033                 :"d" (port));                                   \
00034   res;                                                          \
00035 })
00036 
00037 #define outl(port, data)                                        \
00038   asm volatile ("outl %0,%w1"                                   \
00039                 :                                               \
00040                 :"a" (data),"d" (port))
00041 
00042 #define inl(port)                                               \
00043 ({                                                              \
00044   unsigned int res;                                             \
00045   asm volatile ("inl %w1,%0"                                    \
00046                 :"=a" (res)                                     \
00047                 :"d" (port));                                   \
00048   res;                                                          \
00049 })
00050 
00051 #endif /* __POK_IOPORTS_H__ */