[b459526] | 1 | /* |
---|
| 2 | ///////////////////////////////////////////////////////////////////////////// |
---|
| 3 | // $Header$ |
---|
| 4 | // |
---|
| 5 | // Copyright (c) 2000 - Rosimildo da Silva. All Rights Reserved. |
---|
| 6 | // |
---|
| 7 | // MODULE DESCRIPTION: |
---|
| 8 | // |
---|
| 9 | // IO Functions for the PC platform equivalent to DOS/Linux. They make |
---|
| 10 | // eaiser the porting of code from these platforms. |
---|
| 11 | // |
---|
| 12 | // by: Rosimildo da Silva: rdasilva@connecttel.com |
---|
| 13 | // |
---|
| 14 | // MODIFICATION/HISTORY: |
---|
| 15 | // $Log$ |
---|
[3239698] | 16 | // Revision 1.1 2000/08/30 08:18:56 joel |
---|
| 17 | // 2000-08-26 Rosimildo da Silva <rdasilva@connecttel.com> |
---|
| 18 | // |
---|
| 19 | // * shared/comm: Added "/dev/ttyS1" & "/dev/ttyS2" support for |
---|
| 20 | // the i386 BSPs. |
---|
| 21 | // * shared/comm/gdb_glue.c: New file. |
---|
| 22 | // * shared/comm/i386_io.c: New file. |
---|
| 23 | // * shared/comm/tty_drv.c: New file. |
---|
| 24 | // * shared/comm/tty_drv.h: New file. |
---|
| 25 | // * shared/comm/Makefile.am: Account for new files. |
---|
| 26 | // * shared/comm/uart.c: Adds support for sending characters to |
---|
| 27 | // another "line discipline." |
---|
| 28 | // |
---|
[b459526] | 29 | // |
---|
| 30 | ///////////////////////////////////////////////////////////////////////////// |
---|
| 31 | */ |
---|
| 32 | |
---|
| 33 | #ifndef i386_io_h__ |
---|
| 34 | #define i386_io_h__ |
---|
| 35 | |
---|
| 36 | #define rtems_inb(port) \ |
---|
| 37 | ({ \ |
---|
| 38 | register int _inb_result; \ |
---|
| 39 | \ |
---|
| 40 | asm volatile ("xorl %%eax,%%eax; inb %%dx,%%al" : \ |
---|
| 41 | "=a" (_inb_result) : "d" (port)); \ |
---|
| 42 | _inb_result; \ |
---|
| 43 | }) |
---|
| 44 | |
---|
| 45 | #define rtems_inw(port) \ |
---|
| 46 | ({ \ |
---|
| 47 | register int _inbw_result; \ |
---|
| 48 | \ |
---|
| 49 | asm volatile ("xorl %%eax,%%eax; inw %%dx,%%ax" : \ |
---|
| 50 | "=a" (_inbw_result) : "d" (port)); \ |
---|
| 51 | _inbw_result; \ |
---|
| 52 | }) |
---|
| 53 | |
---|
| 54 | #define rtems_outb(port, data) \ |
---|
| 55 | asm volatile ("outb %%al,%%dx" : : "a" (data), "d" (port)) |
---|
| 56 | |
---|
| 57 | #define rtems_outw(port, data) \ |
---|
| 58 | asm volatile ("outw %%ax,%%dx" : : "a" (data), "d" (port)) |
---|
| 59 | |
---|
| 60 | #define outp(port, val) rtems_outb(port,val) |
---|
| 61 | #define inp(port) rtems_inb(port) |
---|
| 62 | |
---|
| 63 | #define outb(val, port) rtems_outb(port,val) |
---|
| 64 | #define inb(port) rtems_inb(port) |
---|
| 65 | |
---|
| 66 | #define outb_p(val, port) rtems_outb(port,val) |
---|
| 67 | #define inb_p(port) rtems_inb(port) |
---|
| 68 | |
---|
| 69 | #define outportb(port,val) rtems_outb(port,val) |
---|
| 70 | #define inportb(port) rtems_inb(port) |
---|
| 71 | |
---|
| 72 | #define outw(val, port) rtems_outw(port,val) |
---|
| 73 | #define inw(port) rtems_inw(port) |
---|
| 74 | |
---|
| 75 | #define cli() __asm__ __volatile__("cli") |
---|
| 76 | #define sti() __asm__ __volatile__("sti"); |
---|
| 77 | |
---|
| 78 | #endif /* i386_io_h__ */ |
---|