Go to the source code of this file.
Classes | |
struct | m88k_cpu_type_def |
struct | m8820x_cmmu |
struct | m88k_cpu |
Functions | |
int | m88k_cpu_instruction_has_delayslot (struct cpu *cpu, unsigned char *ib) |
int | m88k_run_instr (struct cpu *cpu) |
void | m88k_update_translation_table (struct cpu *cpu, uint64_t vaddr_page, unsigned char *host_page, int writeflag, uint64_t paddr_page) |
void | m88k_invalidate_translation_caches (struct cpu *cpu, uint64_t, int) |
void | m88k_invalidate_code_translation (struct cpu *cpu, uint64_t, int) |
int | m88k_memory_rw (struct cpu *cpu, struct memory *mem, uint64_t vaddr, unsigned char *data, size_t len, int writeflag, int cache_flags) |
int | m88k_cpu_family_init (struct cpu_family *) |
void | m88k_ldcr (struct cpu *cpu, uint32_t *r32ptr, int cr) |
void | m88k_stcr (struct cpu *cpu, uint32_t value, int cr, int rte) |
void | m88k_fstcr (struct cpu *cpu, uint32_t value, int fcr) |
void | m88k_exception (struct cpu *cpu, int vector, int is_trap) |
int | m88k_translate_v2p (struct cpu *cpu, uint64_t vaddr, uint64_t *return_addr, int flags) |
#define M8820X_LENGTH 0x1000 |
Definition at line 212 of file cpu_m88k.h.
#define M8820X_PATC_SUPERVISOR_BIT 0x00000001 |
Definition at line 215 of file cpu_m88k.h.
#define M88K_ADDR_TO_PAGENR | ( | a | ) |
Definition at line 162 of file cpu_m88k.h.
#define M88K_CMP_EQ 0x00000004 |
Definition at line 185 of file cpu_m88k.h.
#define M88K_CMP_GE 0x00000080 |
Definition at line 180 of file cpu_m88k.h.
#define M88K_CMP_GT 0x00000010 |
Definition at line 183 of file cpu_m88k.h.
#define M88K_CMP_HI 0x00000100 |
Definition at line 179 of file cpu_m88k.h.
#define M88K_CMP_HS 0x00000800 |
Definition at line 176 of file cpu_m88k.h.
#define M88K_CMP_LE 0x00000020 |
Definition at line 182 of file cpu_m88k.h.
#define M88K_CMP_LO 0x00000400 |
Definition at line 177 of file cpu_m88k.h.
#define M88K_CMP_LS 0x00000200 |
Definition at line 178 of file cpu_m88k.h.
#define M88K_CMP_LT 0x00000040 |
Definition at line 181 of file cpu_m88k.h.
#define M88K_CMP_NE 0x00000008 |
Definition at line 184 of file cpu_m88k.h.
#define M88K_CPU_TYPE_DEFS |
Definition at line 52 of file cpu_m88k.h.
#define M88K_CR_DBP 46 |
Definition at line 140 of file cpu_m88k.h.
#define M88K_CR_DCMD 40 |
Definition at line 134 of file cpu_m88k.h.
#define M88K_CR_DCTL 41 |
Definition at line 135 of file cpu_m88k.h.
#define M88K_CR_DIR 45 |
Definition at line 139 of file cpu_m88k.h.
#define M88K_CR_DLAR 50 |
Definition at line 144 of file cpu_m88k.h.
#define M88K_CR_DMA0 10 |
Definition at line 88 of file cpu_m88k.h.
#define M88K_CR_DMA1 13 |
Definition at line 91 of file cpu_m88k.h.
#define M88K_CR_DMA2 16 |
Definition at line 94 of file cpu_m88k.h.
#define M88K_CR_DMD0 9 |
Definition at line 87 of file cpu_m88k.h.
#define M88K_CR_DMD1 12 |
Definition at line 90 of file cpu_m88k.h.
#define M88K_CR_DMD2 15 |
Definition at line 93 of file cpu_m88k.h.
#define M88K_CR_DMT0 8 |
Definition at line 86 of file cpu_m88k.h.
#define M88K_CR_DMT1 11 |
Definition at line 89 of file cpu_m88k.h.
#define M88K_CR_DMT2 14 |
Definition at line 92 of file cpu_m88k.h.
#define M88K_CR_DPAR 51 |
Definition at line 145 of file cpu_m88k.h.
#define M88K_CR_DPPL 48 |
Definition at line 142 of file cpu_m88k.h.
#define M88K_CR_DPPU 47 |
Definition at line 141 of file cpu_m88k.h.
#define M88K_CR_DSAP 43 |
Definition at line 137 of file cpu_m88k.h.
#define M88K_CR_DSAR 42 |
Definition at line 136 of file cpu_m88k.h.
#define M88K_CR_DSR 49 |
Definition at line 143 of file cpu_m88k.h.
#define M88K_CR_DUAP 44 |
Definition at line 138 of file cpu_m88k.h.
#define M88K_CR_ENIP 5 |
Definition at line 120 of file cpu_m88k.h.
#define M88K_CR_EPSR 2 |
Definition at line 80 of file cpu_m88k.h.
#define M88K_CR_EXIP 4 |
Definition at line 119 of file cpu_m88k.h.
#define M88K_CR_IBP 31 |
Definition at line 128 of file cpu_m88k.h.
#define M88K_CR_ICMD 25 |
Definition at line 122 of file cpu_m88k.h.
#define M88K_CR_ICTL 26 |
Definition at line 123 of file cpu_m88k.h.
#define M88K_CR_IIR 30 |
Definition at line 127 of file cpu_m88k.h.
#define M88K_CR_ILAR 35 |
Definition at line 132 of file cpu_m88k.h.
#define M88K_CR_IPAR 36 |
Definition at line 133 of file cpu_m88k.h.
#define M88K_CR_IPPL 33 |
Definition at line 130 of file cpu_m88k.h.
#define M88K_CR_IPPU 32 |
Definition at line 129 of file cpu_m88k.h.
#define M88K_CR_ISAP 28 |
Definition at line 125 of file cpu_m88k.h.
#define M88K_CR_ISAR 27 |
Definition at line 124 of file cpu_m88k.h.
#define M88K_CR_ISR 34 |
Definition at line 131 of file cpu_m88k.h.
#define M88K_CR_IUAP 29 |
Definition at line 126 of file cpu_m88k.h.
#define M88K_CR_NAMES |
Definition at line 60 of file cpu_m88k.h.
#define M88K_CR_NAMES_197 |
Definition at line 101 of file cpu_m88k.h.
#define M88K_CR_PID 0 |
Definition at line 78 of file cpu_m88k.h.
#define M88K_CR_PSR 1 |
Definition at line 79 of file cpu_m88k.h.
#define M88K_CR_SFIP 6 |
Definition at line 84 of file cpu_m88k.h.
#define M88K_CR_SNIP 5 |
Definition at line 83 of file cpu_m88k.h.
#define M88K_CR_SR0 17 |
Definition at line 95 of file cpu_m88k.h.
#define M88K_CR_SR1 18 |
Definition at line 96 of file cpu_m88k.h.
#define M88K_CR_SR2 19 |
Definition at line 97 of file cpu_m88k.h.
#define M88K_CR_SR3 20 |
Definition at line 98 of file cpu_m88k.h.
#define M88K_CR_SRX 16 |
Definition at line 121 of file cpu_m88k.h.
#define M88K_CR_SSBR 3 |
Definition at line 81 of file cpu_m88k.h.
#define M88K_CR_SXIP 4 |
Definition at line 82 of file cpu_m88k.h.
#define M88K_CR_VBR 7 |
Definition at line 85 of file cpu_m88k.h.
#define M88K_EXCEPTION_BOUNDS_CHECK_VIOLATION 7 |
Definition at line 195 of file cpu_m88k.h.
#define M88K_EXCEPTION_DATA_ACCESS 3 |
Definition at line 191 of file cpu_m88k.h.
#define M88K_EXCEPTION_ERROR 10 |
Definition at line 198 of file cpu_m88k.h.
#define M88K_EXCEPTION_ILLEGAL_INTEGER_DIVIDE 8 |
Definition at line 196 of file cpu_m88k.h.
#define M88K_EXCEPTION_INSTRUCTION_ACCESS 2 |
Definition at line 190 of file cpu_m88k.h.
#define M88K_EXCEPTION_INTEGER_OVERFLOW 9 |
Definition at line 197 of file cpu_m88k.h.
#define M88K_EXCEPTION_INTERRUPT 1 |
Definition at line 189 of file cpu_m88k.h.
#define M88K_EXCEPTION_MISALIGNED_ACCESS 4 |
Definition at line 192 of file cpu_m88k.h.
#define M88K_EXCEPTION_PRIVILEGE_VIOLATION 6 |
Definition at line 194 of file cpu_m88k.h.
#define M88K_EXCEPTION_RESET 0 |
Definition at line 188 of file cpu_m88k.h.
#define M88K_EXCEPTION_SFU1_IMPRECISE 115 |
Definition at line 200 of file cpu_m88k.h.
#define M88K_EXCEPTION_SFU1_PRECISE 114 |
Definition at line 199 of file cpu_m88k.h.
#define M88K_EXCEPTION_UNIMPLEMENTED_OPCODE 5 |
Definition at line 193 of file cpu_m88k.h.
#define M88K_EXCEPTION_USER_TRAPS_START 128 |
Definition at line 201 of file cpu_m88k.h.
#define M88K_FPCR_FPECR 0 |
Definition at line 150 of file cpu_m88k.h.
#define M88K_FPECR_FDVZ (1 << 3) |
Definition at line 151 of file cpu_m88k.h.
#define M88K_FPECR_FUNIMP (1 << 6) |
Definition at line 152 of file cpu_m88k.h.
#define M88K_IC_ENTRIES_PER_PAGE (1 << M88K_IC_ENTRIES_SHIFT) |
Definition at line 159 of file cpu_m88k.h.
#define M88K_IC_ENTRIES_SHIFT 10 |
Definition at line 158 of file cpu_m88k.h.
#define M88K_INSTR_ALIGNMENT_SHIFT 2 |
Definition at line 157 of file cpu_m88k.h.
#define M88K_MAX_VPH_TLB_ENTRIES 128 |
Definition at line 167 of file cpu_m88k.h.
#define M88K_N_IC_ARGS 3 |
Definition at line 156 of file cpu_m88k.h.
#define M88K_PC_TO_IC_ENTRY | ( | a | ) |
Definition at line 160 of file cpu_m88k.h.
#define M88K_PID | ( | arn, | |
vn | |||
) | ((arn << M88K_ARN_SHIFT) | (vn << M88K_VN_SHIFT)) |
Definition at line 50 of file cpu_m88k.h.
#define M88K_PROM_INSTR 0xf400fc92 |
Definition at line 204 of file cpu_m88k.h.
#define M88K_RETURN_REG 1 |
Definition at line 174 of file cpu_m88k.h.
#define M88K_ZERO_REG 0 |
Definition at line 173 of file cpu_m88k.h.
#define MAX_M8820X_CMMUS 8 |
Definition at line 211 of file cpu_m88k.h.
#define N_M88200_BATC_REGS 10 |
Definition at line 213 of file cpu_m88k.h.
#define N_M88200_PATC_ENTRIES 56 |
Definition at line 214 of file cpu_m88k.h.
#define N_M88K_CONTROL_REGS 64 |
Definition at line 59 of file cpu_m88k.h.
#define N_M88K_FPU_CONTROL_REGS 64 |
Definition at line 148 of file cpu_m88k.h.
#define N_M88K_REGS 32 |
Definition at line 170 of file cpu_m88k.h.
int m88k_cpu_family_init | ( | struct cpu_family * | ) |
int m88k_cpu_instruction_has_delayslot | ( | struct cpu * | cpu, |
unsigned char * | ib | ||
) |
Definition at line 236 of file cpu_m88k.cc.
References BE32_TO_HOST, cpu::byte_order, EMUL_LITTLE_ENDIAN, and LE32_TO_HOST.
void m88k_exception | ( | struct cpu * | cpu, |
int | vector, | ||
int | is_trap | ||
) |
Definition at line 648 of file cpu_m88k.cc.
References cpu::cd, m88k_cpu::cr, debug, cpu::delay_slot, m88k_cpu::delay_target, m88k_cpu::dma, m88k_cpu::dmd, m88k_cpu::dmt, EXCEPTION_IN_DELAY_SLOT, fatal(), cpu::m88k, m88k_cpu_functioncall_trace(), M88K_CR_DMA0, M88K_CR_DMA1, M88K_CR_DMA2, M88K_CR_DMD0, M88K_CR_DMD1, M88K_CR_DMD2, M88K_CR_DMT0, M88K_CR_DMT1, M88K_CR_DMT2, M88K_CR_EPSR, M88K_CR_PSR, M88K_CR_SFIP, M88K_CR_SNIP, M88K_CR_SSBR, M88K_CR_SXIP, M88K_CR_VBR, M88K_EXCEPTION_BOUNDS_CHECK_VIOLATION, M88K_EXCEPTION_DATA_ACCESS, M88K_EXCEPTION_ERROR, M88K_EXCEPTION_ILLEGAL_INTEGER_DIVIDE, M88K_EXCEPTION_INSTRUCTION_ACCESS, M88K_EXCEPTION_INTEGER_OVERFLOW, M88K_EXCEPTION_INTERRUPT, M88K_EXCEPTION_MISALIGNED_ACCESS, M88K_EXCEPTION_PRIVILEGE_VIOLATION, M88K_EXCEPTION_RESET, M88K_EXCEPTION_SFU1_IMPRECISE, M88K_EXCEPTION_SFU1_PRECISE, M88K_EXCEPTION_UNIMPLEMENTED_OPCODE, M88K_EXCEPTION_USER_TRAPS_START, M88K_NIP_V, M88K_PSR_IND, M88K_PSR_MODE, M88K_PSR_SFD1, M88K_PSR_SFRZ, m88k_stcr(), M88K_XIP_E, M88K_XIP_V, MVMEPROM_VECTOR, NOT_DELAYED, cpu::pc, and m88k_cpu::r.
Referenced by m88k_translate_v2p(), MEMORY_RW(), and X().
void m88k_fstcr | ( | struct cpu * | cpu, |
uint32_t | value, | ||
int | fcr | ||
) |
Definition at line 587 of file cpu_m88k.cc.
References cpu::cd, m88k_cpu::cr, fatal(), and cpu::m88k.
Referenced by X().
void m88k_invalidate_code_translation | ( | struct cpu * | cpu, |
uint64_t | , | ||
int | |||
) |
void m88k_invalidate_translation_caches | ( | struct cpu * | cpu, |
uint64_t | , | ||
int | |||
) |
void m88k_ldcr | ( | struct cpu * | cpu, |
uint32_t * | r32ptr, | ||
int | cr | ||
) |
Definition at line 425 of file cpu_m88k.cc.
References cpu::cd, m88k_cpu::cr, DMT_BO, DMT_DREGBITS, DMT_VALID, DMT_WRITE, fatal(), cpu::m88k, M88K_CR_DMA0, M88K_CR_DMA1, M88K_CR_DMA2, M88K_CR_DMD0, M88K_CR_DMD1, M88K_CR_DMD2, M88K_CR_DMT0, M88K_CR_DMT1, M88K_CR_DMT2, M88K_CR_EPSR, M88K_CR_PID, M88K_CR_PSR, M88K_CR_SFIP, M88K_CR_SNIP, M88K_CR_SR0, M88K_CR_SR1, M88K_CR_SR2, M88K_CR_SR3, M88K_CR_SSBR, M88K_CR_SXIP, M88K_CR_VBR, M88K_PSR_BO, and M88K_ZERO_REG.
Referenced by X().
int m88k_memory_rw | ( | struct cpu * | cpu, |
struct memory * | mem, | ||
uint64_t | vaddr, | ||
unsigned char * | data, | ||
size_t | len, | ||
int | writeflag, | ||
int | cache_flags | ||
) |
int m88k_run_instr | ( | struct cpu * | cpu | ) |
void m88k_stcr | ( | struct cpu * | cpu, |
uint32_t | value, | ||
int | cr, | ||
int | rte | ||
) |
Definition at line 503 of file cpu_m88k.cc.
References cpu::byte_order, cpu::cd, m88k_cpu::cr, EMUL_BIG_ENDIAN, EMUL_LITTLE_ENDIAN, fatal(), INVALIDATE_ALL, cpu::invalidate_translation_caches, cpu::m88k, M88K_CR_DMT0, M88K_CR_DMT1, M88K_CR_DMT2, M88K_CR_EPSR, M88K_CR_PSR, M88K_CR_SFIP, M88K_CR_SNIP, M88K_CR_SR0, M88K_CR_SR1, M88K_CR_SR2, M88K_CR_SR3, M88K_CR_SSBR, M88K_CR_SXIP, M88K_CR_VBR, M88K_PSR_BO, M88K_PSR_MODE, and M88K_PSR_MXM.
Referenced by m88k_exception(), and X().
int m88k_translate_v2p | ( | struct cpu * | cpu, |
uint64_t | vaddr, | ||
uint64_t * | return_addr, | ||
int | flags | ||
) |
Definition at line 103 of file memory_m88k.cc.
References APR_V, m8820x_cmmu::batc, BATC_PROT, BATC_SO, BATC_V, BE32_TO_HOST, cpu::byte_order, cpu::cd, m88k_cpu::cmmu, CMMU_PFAR, CMMU_PFSR, CMMU_PFSR_PFAULT, CMMU_PFSR_SFAULT, CMMU_PFSR_SUCCESS, CMMU_PFSR_SUPER, CMMU_PFSR_WRITE, CMMU_SAPR, CMMU_UAPR, m88k_cpu::cr, EMUL_LITTLE_ENDIAN, fatal(), FLAG_INSTR, FLAG_NOEXCEPTIONS, FLAG_WRITEFLAG, instr, cpu::invalidate_translation_caches, INVALIDATE_VADDR, LE32_TO_HOST, m8820x_mark_page_as_modified(), M8820X_PATC_SUPERVISOR_BIT, cpu::m88k, M88K_CR_PSR, m88k_exception(), M88K_EXCEPTION_DATA_ACCESS, M88K_EXCEPTION_INSTRUCTION_ACCESS, M88K_PSR_MODE, cpu::mem, memory_paddr_to_hostaddr(), MEMORY_USER_ACCESS, N_M88200_BATC_REGS, N_M88200_PATC_ENTRIES, m8820x_cmmu::patc_p_and_supervisorbit, m8820x_cmmu::patc_update_index, m8820x_cmmu::patc_v_and_control, PG_M, PG_PROT, PG_RO, PG_SO, PG_U, PG_V, m8820x_cmmu::reg, SG_RO, SG_SO, and SG_V.
void m88k_update_translation_table | ( | struct cpu * | cpu, |
uint64_t | vaddr_page, | ||
unsigned char * | host_page, | ||
int | writeflag, | ||
uint64_t | paddr_page | ||
) |