Ignore:
File:
1 edited

Legend:

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

    r667a4f8 rc22531fc  
    4141#include <trace.h>
    4242
     43#define IO_SPACE_BOUNDARY       ((void *) (64 * 1024))
     44
    4345/** Return base address of current stack.
    4446 *
     
    7779}
    7880
    79 #define IO_SPACE_BOUNDARY       ((void *) (64 * 1024))
    80 
    8181/** Byte from port
    8282 *
     
    8989NO_TRACE static inline uint8_t pio_read_8(ioport8_t *port)
    9090{
    91         if (((void *)port) < IO_SPACE_BOUNDARY) {
     91        if (port < (ioport8_t *) IO_SPACE_BOUNDARY) {
    9292                uint8_t val;
     93               
    9394                asm volatile (
    9495                        "inb %w[port], %b[val]\n"
     
    9697                        : [port] "d" (port)
    9798                );
     99               
    98100                return val;
    99         } else {
     101        } else
    100102                return (uint8_t) *port;
    101         }
    102103}
    103104
     
    112113NO_TRACE static inline uint16_t pio_read_16(ioport16_t *port)
    113114{
    114         if (((void *)port) < IO_SPACE_BOUNDARY) {
     115        if (port < (ioport16_t *) IO_SPACE_BOUNDARY) {
    115116                uint16_t val;
     117               
    116118                asm volatile (
    117119                        "inw %w[port], %w[val]\n"
     
    119121                        : [port] "d" (port)
    120122                );
     123               
    121124                return val;
    122         } else {
     125        } else
    123126                return (uint16_t) *port;
    124         }
    125127}
    126128
     
    135137NO_TRACE static inline uint32_t pio_read_32(ioport32_t *port)
    136138{
    137         if (((void *)port) < IO_SPACE_BOUNDARY) {
     139        if (port < (ioport32_t *) IO_SPACE_BOUNDARY) {
    138140                uint32_t val;
     141               
    139142                asm volatile (
    140143                        "inl %w[port], %[val]\n"
     
    142145                        : [port] "d" (port)
    143146                );
     147               
    144148                return val;
    145         } else {
     149        } else
    146150                return (uint32_t) *port;
    147         }
    148151}
    149152
     
    158161NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t val)
    159162{
    160         if (((void *)port) < IO_SPACE_BOUNDARY) {
     163        if (port < (ioport8_t *) IO_SPACE_BOUNDARY) {
    161164                asm volatile (
    162165                        "outb %b[val], %w[port]\n"
    163166                        :: [val] "a" (val), [port] "d" (port)
    164167                );     
    165         } else {
    166                 *((uint8_t *) port) = val;
    167         }
     168        } else
     169                *port = val;
    168170}
    169171
     
    178180NO_TRACE static inline void pio_write_16(ioport16_t *port, uint16_t val)
    179181{
    180         if (((void *)port) < IO_SPACE_BOUNDARY) {
     182        if (port < (ioport16_t *) IO_SPACE_BOUNDARY) {
    181183                asm volatile (
    182184                        "outw %w[val], %w[port]\n"
    183185                        :: [val] "a" (val), [port] "d" (port)
    184186                );
    185         } else {
    186                 *((uint16_t *) port) = val;
    187         }
     187        } else
     188                *port = val;
    188189}
    189190
     
    198199NO_TRACE static inline void pio_write_32(ioport32_t *port, uint32_t val)
    199200{
    200         if (((void *)port) < IO_SPACE_BOUNDARY) {
     201        if (port < (ioport32_t *) IO_SPACE_BOUNDARY) {
    201202                asm volatile (
    202203                        "outl %[val], %w[port]\n"
    203204                        :: [val] "a" (val), [port] "d" (port)
    204205                );
    205         } else {
    206                 *((uint32_t *) port) = val;
    207         }
     206        } else
     207                *port = val;
    208208}
    209209
Note: See TracChangeset for help on using the changeset viewer.