cpu_m88k_instr_loadstore.cc Source File
Back to the index.
Go to the documentation of this file.
56 #ifdef LS_INCLUDE_GENERIC
77 int low_pc = ((size_t)
ic - (
size_t)
cpu->
cd.
m88k.cur_ic_page)
78 /
sizeof(
struct m88k_instr_call);
92 int dreg = (((uint32_t *)
ic->arg[0]) - &
cpu->
cd.
m88k.
r[0]);
93 if (dreg < 1 || dreg > 31) {
94 fatal(
"HUH? dreg = %i in cpu_m88k_instr_loadstore.c."
95 " Internal error.\n", dreg);
134 int dreg = (((uint32_t *)
ic->arg[0]) - &
cpu->
cd.
m88k.
r[0]);
136 if (dreg < 1 || dreg > 31) {
137 fatal(
"HUH? dreg = %i in cpu_m88k_instr_loadstore.c."
138 " Internal error.\n", dreg);
163 fatal(
"{ m88k dyntrans alignment exception, size = %i,"
164 " addr = %08" PRIx32
", pc = %08" PRIx32
" }\n",
LS_SIZE,
188 reg(
ic->arg[0]) = x >> 32;
189 reg(
ic->arg[0] + 4) = x;
192 reg(
ic->arg[0] + 4) = x >> 32;
213 x = ((uint64_t)
reg(
ic->arg[0]) << 32) +
reg(
ic->arg[0] + 4);
215 x = ((uint64_t)
reg(
ic->arg[0] + 4) << 32) +
reg(
ic->arg[0]);
299 #ifdef HOST_BIG_ENDIAN
300 ( *(uint16_t *)(p +
addr) );
305 #ifdef HOST_LITTLE_ENDIAN
306 ( *(uint16_t *)(p +
addr) );
321 #ifdef HOST_BIG_ENDIAN
322 ( *(uint32_t *)(p +
addr) );
327 #ifdef HOST_LITTLE_ENDIAN
328 ( *(uint32_t *)(p +
addr) );
340 #ifdef HOST_BIG_ENDIAN
341 ( *(uint32_t *)(p +
addr) );
346 #ifdef HOST_LITTLE_ENDIAN
347 ( *(uint32_t *)(p +
addr + 4) );
354 reg(
ic->arg[0] + 4) =
356 #ifdef HOST_BIG_ENDIAN
357 ( *(uint32_t *)(p +
addr + 4) );
362 #ifdef HOST_LITTLE_ENDIAN
363 ( *(uint32_t *)(p +
addr) );
378 { uint32_t x =
reg(
ic->arg[0]);
380 #ifdef HOST_BIG_ENDIAN
381 *((uint16_t *)(p+
addr)) = x; }
386 #ifdef HOST_LITTLE_ENDIAN
387 *((uint16_t *)(p+
addr)) = x; }
394 { uint32_t x =
reg(
ic->arg[0]);
396 #ifdef HOST_BIG_ENDIAN
397 *((uint32_t *)(p+
addr)) = x; }
399 p[
addr] = x >> 24; p[
addr+1] = x >> 16;
400 p[
addr+2] = x >> 8; p[
addr+3] = x; }
403 #ifdef HOST_LITTLE_ENDIAN
404 *((uint32_t *)(p+
addr)) = x; }
407 p[
addr+2] = x >> 16; p[
addr+3] = x >> 24; }
414 { uint32_t x =
reg(
ic->arg[0]);
416 #ifdef HOST_BIG_ENDIAN
417 *((uint32_t *)(p+
addr)) = x; }
419 p[
addr] = x >> 24; p[
addr+1] = x >> 16;
420 p[
addr+2] = x >> 8; p[
addr+3] = x; }
423 #ifdef HOST_LITTLE_ENDIAN
424 *((uint32_t *)(p+
addr+4)) = x; }
426 p[
addr +4] = x; p[
addr+1+4] = x >> 8;
427 p[
addr+2+4] = x >> 16; p[
addr+3+4] = x >> 24; }
432 { uint32_t x =
reg(
ic->arg[0] + 4);
434 #ifdef HOST_BIG_ENDIAN
435 *((uint32_t *)(p+
addr+4)) = x; }
437 p[
addr +4] = x >> 24; p[
addr+1+4] = x >> 16;
438 p[
addr+2+4] = x >> 8; p[
addr+3+4] = x; }
441 #ifdef HOST_LITTLE_ENDIAN
442 *((uint32_t *)(p+
addr)) = x; }
445 p[
addr+2] = x >> 16; p[
addr+3] = x >> 24; }
#define M88K_EXCEPTION_PRIVILEGE_VIOLATION
void LS_GENERIC_N(struct cpu *cpu, struct ppc_instr_call *ic)
void fatal(const char *fmt,...)
#define MEMORY_USER_ACCESS
uint64_t memory_readmax64(struct cpu *cpu, unsigned char *buf, int len)
struct arm_instr_call * ic
#define M88K_IC_ENTRIES_PER_PAGE
void m88k_exception(struct cpu *cpu, int vector, int is_trap)
#define M88K_INSTR_ALIGNMENT_SHIFT
uint32_t cr[N_M88K_CONTROL_REGS]
int debugger_n_steps_left_before_interaction
#define EMUL_LITTLE_ENDIAN
uint32_t r[N_M88K_REGS+1]
void LS_N(struct cpu *cpu, struct m88k_instr_call *ic)
#define M88K_EXCEPTION_MISALIGNED_ACCESS
void memory_writemax64(struct cpu *cpu, unsigned char *buf, int len, uint64_t data)
#define EXCEPTION_IN_DELAY_SLOT
int(* memory_rw)(struct cpu *cpu, struct memory *mem, uint64_t vaddr, unsigned char *data, size_t len, int writeflag, int cache_flags)
Generated on Tue Mar 24 2020 14:04:48 for GXemul by
1.8.17