src/emu/cpu/i386/i386op16.c
| r15064 | r15065 | |
| 365 | 365 | |
| 366 | 366 | CYCLES(cpustate,CYCLES_BT_REG_REG); |
| 367 | 367 | } else { |
| 368 | | UINT32 ea = GetEA(cpustate,modrm,0); |
| 368 | UINT8 segment; |
| 369 | UINT32 ea = GetNonTranslatedEA(cpustate,modrm,&segment); |
| 369 | 370 | UINT16 bit = LOAD_REG16(modrm); |
| 370 | 371 | ea += 2*(bit/16); |
| 371 | | ea = (cpustate->address_size)?ea:(ea&0xffff); |
| 372 | ea = i386_translate(cpustate,segment,(cpustate->address_size)?ea:(ea&0xffff),0); |
| 372 | 373 | bit %= 16; |
| 373 | 374 | UINT16 dst = READ16(cpustate,ea); |
| 374 | 375 | |
| r15064 | r15065 | |
| 397 | 398 | STORE_RM16(modrm, dst); |
| 398 | 399 | CYCLES(cpustate,CYCLES_BTC_REG_REG); |
| 399 | 400 | } else { |
| 400 | | UINT32 ea = GetEA(cpustate,modrm,1); |
| 401 | UINT8 segment; |
| 402 | UINT32 ea = GetNonTranslatedEA(cpustate,modrm,&segment); |
| 401 | 403 | UINT16 bit = LOAD_REG16(modrm); |
| 402 | 404 | ea += 2*(bit/16); |
| 403 | | ea = (cpustate->address_size)?ea:(ea&0xffff); |
| 405 | ea = i386_translate(cpustate,segment,(cpustate->address_size)?ea:(ea&0xffff),1); |
| 404 | 406 | bit %= 16; |
| 405 | 407 | UINT16 dst = READ16(cpustate,ea); |
| 406 | 408 | |
| r15064 | r15065 | |
| 431 | 433 | STORE_RM16(modrm, dst); |
| 432 | 434 | CYCLES(cpustate,CYCLES_BTR_REG_REG); |
| 433 | 435 | } else { |
| 434 | | UINT32 ea = GetEA(cpustate,modrm,1); |
| 436 | UINT8 segment; |
| 437 | UINT32 ea = GetNonTranslatedEA(cpustate,modrm,&segment); |
| 435 | 438 | UINT16 bit = LOAD_REG16(modrm); |
| 436 | 439 | ea += 2*(bit/16); |
| 437 | | ea = (cpustate->address_size)?ea:(ea&0xffff); |
| 440 | ea = i386_translate(cpustate,segment,(cpustate->address_size)?ea:(ea&0xffff),1); |
| 438 | 441 | bit %= 16; |
| 439 | 442 | UINT16 dst = READ16(cpustate,ea); |
| 440 | 443 | |
| r15064 | r15065 | |
| 465 | 468 | STORE_RM16(modrm, dst); |
| 466 | 469 | CYCLES(cpustate,CYCLES_BTS_REG_REG); |
| 467 | 470 | } else { |
| 468 | | UINT32 ea = GetEA(cpustate,modrm,1); |
| 471 | UINT8 segment; |
| 472 | UINT32 ea = GetNonTranslatedEA(cpustate,modrm,&segment); |
| 469 | 473 | UINT16 bit = LOAD_REG16(modrm); |
| 470 | 474 | ea += 2*(bit/16); |
| 471 | | ea = (cpustate->address_size)?ea:(ea&0xffff); |
| 475 | ea = i386_translate(cpustate,segment,(cpustate->address_size)?ea:(ea&0xffff),1); |
| 472 | 476 | bit %= 16; |
| 473 | 477 | UINT16 dst = READ16(cpustate,ea); |
| 474 | 478 | |
| r15064 | r15065 | |
| 1161 | 1165 | static void I386OP(lea16)(i386_state *cpustate) // Opcode 0x8d |
| 1162 | 1166 | { |
| 1163 | 1167 | UINT8 modrm = FETCH(cpustate); |
| 1164 | | UINT32 ea = GetNonTranslatedEA(cpustate,modrm); |
| 1168 | UINT32 ea = GetNonTranslatedEA(cpustate,modrm,NULL); |
| 1165 | 1169 | STORE_REG16(modrm, ea); |
| 1166 | 1170 | CYCLES(cpustate,CYCLES_LEA); |
| 1167 | 1171 | } |
src/emu/cpu/i386/i386op32.c
| r15064 | r15065 | |
| 341 | 341 | |
| 342 | 342 | CYCLES(cpustate,CYCLES_BT_REG_REG); |
| 343 | 343 | } else { |
| 344 | | UINT32 ea = GetEA(cpustate,modrm,0); |
| 344 | UINT8 segment; |
| 345 | UINT32 ea = GetNonTranslatedEA(cpustate,modrm,&segment); |
| 345 | 346 | UINT32 bit = LOAD_REG32(modrm); |
| 346 | 347 | ea += 4*(bit/32); |
| 347 | | ea = (cpustate->address_size)?ea:(ea&0xffff); |
| 348 | ea = i386_translate(cpustate,segment,(cpustate->address_size)?ea:(ea&0xffff),0); |
| 348 | 349 | bit %= 32; |
| 349 | 350 | UINT32 dst = READ32(cpustate,ea); |
| 350 | 351 | |
| r15064 | r15065 | |
| 373 | 374 | STORE_RM32(modrm, dst); |
| 374 | 375 | CYCLES(cpustate,CYCLES_BTC_REG_REG); |
| 375 | 376 | } else { |
| 376 | | UINT32 ea = GetEA(cpustate,modrm,1); |
| 377 | UINT8 segment; |
| 378 | UINT32 ea = GetNonTranslatedEA(cpustate,modrm,&segment); |
| 377 | 379 | UINT32 bit = LOAD_REG32(modrm); |
| 378 | 380 | ea += 4*(bit/32); |
| 379 | | ea = (cpustate->address_size)?ea:(ea&0xffff); |
| 381 | ea = i386_translate(cpustate,segment,(cpustate->address_size)?ea:(ea&0xffff),1); |
| 380 | 382 | bit %= 32; |
| 381 | 383 | UINT32 dst = READ32(cpustate,ea); |
| 382 | 384 | |
| r15064 | r15065 | |
| 407 | 409 | STORE_RM32(modrm, dst); |
| 408 | 410 | CYCLES(cpustate,CYCLES_BTR_REG_REG); |
| 409 | 411 | } else { |
| 410 | | UINT32 ea = GetEA(cpustate,modrm,1); |
| 412 | UINT8 segment; |
| 413 | UINT32 ea = GetNonTranslatedEA(cpustate,modrm,&segment); |
| 411 | 414 | UINT32 bit = LOAD_REG32(modrm); |
| 412 | 415 | ea += 4*(bit/32); |
| 413 | | ea = (cpustate->address_size)?ea:(ea&0xffff); |
| 416 | ea = i386_translate(cpustate,segment,(cpustate->address_size)?ea:(ea&0xffff),1); |
| 414 | 417 | bit %= 32; |
| 415 | 418 | UINT32 dst = READ32(cpustate,ea); |
| 416 | 419 | |
| r15064 | r15065 | |
| 441 | 444 | STORE_RM32(modrm, dst); |
| 442 | 445 | CYCLES(cpustate,CYCLES_BTS_REG_REG); |
| 443 | 446 | } else { |
| 444 | | UINT32 ea = GetEA(cpustate,modrm,1); |
| 447 | UINT8 segment; |
| 448 | UINT32 ea = GetNonTranslatedEA(cpustate,modrm,&segment); |
| 445 | 449 | UINT32 bit = LOAD_REG32(modrm); |
| 446 | 450 | ea += 4*(bit/32); |
| 447 | | ea = (cpustate->address_size)?ea:(ea&0xffff); |
| 451 | ea = i386_translate(cpustate,segment,(cpustate->address_size)?ea:(ea&0xffff),1); |
| 448 | 452 | bit %= 32; |
| 449 | 453 | UINT32 dst = READ32(cpustate,ea); |
| 450 | 454 | |
| r15064 | r15065 | |
| 1002 | 1006 | static void I386OP(lea32)(i386_state *cpustate) // Opcode 0x8d |
| 1003 | 1007 | { |
| 1004 | 1008 | UINT8 modrm = FETCH(cpustate); |
| 1005 | | UINT32 ea = GetNonTranslatedEA(cpustate,modrm); |
| 1009 | UINT32 ea = GetNonTranslatedEA(cpustate,modrm,NULL); |
| 1006 | 1010 | if (!cpustate->address_size) |
| 1007 | 1011 | { |
| 1008 | 1012 | ea &= 0xffff; |