Changes in kernel/arch/amd64/include/asm.h [667a4f8:c22531fc] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/amd64/include/asm.h
r667a4f8 rc22531fc 41 41 #include <trace.h> 42 42 43 #define IO_SPACE_BOUNDARY ((void *) (64 * 1024)) 44 43 45 /** Return base address of current stack. 44 46 * … … 77 79 } 78 80 79 #define IO_SPACE_BOUNDARY ((void *) (64 * 1024))80 81 81 /** Byte from port 82 82 * … … 89 89 NO_TRACE static inline uint8_t pio_read_8(ioport8_t *port) 90 90 { 91 if ( ((void *)port) <IO_SPACE_BOUNDARY) {91 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { 92 92 uint8_t val; 93 93 94 asm volatile ( 94 95 "inb %w[port], %b[val]\n" … … 96 97 : [port] "d" (port) 97 98 ); 99 98 100 return val; 99 } else {101 } else 100 102 return (uint8_t) *port; 101 }102 103 } 103 104 … … 112 113 NO_TRACE static inline uint16_t pio_read_16(ioport16_t *port) 113 114 { 114 if ( ((void *)port) <IO_SPACE_BOUNDARY) {115 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { 115 116 uint16_t val; 117 116 118 asm volatile ( 117 119 "inw %w[port], %w[val]\n" … … 119 121 : [port] "d" (port) 120 122 ); 123 121 124 return val; 122 } else {125 } else 123 126 return (uint16_t) *port; 124 }125 127 } 126 128 … … 135 137 NO_TRACE static inline uint32_t pio_read_32(ioport32_t *port) 136 138 { 137 if ( ((void *)port) <IO_SPACE_BOUNDARY) {139 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { 138 140 uint32_t val; 141 139 142 asm volatile ( 140 143 "inl %w[port], %[val]\n" … … 142 145 : [port] "d" (port) 143 146 ); 147 144 148 return val; 145 } else {149 } else 146 150 return (uint32_t) *port; 147 }148 151 } 149 152 … … 158 161 NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t val) 159 162 { 160 if ( ((void *)port) <IO_SPACE_BOUNDARY) {163 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { 161 164 asm volatile ( 162 165 "outb %b[val], %w[port]\n" 163 166 :: [val] "a" (val), [port] "d" (port) 164 167 ); 165 } else { 166 *((uint8_t *) port) = val; 167 } 168 } else 169 *port = val; 168 170 } 169 171 … … 178 180 NO_TRACE static inline void pio_write_16(ioport16_t *port, uint16_t val) 179 181 { 180 if ( ((void *)port) <IO_SPACE_BOUNDARY) {182 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { 181 183 asm volatile ( 182 184 "outw %w[val], %w[port]\n" 183 185 :: [val] "a" (val), [port] "d" (port) 184 186 ); 185 } else { 186 *((uint16_t *) port) = val; 187 } 187 } else 188 *port = val; 188 189 } 189 190 … … 198 199 NO_TRACE static inline void pio_write_32(ioport32_t *port, uint32_t val) 199 200 { 200 if ( ((void *)port) <IO_SPACE_BOUNDARY) {201 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { 201 202 asm volatile ( 202 203 "outl %[val], %w[port]\n" 203 204 :: [val] "a" (val), [port] "d" (port) 204 205 ); 205 } else { 206 *((uint32_t *) port) = val; 207 } 206 } else 207 *port = val; 208 208 } 209 209
Note:
See TracChangeset
for help on using the changeset viewer.