MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / genamode2x

Function genamode2x

src/gencpu.cpp:3361–3912  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3359* XJ - 2006/11/13 */
3360
3361static void genamode2x (amodes mode, const char *reg, wordsizes size, const char *name, int getv, int movem, int flags, int fetchmode)
3362{
3363 char namea[100];
3364 bool rmw = false;
3365 int pc_68000_offset = m68k_pc_offset;
3366 int pc_68000_offset_fetch = 0;
3367 int pc_68000_offset_store = 0;
3368 bool addr = false;
3369 // common EA prefetch bus error PC behavior
3370 int pcflag = !(flags & (GF_PCM2 | GF_PCP2)) ? GF_PCM2 : 0;
3371
3372 sprintf(namea, "%sa", name);
3373 if ((flags & GF_RMW) && using_mmu == 68060) {
3374 strcpy (rmw_varname, name);
3375 candormw = true;
3376 rmw = true;
3377 }
3378
3379 if (mode == Ad8r || mode == PC8r) {
3380 genamode8r_offset[genamode_cnt] = m68k_pc_total + m68k_pc_offset;
3381 genamode_cnt++;
3382 }
3383
3384 loopmode_access();
3385
3386 switch (mode) {
3387 case Dreg:
3388 if (movem)
3389 term();
3390 if (getv == 1)
3391 switch (size) {
3392 case sz_byte:
3393#ifdef USE_DUBIOUS_BIGENDIAN_OPTIMIZATION
3394 /* This causes the target compiler to generate better code on few systems */
3395 out("uae_s8 %s = ((uae_u8*)&m68k_dreg(regs, %s))[3];\n", name, reg);
3396#else
3397 out("uae_s8 %s = m68k_dreg(regs, %s);\n", name, reg);
3398#endif
3399 break;
3400 case sz_word:
3401#ifdef USE_DUBIOUS_BIGENDIAN_OPTIMIZATION
3402 out("uae_s16 %s = ((uae_s16*)&m68k_dreg(regs, %s))[1];\n", name, reg);
3403#else
3404 out("uae_s16 %s = m68k_dreg(regs, %s);\n", name, reg);
3405#endif
3406 break;
3407 case sz_long:
3408 out("uae_s32 %s = m68k_dreg(regs, %s);\n", name, reg);
3409 break;
3410 default:
3411 term();
3412 }
3413 maybeaddop_ce020 (flags);
3414 syncmovepc (getv, flags);
3415 strcpy(g_srcname, name);
3416 return;
3417 case Areg:
3418 if (movem)

Callers 4

genamode2Function · 0.85
genamodeFunction · 0.85
genamode3Function · 0.85
gen_opcodeFunction · 0.85

Calls 15

loopmode_accessFunction · 0.85
termFunction · 0.85
outFunction · 0.85
maybeaddop_ce020Function · 0.85
syncmovepcFunction · 0.85
addcycles_ce020Function · 0.85
start_mmu040_movemFunction · 0.85
addcycles000Function · 0.85
gen_nextilong2Function · 0.85
do_instruction_buserrorFunction · 0.85
check_address_errorFunction · 0.85
fill_prefetch_nextFunction · 0.85

Tested by

no test coverage detected