#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#include "cpu.h"
#include "float_emul.h"
#include "interrupt.h"
#include "machine.h"
#include "memory.h"
#include "misc.h"
#include "settings.h"
#include "symbol.h"
#include "thirdparty/m8820x_pte.h"
#include "thirdparty/m88k_dmt.h"
#include "thirdparty/mvmeprom.h"
#include "tmp_m88k_head.cc"
#include "tmp_m88k_tail.cc"
Go to the source code of this file.
Macros | |
#define | DYNTRANS_32 |
#define | DYNTRANS_DELAYSLOT |
Functions | |
void | m88k_pc_to_pointers (struct cpu *) |
void | m88k_cpu_functioncall_trace (struct cpu *cpu, int n_args) |
void | m88k_irq_interrupt_assert (struct interrupt *interrupt) |
void | m88k_irq_interrupt_deassert (struct interrupt *interrupt) |
int | m88k_cpu_new (struct cpu *cpu, struct memory *mem, struct machine *machine, int cpu_id, char *cpu_type_name) |
void | m88k_cpu_dumpinfo (struct cpu *cpu) |
void | m88k_cpu_list_available_types (void) |
int | m88k_cpu_instruction_has_delayslot (struct cpu *cpu, unsigned char *ib) |
void | m88k_cpu_register_dump (struct cpu *cpu, int gprs, int coprocs) |
void | m88k_cpu_tlbdump (struct machine *m, int x, int rawflag) |
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_cpu_disassemble_instr (struct cpu *cpu, unsigned char *ib, int running, uint64_t dumpaddr) |
#define DYNTRANS_32 |
Definition at line 57 of file cpu_m88k.cc.
#define DYNTRANS_DELAYSLOT |
Definition at line 58 of file cpu_m88k.cc.
int m88k_cpu_disassemble_instr | ( | struct cpu * | cpu, |
unsigned char * | ib, | ||
int | running, | ||
uint64_t | dumpaddr | ||
) |
Definition at line 835 of file cpu_m88k.cc.
References cpu::byte_order, cpu::cd, cpu::cpu_id, m88k_cpu::cr, debug, cpu::delay_slot, EMUL_LITTLE_ENDIAN, get_symbol_name(), cpu::m88k, M88K_CR_PSR, M88K_PSR_MODE, cpu::machine, machine::ncpus, cpu::pc, cpu::running, and machine::symbol_context.
void m88k_cpu_dumpinfo | ( | struct cpu * | cpu | ) |
Definition at line 198 of file cpu_m88k.cc.
References cpu::byte_order, debug, and EMUL_BIG_ENDIAN.
void m88k_cpu_functioncall_trace | ( | struct cpu * | cpu, |
int | n_args | ||
) |
Referenced by m88k_exception().
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_cpu_list_available_types | ( | void | ) |
Definition at line 214 of file cpu_m88k.cc.
References debug, M88K_CPU_TYPE_DEFS, m88k_cpu_type_def::name, and strlen().
int m88k_cpu_new | ( | struct cpu * | cpu, |
struct memory * | mem, | ||
struct machine * | machine, | ||
int | cpu_id, | ||
char * | cpu_type_name | ||
) |
Definition at line 101 of file cpu_m88k.cc.
void m88k_cpu_register_dump | ( | struct cpu * | cpu, |
int | gprs, | ||
int | coprocs | ||
) |
Definition at line 272 of file cpu_m88k.cc.
References cpu::cd, cpu::cpu_id, debug, get_symbol_name(), cpu::m88k, cpu::machine, MACHINE_MVME88K_197, machine::machine_subtype, N_M88K_REGS, cpu::pc, m88k_cpu::r, and machine::symbol_context.
void m88k_cpu_tlbdump | ( | struct machine * | m, |
int | x, | ||
int | rawflag | ||
) |
Definition at line 338 of file cpu_m88k.cc.
References m8820x_cmmu::batc, BATC_GLOBAL, BATC_INH, BATC_PROT, BATC_SO, BATC_WT, cpu::cd, m88k_cpu::cmmu, machine::cpus, M8820X_PATC_SUPERVISOR_BIT, cpu::m88k, MAX_M8820X_CMMUS, N_M88200_BATC_REGS, N_M88200_PATC_ENTRIES, machine::ncpus, m8820x_cmmu::patc_p_and_supervisorbit, m8820x_cmmu::patc_update_index, m8820x_cmmu::patc_v_and_control, PG_M, PG_PROT, PG_SO, PG_U, PG_U0, PG_U1, and PG_V.
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_irq_interrupt_assert | ( | struct interrupt * | interrupt | ) |
Definition at line 407 of file cpu_m88k.cc.
References cpu::cd, interrupt::extra, m88k_cpu::irq_asserted, and cpu::m88k.
void m88k_irq_interrupt_deassert | ( | struct interrupt * | interrupt | ) |
Definition at line 412 of file cpu_m88k.cc.
References cpu::cd, interrupt::extra, m88k_cpu::irq_asserted, and cpu::m88k.
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().
void m88k_pc_to_pointers | ( | struct 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().