Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia32/include/asm.h

    r667a4f8 r1c99eae  
    101101GEN_WRITE_REG(dr7)
    102102
    103 #define IO_SPACE_BOUNDARY       ((void *) (64 * 1024))
    104 
    105103/** Byte to port
    106104 *
     
    113111NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t val)
    114112{
    115         if (((void *)port) < IO_SPACE_BOUNDARY) {
    116                 asm volatile (
    117                         "outb %b[val], %w[port]\n"
    118                         :: [val] "a" (val), [port] "d" (port)
    119                 );     
    120         } else {
    121                 *((uint8_t *) port) = val;
    122         }
     113        asm volatile (
     114                "outb %b[val], %w[port]\n"
     115                :: [val] "a" (val),
     116                   [port] "d" (port)
     117        );
    123118}
    124119
     
    133128NO_TRACE static inline void pio_write_16(ioport16_t *port, uint16_t val)
    134129{
    135         if (((void *)port) < IO_SPACE_BOUNDARY) {
    136                 asm volatile (
    137                         "outw %w[val], %w[port]\n"
    138                         :: [val] "a" (val), [port] "d" (port)
    139                 );
    140         } else {
    141                 *((uint16_t *) port) = val;
    142         }
     130        asm volatile (
     131                "outw %w[val], %w[port]\n"
     132                :: [val] "a" (val),
     133                   [port] "d" (port)
     134        );
    143135}
    144136
     
    153145NO_TRACE static inline void pio_write_32(ioport32_t *port, uint32_t val)
    154146{
    155         if (((void *)port) < IO_SPACE_BOUNDARY) {
    156                 asm volatile (
    157                         "outl %[val], %w[port]\n"
    158                         :: [val] "a" (val), [port] "d" (port)
    159                 );
    160         } else {
    161                 *((uint32_t *) port) = val;
    162         }
     147        asm volatile (
     148                "outl %[val], %w[port]\n"
     149                :: [val] "a" (val),
     150                   [port] "d" (port)
     151        );
    163152}
    164153
     
    173162NO_TRACE static inline uint8_t pio_read_8(ioport8_t *port)
    174163{
    175         if (((void *)port) < IO_SPACE_BOUNDARY) {
    176                 uint8_t val;
    177                 asm volatile (
    178                         "inb %w[port], %b[val]\n"
    179                         : [val] "=a" (val)
    180                         : [port] "d" (port)
    181                 );
    182                 return val;
    183         } else {
    184                 return (uint8_t) *port;
    185         }
     164        uint8_t val;
     165       
     166        asm volatile (
     167                "inb %w[port], %b[val]\n"
     168                : [val] "=a" (val)
     169                : [port] "d" (port)
     170        );
     171       
     172        return val;
    186173}
    187174
     
    196183NO_TRACE static inline uint16_t pio_read_16(ioport16_t *port)
    197184{
    198         if (((void *)port) < IO_SPACE_BOUNDARY) {
    199                 uint16_t val;
    200                 asm volatile (
    201                         "inw %w[port], %w[val]\n"
    202                         : [val] "=a" (val)
    203                         : [port] "d" (port)
    204                 );
    205                 return val;
    206         } else {
    207                 return (uint16_t) *port;
    208         }
     185        uint16_t val;
     186       
     187        asm volatile (
     188                "inw %w[port], %w[val]\n"
     189                : [val] "=a" (val)
     190                : [port] "d" (port)
     191        );
     192       
     193        return val;
    209194}
    210195
     
    219204NO_TRACE static inline uint32_t pio_read_32(ioport32_t *port)
    220205{
    221         if (((void *)port) < IO_SPACE_BOUNDARY) {
    222                 uint32_t val;
    223                 asm volatile (
    224                         "inl %w[port], %[val]\n"
    225                         : [val] "=a" (val)
    226                         : [port] "d" (port)
    227                 );
    228                 return val;
    229         } else {
    230                 return (uint32_t) *port;
    231         }
     206        uint32_t val;
     207       
     208        asm volatile (
     209                "inl %w[port], %[val]\n"
     210                : [val] "=a" (val)
     211                : [port] "d" (port)
     212        );
     213       
     214        return val;
    232215}
    233216
     
    328311}
    329312
     313#ifndef PROCESSOR_i486
     314
    330315/** Write to MSR */
    331316NO_TRACE static inline void write_msr(uint32_t msr, uint64_t value)
     
    352337        return ((uint64_t) dx << 32) | ax;
    353338}
     339
     340#endif /* PROCESSOR_i486 */
    354341
    355342
Note: See TracChangeset for help on using the changeset viewer.