cpu_arm_instr_dpi.cc Source File
Back to the index.
Go to the documentation of this file.
67 static struct arm_instr_call abortdyntrans_call = {
abortdyntrans, {0,0,0} };
78 #if defined(A__RSB) || defined(A__RSC)
87 uint32_t (*reg_func)(
struct cpu *,
struct arm_instr_call *)
88 = (uint32_t (*)(
struct cpu *,
struct arm_instr_call *))
89 (
void *)(
size_t)
ic->arg[1];
95 #if defined(A__CMP) || defined(A__CMN) || defined(A__ADC) || defined(A__ADD) \
96 || defined(A__RSC) || defined(A__RSB) || defined(A__SBC) || defined(A__SUB)
116 #if !defined(A__MOV) && !defined(A__MVN)
121 #if defined(A__MOV) || defined(A__MVN) || defined(A__TST) || defined(A__TEQ) \
122 || defined(A__AND) || defined(A__BIC) || defined(A__EOR) || defined(A__ORR)
123 #if !defined(A__REG) && !defined(A__REGSHORT) && defined(A__S)
134 if (
VAR_B & 0x80000000)
143 #if !defined(A__MOV) && !defined(A__MVN)
146 uint32_t low_pc = ((size_t)
ic - (
size_t)
147 cpu->
cd.
arm.cur_ic_page) /
sizeof(
struct arm_instr_call);
158 #if defined(A__AND) || defined(A__TST)
161 #if defined(A__EOR) || defined(A__TEQ)
164 #if defined(A__SUB) || defined(A__CMP) || defined(A__RSB)
167 #if defined(A__ADD) || defined(A__CMN)
173 #if defined(A__SBC) || defined(A__RSC)
190 #if defined(A__CMP) || defined(A__CMN) || defined(A__TST) || defined(A__TEQ)
196 uint32_t old_pc =
cpu->
pc;
201 cpu->
pc = (uint32_t)c64;
220 if ((old_pc & ~mask_within_page) ==
221 ((uint32_t)
cpu->
pc & ~mask_within_page)) {
223 ((
cpu->
pc & mask_within_page) >>
232 cpu->
cd.
arm.next_ic = &abortdyntrans_call;
236 reg(
ic->arg[2]) = c64;
238 reg(
ic->arg[2]) = c64;
249 #if defined(A__CMP) || defined(A__CMN) || defined(A__ADC) || defined(A__ADD) \
250 || defined(A__RSB) || defined(A__RSC) || defined(A__SBC) || defined(A__SUB)
256 #if defined(A__CMP) || defined(A__RSB) || defined(A__SUB) || \
257 defined(A__RSC) || defined(A__SBC)
258 if ((uint32_t)a >= (uint32_t)b)
261 #if defined(A__ADC) || defined(A__ADD) || defined(A__CMN)
270 if ((int32_t)c32 < 0)
278 #if defined(A__ADD) || defined(A__CMN)
279 if (((int32_t)a >= 0 && (int32_t)b >= 0 &&
281 ((int32_t)a < 0 && (int32_t)b < 0 &&
285 #if defined(A__SUB) || defined(A__RSB) || defined(A__CMP) || \
286 defined(A__RSC) || defined(A__SBC)
287 if (((int32_t)a >= 0 && (int32_t)b < 0 &&
289 ((int32_t)a < 0 && (int32_t)b >= 0 &&
void abortdyntrans(struct cpu *cpu, struct arm_instr_call *ic)
#define ARM_IC_ENTRIES_PER_PAGE
void A__NAME__mi(struct cpu *cpu, struct arm_instr_call *ic)
void A__NAME__ge(struct cpu *cpu, struct arm_instr_call *ic)
void A__NAME(struct cpu *cpu, struct arm_instr_call *ic)
void A__NAME__eq(struct cpu *cpu, struct arm_instr_call *ic)
#define ARM_INSTR_ALIGNMENT_SHIFT
void A__NAME__hi(struct cpu *cpu, struct arm_instr_call *ic)
void A__NAME__vs(struct cpu *cpu, struct arm_instr_call *ic)
void arm_load_register_bank(struct cpu *cpu)
struct arm_instr_call * ic
void arm_save_register_bank(struct cpu *cpu)
void A__NAME__ne(struct cpu *cpu, struct arm_instr_call *ic)
void A__NAME__vc(struct cpu *cpu, struct arm_instr_call *ic)
void A__NAME__cc(struct cpu *cpu, struct arm_instr_call *ic)
void A__NAME__pl(struct cpu *cpu, struct arm_instr_call *ic)
void A__NAME__le(struct cpu *cpu, struct arm_instr_call *ic)
void A__NAME__gt(struct cpu *cpu, struct arm_instr_call *ic)
#define quick_pc_to_pointers(cpu)
void A__NAME__lt(struct cpu *cpu, struct arm_instr_call *ic)
void A__NAME__cs(struct cpu *cpu, struct arm_instr_call *ic)
void A__NAME__ls(struct cpu *cpu, struct arm_instr_call *ic)
Generated on Tue Aug 25 2020 19:25:06 for GXemul by
1.8.18