RTEMS  5.1
i386_io.h
Go to the documentation of this file.
1 
7 /*
8  * Copyright (c) 2000 - Rosimildo da Silva. All Rights Reserved.
9  *
10  * MODULE DESCRIPTION:
11  *
12  * IO Functions for the PC platform equivalent to DOS/Linux. They make
13  * eaiser the porting of code from these platforms.
14  *
15  * by: Rosimildo da Silva: rdasilva@connecttel.com
16  *
17  */
18 
26 #ifndef i386_io_h__
27 #define i386_io_h__
28 
29 #define rtems_inb(port) \
30 ({ \
31  register int _inb_result; \
32  \
33  __asm__ volatile ("xorl %%eax,%%eax; inb %%dx,%%al" : \
34  "=a" (_inb_result) : "d" (port)); \
35  _inb_result; \
36 })
37 
38 #define rtems_inw(port) \
39 ({ \
40  register int _inbw_result; \
41  \
42  __asm__ volatile ("xorl %%eax,%%eax; inw %%dx,%%ax" : \
43  "=a" (_inbw_result) : "d" (port)); \
44  _inbw_result; \
45 })
46 
47 #define rtems_outb(port, data) \
48  __asm__ volatile ("outb %%al,%%dx" : : "a" (data), "d" (port))
49 
50 #define rtems_outw(port, data) \
51  __asm__ volatile ("outw %%ax,%%dx" : : "a" (data), "d" (port))
52 
53 #define outp(port, val) rtems_outb(port,val)
54 #define inp(port) rtems_inb(port)
55 
56 #define outb(val, port) rtems_outb(port,val)
57 #define inb(port) rtems_inb(port)
58 
59 #define outb_p(val, port) rtems_outb(port,val)
60 #define inb_p(port) rtems_inb(port)
61 
62 #define outportb(port,val) rtems_outb(port,val)
63 #define inportb(port) rtems_inb(port)
64 
65 #define outw(val, port) rtems_outw(port,val)
66 #define inw(port) rtems_inw(port)
67 
68 #define cli() __asm__ __volatile__("cli")
69 #define sti() __asm__ __volatile__("sti");
70 
71 #endif /* i386_io_h__ */
72