trunk/src/devices/cpu/m68000/m68k_in.cpp
r253008 | r253009 | |
81 | 81 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
82 | 82 | M68KMAKE_PROTOTYPE_HEADER |
83 | 83 | |
84 | | |
| 84 | // license:BSD-3-Clause |
| 85 | // copyright-holders:Karl Stenerud |
85 | 86 | /* ======================================================================== */ |
86 | 87 | /* ============================ OPCODE HANDLERS =========================== */ |
87 | 88 | /* ======================================================================== */ |
r253008 | r253009 | |
139 | 140 | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
140 | 141 | M68KMAKE_TABLE_FOOTER |
141 | 142 | |
142 | | {0, 0, 0, {0, 0, 0, 0, 0}} |
| 143 | {nullptr, 0, 0, {0, 0, 0, 0, 0}} |
143 | 144 | }; |
144 | 145 | |
145 | 146 | |
r253008 | r253009 | |
3315 | 3316 | m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */ |
3316 | 3317 | REG_PC(mc68kcpu) += 2; |
3317 | 3318 | (void)ea; /* just to avoid an 'unused variable' warning */ |
3318 | | logerror("%s at %08x: called unimplemented instruction %04x (callm)\n", |
| 3319 | mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (callm)\n", |
3319 | 3320 | (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir); |
3320 | 3321 | return; |
3321 | 3322 | } |
r253008 | r253009 | |
4414 | 4415 | { |
4415 | 4416 | if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) |
4416 | 4417 | { |
4417 | | logerror("%s at %08x: called unimplemented instruction %04x (cpbcc)\n", |
| 4418 | mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpbcc)\n", |
4418 | 4419 | (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir); |
4419 | 4420 | return; |
4420 | 4421 | } |
r253008 | r253009 | |
4426 | 4427 | { |
4427 | 4428 | if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) |
4428 | 4429 | { |
4429 | | logerror("%s at %08x: called unimplemented instruction %04x (cpdbcc)\n", |
| 4430 | mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpdbcc)\n", |
4430 | 4431 | (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir); |
4431 | 4432 | return; |
4432 | 4433 | } |
r253008 | r253009 | |
4438 | 4439 | { |
4439 | 4440 | if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type) && (mc68kcpu->has_fpu || mc68kcpu->has_pmmu)) |
4440 | 4441 | { |
4441 | | logerror("%s at %08x: called unimplemented instruction %04x (cpgen)\n", |
| 4442 | mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpgen)\n", |
4442 | 4443 | (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir); |
4443 | 4444 | return; |
4444 | 4445 | } |
r253008 | r253009 | |
4450 | 4451 | { |
4451 | 4452 | if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) |
4452 | 4453 | { |
4453 | | logerror("%s at %08x: called unimplemented instruction %04x (cpscc)\n", |
| 4454 | mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpscc)\n", |
4454 | 4455 | (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir); |
4455 | 4456 | return; |
4456 | 4457 | } |
r253008 | r253009 | |
4462 | 4463 | { |
4463 | 4464 | if(CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) |
4464 | 4465 | { |
4465 | | logerror("%s at %08x: called unimplemented instruction %04x (cptrapcc)\n", |
| 4466 | mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cptrapcc)\n", |
4466 | 4467 | (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir); |
4467 | 4468 | return; |
4468 | 4469 | } |
r253008 | r253009 | |
6827 | 6828 | (mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 0x0f; |
6828 | 6829 | } |
6829 | 6830 | |
6830 | | // logerror("movec to cacr=%04x\n", (mc68kcpu)->cacr); |
| 6831 | // mc68kcpu->logerror("movec to cacr=%04x\n", (mc68kcpu)->cacr); |
6831 | 6832 | if ((mc68kcpu)->cacr & (M68K_CACR_CI | M68K_CACR_CEI)) |
6832 | 6833 | { |
6833 | 6834 | m68ki_ic_clear(mc68kcpu); |
r253008 | r253009 | |
8239 | 8240 | { |
8240 | 8241 | if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu)) |
8241 | 8242 | { |
8242 | | logerror("68040: unhandled PFLUSHA (ir=%04x)\n", mc68kcpu->ir); |
| 8243 | mc68kcpu->logerror("68040: unhandled PFLUSHA (ir=%04x)\n", mc68kcpu->ir); |
8243 | 8244 | return; |
8244 | 8245 | } |
8245 | 8246 | m68ki_exception_1111(mc68kcpu); |
r253008 | r253009 | |
8249 | 8250 | { |
8250 | 8251 | if ((CPU_TYPE_IS_EC020_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu)) |
8251 | 8252 | { |
8252 | | logerror("68040: unhandled PFLUSHAN (ir=%04x)\n", mc68kcpu->ir); |
| 8253 | mc68kcpu->logerror("68040: unhandled PFLUSHAN (ir=%04x)\n", mc68kcpu->ir); |
8253 | 8254 | return; |
8254 | 8255 | } |
8255 | 8256 | m68ki_exception_1111(mc68kcpu); |
r253008 | r253009 | |
8271 | 8272 | { |
8272 | 8273 | if ((CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type)) && ((mc68kcpu)->has_pmmu)) |
8273 | 8274 | { |
8274 | | logerror("68040: unhandled PTEST\n"); |
| 8275 | mc68kcpu->logerror("68040: unhandled PTEST\n"); |
8275 | 8276 | return; |
8276 | 8277 | } |
8277 | 8278 | else |
r253008 | r253009 | |
9151 | 9152 | if(CPU_TYPE_IS_020_VARIANT((mc68kcpu)->cpu_type)) |
9152 | 9153 | { |
9153 | 9154 | m68ki_trace_t0(mc68kcpu); /* auto-disable (see m68kcpu.h) */ |
9154 | | logerror("%s at %08x: called unimplemented instruction %04x (rtm)\n", |
| 9155 | mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (rtm)\n", |
9155 | 9156 | (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir); |
9156 | 9157 | return; |
9157 | 9158 | } |
r253008 | r253009 | |
10515 | 10516 | UINT16 ir = mc68kcpu->ir; |
10516 | 10517 | UINT8 cache = (ir >> 6) & 3; |
10517 | 10518 | // UINT8 scope = (ir >> 3) & 3; |
10518 | | // logerror("68040 %s: pc=%08x ir=%04x cache=%d scope=%d register=%d\n", ir & 0x0020 ? "cpush" : "cinv", REG_PPC(mc68kcpu), ir, cache, scope, ir & 7); |
| 10519 | // mc68kcpu->logerror("68040 %s: pc=%08x ir=%04x cache=%d scope=%d register=%d\n", ir & 0x0020 ? "cpush" : "cinv", REG_PPC(mc68kcpu), ir, cache, scope, ir & 7); |
10519 | 10520 | switch (cache) |
10520 | 10521 | { |
10521 | 10522 | case 2: |
r253008 | r253009 | |
10532 | 10533 | { |
10533 | 10534 | if(CPU_TYPE_IS_040_PLUS((mc68kcpu)->cpu_type)) |
10534 | 10535 | { |
10535 | | logerror("%s at %08x: called unimplemented instruction %04x (cpush)\n", |
| 10536 | mc68kcpu->logerror("%s at %08x: called unimplemented instruction %04x (cpush)\n", |
10536 | 10537 | (mc68kcpu)->tag(), REG_PC(mc68kcpu) - 2, (mc68kcpu)->ir); |
10537 | 10538 | return; |
10538 | 10539 | } |
trunk/src/devices/cpu/m68000/m68kops.cpp
r253008 | r253009 | |
5311 | 5311 | UINT32 mask_base; |
5312 | 5312 | UINT32 data_long; |
5313 | 5313 | UINT32 mask_long; |
5314 | | UINT32 data_byte; |
5315 | | UINT32 mask_byte; |
| 5314 | UINT32 data_byte = 0; |
| 5315 | UINT32 mask_byte = 0; |
5316 | 5316 | UINT32 ea = EA_AY_AI_8(mc68kcpu); |
5317 | 5317 | |
5318 | 5318 | |
r253008 | r253009 | |
5365 | 5365 | UINT32 mask_base; |
5366 | 5366 | UINT32 data_long; |
5367 | 5367 | UINT32 mask_long; |
5368 | | UINT32 data_byte; |
5369 | | UINT32 mask_byte; |
| 5368 | UINT32 data_byte = 0; |
| 5369 | UINT32 mask_byte = 0; |
5370 | 5370 | UINT32 ea = EA_AY_DI_8(mc68kcpu); |
5371 | 5371 | |
5372 | 5372 | |
r253008 | r253009 | |
5419 | 5419 | UINT32 mask_base; |
5420 | 5420 | UINT32 data_long; |
5421 | 5421 | UINT32 mask_long; |
5422 | | UINT32 data_byte; |
5423 | | UINT32 mask_byte; |
| 5422 | UINT32 data_byte = 0; |
| 5423 | UINT32 mask_byte = 0; |
5424 | 5424 | UINT32 ea = EA_AY_IX_8(mc68kcpu); |
5425 | 5425 | |
5426 | 5426 | |
r253008 | r253009 | |
5473 | 5473 | UINT32 mask_base; |
5474 | 5474 | UINT32 data_long; |
5475 | 5475 | UINT32 mask_long; |
5476 | | UINT32 data_byte; |
5477 | | UINT32 mask_byte; |
| 5476 | UINT32 data_byte = 0; |
| 5477 | UINT32 mask_byte = 0; |
5478 | 5478 | UINT32 ea = EA_AW_8(mc68kcpu); |
5479 | 5479 | |
5480 | 5480 | |
r253008 | r253009 | |
5527 | 5527 | UINT32 mask_base; |
5528 | 5528 | UINT32 data_long; |
5529 | 5529 | UINT32 mask_long; |
5530 | | UINT32 data_byte; |
5531 | | UINT32 mask_byte; |
| 5530 | UINT32 data_byte = 0; |
| 5531 | UINT32 mask_byte = 0; |
5532 | 5532 | UINT32 ea = EA_AL_8(mc68kcpu); |
5533 | 5533 | |
5534 | 5534 | |
r253008 | r253009 | |
5618 | 5618 | UINT32 mask_base; |
5619 | 5619 | UINT32 data_long; |
5620 | 5620 | UINT32 mask_long; |
5621 | | UINT32 data_byte; |
5622 | | UINT32 mask_byte; |
| 5621 | UINT32 data_byte = 0; |
| 5622 | UINT32 mask_byte = 0; |
5623 | 5623 | UINT32 ea = EA_AY_AI_8(mc68kcpu); |
5624 | 5624 | |
5625 | 5625 | |
r253008 | r253009 | |
5672 | 5672 | UINT32 mask_base; |
5673 | 5673 | UINT32 data_long; |
5674 | 5674 | UINT32 mask_long; |
5675 | | UINT32 data_byte; |
5676 | | UINT32 mask_byte; |
| 5675 | UINT32 data_byte = 0; |
| 5676 | UINT32 mask_byte = 0; |
5677 | 5677 | UINT32 ea = EA_AY_DI_8(mc68kcpu); |
5678 | 5678 | |
5679 | 5679 | |
r253008 | r253009 | |
5726 | 5726 | UINT32 mask_base; |
5727 | 5727 | UINT32 data_long; |
5728 | 5728 | UINT32 mask_long; |
5729 | | UINT32 data_byte; |
5730 | | UINT32 mask_byte; |
| 5729 | UINT32 data_byte = 0; |
| 5730 | UINT32 mask_byte = 0; |
5731 | 5731 | UINT32 ea = EA_AY_IX_8(mc68kcpu); |
5732 | 5732 | |
5733 | 5733 | |
r253008 | r253009 | |
5780 | 5780 | UINT32 mask_base; |
5781 | 5781 | UINT32 data_long; |
5782 | 5782 | UINT32 mask_long; |
5783 | | UINT32 data_byte; |
5784 | | UINT32 mask_byte; |
| 5783 | UINT32 data_byte = 0; |
| 5784 | UINT32 mask_byte = 0; |
5785 | 5785 | UINT32 ea = EA_AW_8(mc68kcpu); |
5786 | 5786 | |
5787 | 5787 | |
r253008 | r253009 | |
5834 | 5834 | UINT32 mask_base; |
5835 | 5835 | UINT32 data_long; |
5836 | 5836 | UINT32 mask_long; |
5837 | | UINT32 data_byte; |
5838 | | UINT32 mask_byte; |
| 5837 | UINT32 data_byte = 0; |
| 5838 | UINT32 mask_byte = 0; |
5839 | 5839 | UINT32 ea = EA_AL_8(mc68kcpu); |
5840 | 5840 | |
5841 | 5841 | |
r253008 | r253009 | |
7124 | 7124 | UINT32 mask_base; |
7125 | 7125 | UINT32 data_long; |
7126 | 7126 | UINT32 mask_long; |
7127 | | UINT32 data_byte; |
7128 | | UINT32 mask_byte; |
| 7127 | UINT32 data_byte = 0; |
| 7128 | UINT32 mask_byte = 0; |
7129 | 7129 | UINT32 ea = EA_AY_AI_8(mc68kcpu); |
7130 | 7130 | |
7131 | 7131 | |
r253008 | r253009 | |
7176 | 7176 | if((width + offset) > 32) |
7177 | 7177 | { |
7178 | 7178 | mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); |
7179 | | insert_byte = MASK_OUT_ABOVE_8(insert_base); |
| 7179 | insert_byte = MASK_OUT_ABOVE_8(insert_base) << (8-offset); |
7180 | 7180 | data_byte = m68ki_read_8((mc68kcpu), ea+4); |
7181 | | (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); |
| 7181 | (mc68kcpu)->not_z_flag |= (insert_byte & mask_byte); |
7182 | 7182 | m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte); |
7183 | 7183 | } |
7184 | 7184 | return; |
r253008 | r253009 | |
7200 | 7200 | UINT32 mask_base; |
7201 | 7201 | UINT32 data_long; |
7202 | 7202 | UINT32 mask_long; |
7203 | | UINT32 data_byte; |
7204 | | UINT32 mask_byte; |
| 7203 | UINT32 data_byte = 0; |
| 7204 | UINT32 mask_byte = 0; |
7205 | 7205 | UINT32 ea = EA_AY_DI_8(mc68kcpu); |
7206 | 7206 | |
7207 | 7207 | |
r253008 | r253009 | |
7252 | 7252 | if((width + offset) > 32) |
7253 | 7253 | { |
7254 | 7254 | mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); |
7255 | | insert_byte = MASK_OUT_ABOVE_8(insert_base); |
| 7255 | insert_byte = MASK_OUT_ABOVE_8(insert_base) << (8-offset); |
7256 | 7256 | data_byte = m68ki_read_8((mc68kcpu), ea+4); |
7257 | | (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); |
| 7257 | (mc68kcpu)->not_z_flag |= (insert_byte & mask_byte); |
7258 | 7258 | m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte); |
7259 | 7259 | } |
7260 | 7260 | return; |
r253008 | r253009 | |
7276 | 7276 | UINT32 mask_base; |
7277 | 7277 | UINT32 data_long; |
7278 | 7278 | UINT32 mask_long; |
7279 | | UINT32 data_byte; |
7280 | | UINT32 mask_byte; |
| 7279 | UINT32 data_byte = 0; |
| 7280 | UINT32 mask_byte = 0; |
7281 | 7281 | UINT32 ea = EA_AY_IX_8(mc68kcpu); |
7282 | 7282 | |
7283 | 7283 | |
r253008 | r253009 | |
7328 | 7328 | if((width + offset) > 32) |
7329 | 7329 | { |
7330 | 7330 | mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); |
7331 | | insert_byte = MASK_OUT_ABOVE_8(insert_base); |
| 7331 | insert_byte = MASK_OUT_ABOVE_8(insert_base) << (8-offset); |
7332 | 7332 | data_byte = m68ki_read_8((mc68kcpu), ea+4); |
7333 | | (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); |
| 7333 | (mc68kcpu)->not_z_flag |= (insert_byte & mask_byte); |
7334 | 7334 | m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte); |
7335 | 7335 | } |
7336 | 7336 | return; |
r253008 | r253009 | |
7352 | 7352 | UINT32 mask_base; |
7353 | 7353 | UINT32 data_long; |
7354 | 7354 | UINT32 mask_long; |
7355 | | UINT32 data_byte; |
7356 | | UINT32 mask_byte; |
| 7355 | UINT32 data_byte = 0; |
| 7356 | UINT32 mask_byte = 0; |
7357 | 7357 | UINT32 ea = EA_AW_8(mc68kcpu); |
7358 | 7358 | |
7359 | 7359 | |
r253008 | r253009 | |
7404 | 7404 | if((width + offset) > 32) |
7405 | 7405 | { |
7406 | 7406 | mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); |
7407 | | insert_byte = MASK_OUT_ABOVE_8(insert_base); |
| 7407 | insert_byte = MASK_OUT_ABOVE_8(insert_base) << (8-offset); |
7408 | 7408 | data_byte = m68ki_read_8((mc68kcpu), ea+4); |
7409 | | (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); |
| 7409 | (mc68kcpu)->not_z_flag |= (insert_byte & mask_byte); |
7410 | 7410 | m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte); |
7411 | 7411 | } |
7412 | 7412 | return; |
r253008 | r253009 | |
7428 | 7428 | UINT32 mask_base; |
7429 | 7429 | UINT32 data_long; |
7430 | 7430 | UINT32 mask_long; |
7431 | | UINT32 data_byte; |
7432 | | UINT32 mask_byte; |
| 7431 | UINT32 data_byte = 0; |
| 7432 | UINT32 mask_byte = 0; |
7433 | 7433 | UINT32 ea = EA_AL_8(mc68kcpu); |
7434 | 7434 | |
7435 | 7435 | |
r253008 | r253009 | |
7480 | 7480 | if((width + offset) > 32) |
7481 | 7481 | { |
7482 | 7482 | mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset); |
7483 | | insert_byte = MASK_OUT_ABOVE_8(insert_base); |
| 7483 | insert_byte = MASK_OUT_ABOVE_8(insert_base) << (8-offset); |
7484 | 7484 | data_byte = m68ki_read_8((mc68kcpu), ea+4); |
7485 | | (mc68kcpu)->not_z_flag |= (data_byte & mask_byte); |
| 7485 | (mc68kcpu)->not_z_flag |= (insert_byte & mask_byte); |
7486 | 7486 | m68ki_write_8((mc68kcpu), ea+4, (data_byte & ~mask_byte) | insert_byte); |
7487 | 7487 | } |
7488 | 7488 | return; |
r253008 | r253009 | |
7538 | 7538 | UINT32 mask_base; |
7539 | 7539 | UINT32 data_long; |
7540 | 7540 | UINT32 mask_long; |
7541 | | UINT32 data_byte; |
7542 | | UINT32 mask_byte; |
| 7541 | UINT32 data_byte = 0; |
| 7542 | UINT32 mask_byte = 0; |
7543 | 7543 | UINT32 ea = EA_AY_AI_8(mc68kcpu); |
7544 | 7544 | |
7545 | 7545 | if(BIT_B(word2)) |
r253008 | r253009 | |
7591 | 7591 | UINT32 mask_base; |
7592 | 7592 | UINT32 data_long; |
7593 | 7593 | UINT32 mask_long; |
7594 | | UINT32 data_byte; |
7595 | | UINT32 mask_byte; |
| 7594 | UINT32 data_byte = 0; |
| 7595 | UINT32 mask_byte = 0; |
7596 | 7596 | UINT32 ea = EA_AY_DI_8(mc68kcpu); |
7597 | 7597 | |
7598 | 7598 | if(BIT_B(word2)) |
r253008 | r253009 | |
7644 | 7644 | UINT32 mask_base; |
7645 | 7645 | UINT32 data_long; |
7646 | 7646 | UINT32 mask_long; |
7647 | | UINT32 data_byte; |
7648 | | UINT32 mask_byte; |
| 7647 | UINT32 data_byte = 0; |
| 7648 | UINT32 mask_byte = 0; |
7649 | 7649 | UINT32 ea = EA_AY_IX_8(mc68kcpu); |
7650 | 7650 | |
7651 | 7651 | if(BIT_B(word2)) |
r253008 | r253009 | |
7697 | 7697 | UINT32 mask_base; |
7698 | 7698 | UINT32 data_long; |
7699 | 7699 | UINT32 mask_long; |
7700 | | UINT32 data_byte; |
7701 | | UINT32 mask_byte; |
| 7700 | UINT32 data_byte = 0; |
| 7701 | UINT32 mask_byte = 0; |
7702 | 7702 | UINT32 ea = EA_AW_8(mc68kcpu); |
7703 | 7703 | |
7704 | 7704 | if(BIT_B(word2)) |
r253008 | r253009 | |
7750 | 7750 | UINT32 mask_base; |
7751 | 7751 | UINT32 data_long; |
7752 | 7752 | UINT32 mask_long; |
7753 | | UINT32 data_byte; |
7754 | | UINT32 mask_byte; |
| 7753 | UINT32 data_byte = 0; |
| 7754 | UINT32 mask_byte = 0; |
7755 | 7755 | UINT32 ea = EA_AL_8(mc68kcpu); |
7756 | 7756 | |
7757 | 7757 | if(BIT_B(word2)) |
r253008 | r253009 | |
7838 | 7838 | UINT32 mask_base; |
7839 | 7839 | UINT32 data_long; |
7840 | 7840 | UINT32 mask_long; |
7841 | | UINT32 data_byte; |
7842 | | UINT32 mask_byte; |
| 7841 | UINT32 data_byte = 0; |
| 7842 | UINT32 mask_byte = 0; |
7843 | 7843 | UINT32 ea = EA_AY_AI_8(mc68kcpu); |
7844 | 7844 | |
7845 | 7845 | if(BIT_B(word2)) |
r253008 | r253009 | |
7889 | 7889 | UINT32 mask_base; |
7890 | 7890 | UINT32 data_long; |
7891 | 7891 | UINT32 mask_long; |
7892 | | UINT32 data_byte; |
7893 | | UINT32 mask_byte; |
| 7892 | UINT32 data_byte = 0; |
| 7893 | UINT32 mask_byte = 0; |
7894 | 7894 | UINT32 ea = EA_AY_DI_8(mc68kcpu); |
7895 | 7895 | |
7896 | 7896 | if(BIT_B(word2)) |
r253008 | r253009 | |
7940 | 7940 | UINT32 mask_base; |
7941 | 7941 | UINT32 data_long; |
7942 | 7942 | UINT32 mask_long; |
7943 | | UINT32 data_byte; |
7944 | | UINT32 mask_byte; |
| 7943 | UINT32 data_byte = 0; |
| 7944 | UINT32 mask_byte = 0; |
7945 | 7945 | UINT32 ea = EA_AY_IX_8(mc68kcpu); |
7946 | 7946 | |
7947 | 7947 | if(BIT_B(word2)) |
r253008 | r253009 | |
7991 | 7991 | UINT32 mask_base; |
7992 | 7992 | UINT32 data_long; |
7993 | 7993 | UINT32 mask_long; |
7994 | | UINT32 data_byte; |
7995 | | UINT32 mask_byte; |
| 7994 | UINT32 data_byte = 0; |
| 7995 | UINT32 mask_byte = 0; |
7996 | 7996 | UINT32 ea = EA_AW_8(mc68kcpu); |
7997 | 7997 | |
7998 | 7998 | if(BIT_B(word2)) |
r253008 | r253009 | |
8042 | 8042 | UINT32 mask_base; |
8043 | 8043 | UINT32 data_long; |
8044 | 8044 | UINT32 mask_long; |
8045 | | UINT32 data_byte; |
8046 | | UINT32 mask_byte; |
| 8045 | UINT32 data_byte = 0; |
| 8046 | UINT32 mask_byte = 0; |
8047 | 8047 | UINT32 ea = EA_AL_8(mc68kcpu); |
8048 | 8048 | |
8049 | 8049 | if(BIT_B(word2)) |
r253008 | r253009 | |
8093 | 8093 | UINT32 mask_base; |
8094 | 8094 | UINT32 data_long; |
8095 | 8095 | UINT32 mask_long; |
8096 | | UINT32 data_byte; |
8097 | | UINT32 mask_byte; |
| 8096 | UINT32 data_byte = 0; |
| 8097 | UINT32 mask_byte = 0; |
8098 | 8098 | UINT32 ea = EA_PCDI_8(mc68kcpu); |
8099 | 8099 | |
8100 | 8100 | if(BIT_B(word2)) |
r253008 | r253009 | |
8144 | 8144 | UINT32 mask_base; |
8145 | 8145 | UINT32 data_long; |
8146 | 8146 | UINT32 mask_long; |
8147 | | UINT32 data_byte; |
8148 | | UINT32 mask_byte; |
| 8147 | UINT32 data_byte = 0; |
| 8148 | UINT32 mask_byte = 0; |
8149 | 8149 | UINT32 ea = EA_PCIX_8(mc68kcpu); |
8150 | 8150 | |
8151 | 8151 | if(BIT_B(word2)) |
r253008 | r253009 | |
13608 | 13608 | { |
13609 | 13609 | UINT32 word2 = OPER_I_16(mc68kcpu); |
13610 | 13610 | UINT64 divisor = DY(mc68kcpu); |
13611 | | UINT64 dividend; |
13612 | | UINT64 quotient; |
13613 | | UINT64 remainder; |
| 13611 | UINT64 dividend = 0; |
| 13612 | UINT64 quotient = 0; |
| 13613 | UINT64 remainder = 0; |
13614 | 13614 | |
13615 | 13615 | if(divisor != 0) |
13616 | 13616 | { |
r253008 | r253009 | |
13678 | 13678 | { |
13679 | 13679 | UINT32 word2 = OPER_I_16(mc68kcpu); |
13680 | 13680 | UINT64 divisor = OPER_AY_AI_32(mc68kcpu); |
13681 | | UINT64 dividend; |
13682 | | UINT64 quotient; |
13683 | | UINT64 remainder; |
| 13681 | UINT64 dividend = 0; |
| 13682 | UINT64 quotient = 0; |
| 13683 | UINT64 remainder = 0; |
13684 | 13684 | |
13685 | 13685 | if(divisor != 0) |
13686 | 13686 | { |
r253008 | r253009 | |
13748 | 13748 | { |
13749 | 13749 | UINT32 word2 = OPER_I_16(mc68kcpu); |
13750 | 13750 | UINT64 divisor = OPER_AY_PI_32(mc68kcpu); |
13751 | | UINT64 dividend; |
13752 | | UINT64 quotient; |
13753 | | UINT64 remainder; |
| 13751 | UINT64 dividend = 0; |
| 13752 | UINT64 quotient = 0; |
| 13753 | UINT64 remainder = 0; |
13754 | 13754 | |
13755 | 13755 | if(divisor != 0) |
13756 | 13756 | { |
r253008 | r253009 | |
13818 | 13818 | { |
13819 | 13819 | UINT32 word2 = OPER_I_16(mc68kcpu); |
13820 | 13820 | UINT64 divisor = OPER_AY_PD_32(mc68kcpu); |
13821 | | UINT64 dividend; |
13822 | | UINT64 quotient; |
13823 | | UINT64 remainder; |
| 13821 | UINT64 dividend = 0; |
| 13822 | UINT64 quotient = 0; |
| 13823 | UINT64 remainder = 0; |
13824 | 13824 | |
13825 | 13825 | if(divisor != 0) |
13826 | 13826 | { |
r253008 | r253009 | |
13888 | 13888 | { |
13889 | 13889 | UINT32 word2 = OPER_I_16(mc68kcpu); |
13890 | 13890 | UINT64 divisor = OPER_AY_DI_32(mc68kcpu); |
13891 | | UINT64 dividend; |
13892 | | UINT64 quotient; |
13893 | | UINT64 remainder; |
| 13891 | UINT64 dividend = 0; |
| 13892 | UINT64 quotient = 0; |
| 13893 | UINT64 remainder = 0; |
13894 | 13894 | |
13895 | 13895 | if(divisor != 0) |
13896 | 13896 | { |
r253008 | r253009 | |
13958 | 13958 | { |
13959 | 13959 | UINT32 word2 = OPER_I_16(mc68kcpu); |
13960 | 13960 | UINT64 divisor = OPER_AY_IX_32(mc68kcpu); |
13961 | | UINT64 dividend; |
13962 | | UINT64 quotient; |
13963 | | UINT64 remainder; |
| 13961 | UINT64 dividend = 0; |
| 13962 | UINT64 quotient = 0; |
| 13963 | UINT64 remainder = 0; |
13964 | 13964 | |
13965 | 13965 | if(divisor != 0) |
13966 | 13966 | { |
r253008 | r253009 | |
14028 | 14028 | { |
14029 | 14029 | UINT32 word2 = OPER_I_16(mc68kcpu); |
14030 | 14030 | UINT64 divisor = OPER_AW_32(mc68kcpu); |
14031 | | UINT64 dividend; |
14032 | | UINT64 quotient; |
14033 | | UINT64 remainder; |
| 14031 | UINT64 dividend = 0; |
| 14032 | UINT64 quotient = 0; |
| 14033 | UINT64 remainder = 0; |
14034 | 14034 | |
14035 | 14035 | if(divisor != 0) |
14036 | 14036 | { |
r253008 | r253009 | |
14098 | 14098 | { |
14099 | 14099 | UINT32 word2 = OPER_I_16(mc68kcpu); |
14100 | 14100 | UINT64 divisor = OPER_AL_32(mc68kcpu); |
14101 | | UINT64 dividend; |
14102 | | UINT64 quotient; |
14103 | | UINT64 remainder; |
| 14101 | UINT64 dividend = 0; |
| 14102 | UINT64 quotient = 0; |
| 14103 | UINT64 remainder = 0; |
14104 | 14104 | |
14105 | 14105 | if(divisor != 0) |
14106 | 14106 | { |
r253008 | r253009 | |
14168 | 14168 | { |
14169 | 14169 | UINT32 word2 = OPER_I_16(mc68kcpu); |
14170 | 14170 | UINT64 divisor = OPER_PCDI_32(mc68kcpu); |
14171 | | UINT64 dividend; |
14172 | | UINT64 quotient; |
14173 | | UINT64 remainder; |
| 14171 | UINT64 dividend = 0; |
| 14172 | UINT64 quotient = 0; |
| 14173 | UINT64 remainder = 0; |
14174 | 14174 | |
14175 | 14175 | if(divisor != 0) |
14176 | 14176 | { |
r253008 | r253009 | |
14238 | 14238 | { |
14239 | 14239 | UINT32 word2 = OPER_I_16(mc68kcpu); |
14240 | 14240 | UINT64 divisor = OPER_PCIX_32(mc68kcpu); |
14241 | | UINT64 dividend; |
14242 | | UINT64 quotient; |
14243 | | UINT64 remainder; |
| 14241 | UINT64 dividend = 0; |
| 14242 | UINT64 quotient = 0; |
| 14243 | UINT64 remainder = 0; |
14244 | 14244 | |
14245 | 14245 | if(divisor != 0) |
14246 | 14246 | { |
r253008 | r253009 | |
14308 | 14308 | { |
14309 | 14309 | UINT32 word2 = OPER_I_16(mc68kcpu); |
14310 | 14310 | UINT64 divisor = OPER_I_32(mc68kcpu); |
14311 | | UINT64 dividend; |
14312 | | UINT64 quotient; |
14313 | | UINT64 remainder; |
| 14311 | UINT64 dividend = 0; |
| 14312 | UINT64 quotient = 0; |
| 14313 | UINT64 remainder = 0; |
14314 | 14314 | |
14315 | 14315 | if(divisor != 0) |
14316 | 14316 | { |
r253008 | r253009 | |
21288 | 21288 | (mc68kcpu)->cacr = REG_DA(mc68kcpu)[(word2 >> 12) & 15] & 0x0f; |
21289 | 21289 | } |
21290 | 21290 | |
21291 | | // logerror("movec to cacr=%04x\n", (mc68kcpu)->cacr); |
| 21291 | // mc68kcpu->logerror("movec to cacr=%04x\n", (mc68kcpu)->cacr); |
21292 | 21292 | if ((mc68kcpu)->cacr & (M68K_CACR_CI | M68K_CACR_CEI)) |
21293 | 21293 | { |
21294 | 21294 | m68ki_ic_clear(mc68kcpu); |
r253008 | r253009 | |
32728 | 32728 | UINT16 ir = mc68kcpu->ir; |
32729 | 32729 | UINT8 cache = (ir >> 6) & 3; |
32730 | 32730 | // UINT8 scope = (ir >> 3) & 3; |
32731 | | // logerror("68040 %s: pc=%08x ir=%04x cache=%d scope=%d register=%d\n", ir & 0x0020 ? "cpush" : "cinv", REG_PPC(mc68kcpu), ir, cache, scope, ir & 7); |
| 32731 | // mc68kcpu->logerror("68040 %s: pc=%08x ir=%04x cache=%d scope=%d register=%d\n", ir & 0x0020 ? "cpush" : "cinv", REG_PPC(mc68kcpu), ir, cache, scope, ir & 7); |
32732 | 32732 | switch (cache) |
32733 | 32733 | { |
32734 | 32734 | case 2: |
r253008 | r253009 | |
34872 | 34872 | /* ======================================================================== */ |
34873 | 34873 | /* ============================== END OF FILE ============================= */ |
34874 | 34874 | /* ======================================================================== */ |
| 34875 | |
| 34876 | |