Fix moving of abs store across function call
This commit is contained in:
parent
68e048b945
commit
f50613704c
|
@ -219,14 +219,16 @@ void rirq_set(byte n, byte row, RIRQCode * write)
|
|||
rasterIRQRows[n] = row;
|
||||
}
|
||||
|
||||
static const byte irqai[16] = {
|
||||
static const byte irqai[20] = {
|
||||
RIRQ_ADDR_0, RIRQ_ADDR_1, RIRQ_ADDR_2, RIRQ_ADDR_3, RIRQ_ADDR_4, RIRQ_ADDR_5, RIRQ_ADDR_6, RIRQ_ADDR_7,
|
||||
RIRQ_ADDR_8, RIRQ_ADDR_9, RIRQ_ADDR_10, RIRQ_ADDR_11, RIRQ_ADDR_12, RIRQ_ADDR_13, RIRQ_ADDR_14, RIRQ_ADDR_15
|
||||
RIRQ_ADDR_8, RIRQ_ADDR_9, RIRQ_ADDR_10, RIRQ_ADDR_11, RIRQ_ADDR_12, RIRQ_ADDR_13, RIRQ_ADDR_14, RIRQ_ADDR_15,
|
||||
RIRQ_ADDR_16, RIRQ_ADDR_17, RIRQ_ADDR_18, RIRQ_ADDR_19
|
||||
};
|
||||
|
||||
static const byte irqdi[16] = {
|
||||
static const byte irqdi[20] = {
|
||||
RIRQ_DATA_0, RIRQ_DATA_1, RIRQ_DATA_2, RIRQ_DATA_3, RIRQ_DATA_4, RIRQ_DATA_5, RIRQ_DATA_6, RIRQ_DATA_7,
|
||||
RIRQ_DATA_8, RIRQ_DATA_9, RIRQ_DATA_10, RIRQ_DATA_11, RIRQ_DATA_12, RIRQ_DATA_13, RIRQ_DATA_14, RIRQ_DATA_15
|
||||
RIRQ_DATA_8, RIRQ_DATA_9, RIRQ_DATA_10, RIRQ_DATA_11, RIRQ_DATA_12, RIRQ_DATA_13, RIRQ_DATA_14, RIRQ_DATA_15,
|
||||
RIRQ_DATA_16, RIRQ_DATA_17, RIRQ_DATA_18, RIRQ_DATA_19
|
||||
};
|
||||
|
||||
void rirq_addr(RIRQCode * ic, byte n, void * addr)
|
||||
|
|
|
@ -56,7 +56,19 @@ enum RIRQCodeIndex
|
|||
RIRQ_ADDR_14 = 78,
|
||||
|
||||
RIRQ_DATA_15 = 81,
|
||||
RIRQ_ADDR_15 = 88,
|
||||
RIRQ_ADDR_15 = 83,
|
||||
|
||||
RIRQ_DATA_16 = 86,
|
||||
RIRQ_ADDR_16 = 88,
|
||||
|
||||
RIRQ_DATA_17 = 91,
|
||||
RIRQ_ADDR_17 = 93,
|
||||
|
||||
RIRQ_DATA_18 = 96,
|
||||
RIRQ_ADDR_18 = 98,
|
||||
|
||||
RIRQ_DATA_19 = 101,
|
||||
RIRQ_ADDR_19 = 103,
|
||||
};
|
||||
|
||||
// One raster interrupt operation, handles up to five writes
|
||||
|
|
|
@ -10546,6 +10546,8 @@ bool NativeCodeBasicBlock::FindPageStartAddress(int at, int reg, int& addr)
|
|||
}
|
||||
if (mIns[j + 1].mMode == ASMIM_ZERO_PAGE && (mIns[j + 1].mAddress == reg || mIns[j + 1].mAddress == reg + 1) && mIns[j + 1].ChangesAddress())
|
||||
return false;
|
||||
if (mIns[j + 1].mType == ASMIT_JSR)
|
||||
return false;
|
||||
|
||||
j--;
|
||||
}
|
||||
|
@ -16061,6 +16063,7 @@ bool NativeCodeBasicBlock::PeepHoleOptimizer(NativeCodeProcedure* proc, int pass
|
|||
|
||||
}
|
||||
|
||||
#if 1
|
||||
if (mIns[i + 0].mMode == ASMIM_INDIRECT_Y && (mIns[i + 0].mFlags & NCIF_YZERO) && !(mIns[i + 0].mLive & LIVE_CPU_REG_X))
|
||||
{
|
||||
const NativeCodeInstruction* ains;
|
||||
|
@ -16082,7 +16085,7 @@ bool NativeCodeBasicBlock::PeepHoleOptimizer(NativeCodeProcedure* proc, int pass
|
|||
progress = true;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue