Changeset c8f70eb in mainline for uspace/lib/c/arch/ia32/include/ddi.h


Ignore:
Timestamp:
2011-08-20T17:04:52Z (13 years ago)
Author:
Petr Koupy <petr.koupy@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ac08cd9
Parents:
81bc309
Message:

pcc incompatible inline assembly rewritten in a more agreeable fashion.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/arch/ia32/include/ddi.h

    r81bc309 rc8f70eb  
    4444                uint8_t val;
    4545                asm volatile (
    46                         "inb %w1, %b0\n"
    47                         : "=a" (val)
    48                         : "d" (port)
     46                        "inb %w[port], %b[val]\n"
     47                        : [val] "=a" (val)
     48                        : [port] "d" (port)
    4949                );
    5050                return val;
     
    5959                uint16_t val;
    6060                asm volatile (
    61                         "inw %w1, %w0\n"
    62                         : "=a" (val)
    63                         : "d" (port)
     61                        "inw %w[port], %w[val]\n"
     62                        : [val] "=a" (val)
     63                        : [port] "d" (port)
    6464                );
    6565                return val;
     
    7474                uint32_t val;
    7575                asm volatile (
    76                         "inl %w1, %0\n"
    77                         : "=a" (val)
    78                         : "d" (port)
     76                        "inl %w[port], %[val]\n"
     77                        : [val] "=a" (val)
     78                        : [port] "d" (port)
    7979                );
    8080                return val;
     
    8888        if (port < (ioport8_t *) IO_SPACE_BOUNDARY) {
    8989                asm volatile (
    90                         "outb %b0, %w1\n"
    91                         :: "a" (val), "d" (port)
     90                        "outb %b[val], %w[port]\n"
     91                        :: [val] "a" (val), [port] "d" (port)
    9292                );     
    9393        } else {
     
    100100        if (port < (ioport16_t *) IO_SPACE_BOUNDARY) {
    101101                asm volatile (
    102                         "outw %w0, %w1\n"
    103                         :: "a" (val), "d" (port)
     102                        "outw %w[val], %w[port]\n"
     103                        :: [val] "a" (val), [port] "d" (port)
    104104                );
    105105        } else {
     
    112112        if (port < (ioport32_t *) IO_SPACE_BOUNDARY) {
    113113                asm volatile (
    114                         "outl %0, %w1\n"
    115                         :: "a" (val), "d" (port)
     114                        "outl %[val], %w[port]\n"
     115                        :: [val] "a" (val), [port] "d" (port)
    116116                );
    117117        } else {
Note: See TracChangeset for help on using the changeset viewer.