| @@ -205,50 +205,26 @@ VOID IndirectIOCommand_MOVE_DATA(PARSER_ | | | @@ -205,50 +205,26 @@ VOID IndirectIOCommand_MOVE_DATA(PARSER_ |
205 | } | | 205 | } |
206 | | | 206 | |
207 | | | 207 | |
208 | VOID IndirectIOCommand_SET(PARSER_TEMP_DATA STACK_BASED * pParserTempData) | | 208 | VOID IndirectIOCommand_SET(PARSER_TEMP_DATA STACK_BASED * pParserTempData) |
209 | { | | 209 | { |
210 | pParserTempData->IndirectData |= ((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[2]); | | 210 | pParserTempData->IndirectData |= ((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[2]); |
211 | } | | 211 | } |
212 | | | 212 | |
213 | VOID IndirectIOCommand_CLEAR(PARSER_TEMP_DATA STACK_BASED * pParserTempData) | | 213 | VOID IndirectIOCommand_CLEAR(PARSER_TEMP_DATA STACK_BASED * pParserTempData) |
214 | { | | 214 | { |
215 | pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[2]); | | 215 | pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[2]); |
216 | } | | 216 | } |
217 | | | 217 | |
218 | /* from xorg-server 1.18 compiler.h */ | | | |
219 | struct __una_u64 { uint64_t x __attribute__((packed)); }; | | | |
220 | struct __una_u32 { uint32_t x __attribute__((packed)); }; | | | |
221 | | | | |
222 | static __inline__ uint16_t ldw_u(uint16_t *p) | | | |
223 | { | | | |
224 | uint16_t ret; | | | |
225 | memmove(&ret, p, sizeof(*p)); | | | |
226 | return ret; | | | |
227 | } | | | |
228 | | | | |
229 | static __inline__ uint32_t ldl_u(uint32_t *p) | | | |
230 | { | | | |
231 | uint32_t ret; | | | |
232 | memmove(&ret, p, sizeof(*p)); | | | |
233 | return ret; | | | |
234 | } | | | |
235 | | | | |
236 | static __inline__ void stl_u(uint32_t val, uint32_t *p) | | | |
237 | { | | | |
238 | struct __una_u32 *ptr = (struct __una_u32 *) p; | | | |
239 | ptr->x = val; | | | |
240 | } | | | |
241 | | | | |
242 | UINT32 IndirectInputOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData) | | 218 | UINT32 IndirectInputOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData) |
243 | { | | 219 | { |
244 | // if ((pParserTempData->IndirectData & 0x7f)==INDIRECT_IO_MM) pParserTempData->IndirectData|=pParserTempData->CurrentPortID; | | 220 | // if ((pParserTempData->IndirectData & 0x7f)==INDIRECT_IO_MM) pParserTempData->IndirectData|=pParserTempData->CurrentPortID; |
245 | // pParserTempData->IndirectIOTablePointer=pParserTempData->IndirectIOTable; | | 221 | // pParserTempData->IndirectIOTablePointer=pParserTempData->IndirectIOTable; |
246 | while (*pParserTempData->IndirectIOTablePointer) | | 222 | while (*pParserTempData->IndirectIOTablePointer) |
247 | { | | 223 | { |
248 | if ((pParserTempData->IndirectIOTablePointer[0] == INDIRECTIO_ID) && | | 224 | if ((pParserTempData->IndirectIOTablePointer[0] == INDIRECTIO_ID) && |
249 | (pParserTempData->IndirectIOTablePointer[1] == pParserTempData->IndirectData)) | | 225 | (pParserTempData->IndirectIOTablePointer[1] == pParserTempData->IndirectData)) |
250 | { | | 226 | { |
251 | pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize; | | 227 | pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize; |
252 | while (*pParserTempData->IndirectIOTablePointer != INDIRECTIO_END_OF_ID) | | 228 | while (*pParserTempData->IndirectIOTablePointer != INDIRECTIO_END_OF_ID) |
253 | { | | 229 | { |
254 | IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].func(pParserTempData); | | 230 | IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].func(pParserTempData); |