#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <ctype.h>
#include <unistd.h>
#include "../../config.h"
#include "arcbios.h"
#include "cop0.h"
#include "cpu.h"
#include "cpu_mips.h"
#include "debugger.h"
#include "devices.h"
#include "emul.h"
#include "machine.h"
#include "memory.h"
#include "mips_cpu_types.h"
#include "opcodes_mips.h"
#include "settings.h"
#include "symbol.h"
#include "tmp_mips_head.cc"
#include "memory_mips.cc"
#include "tmp_mips_tail.cc"
Go to the source code of this file.
Macros | |
#define | DYNTRANS_DUALMODE_32 |
#define | DYNTRANS_DELAYSLOT |
Functions | |
void | mips_pc_to_pointers (struct cpu *) |
void | mips32_pc_to_pointers (struct cpu *) |
int | mips_cpu_new (struct cpu *cpu, struct memory *mem, struct machine *machine, int cpu_id, char *cpu_type_name) |
void | mips_cpu_dumpinfo (struct cpu *cpu) |
void | mips_cpu_list_available_types (void) |
int | mips_cpu_instruction_has_delayslot (struct cpu *cpu, unsigned char *ib) |
void | mips_cpu_tlbdump (struct machine *m, int x, int rawflag) |
int | mips_cpu_disassemble_instr (struct cpu *cpu, unsigned char *originstr, int running, uint64_t dumpaddr) |
void | mips_cpu_register_dump (struct cpu *cpu, int gprs, int coprocs) |
void | mips_cpu_interrupt_assert (struct interrupt *interrupt) |
void | mips_cpu_interrupt_deassert (struct interrupt *interrupt) |
void | mips_cpu_exception (struct cpu *cpu, int exccode, int tlb, uint64_t vaddr, int coproc_nr, uint64_t vaddr_vpn2, int vaddr_asid, int x_64) |
#define DYNTRANS_DELAYSLOT |
Definition at line 75 of file cpu_mips.cc.
#define DYNTRANS_DUALMODE_32 |
Definition at line 74 of file cpu_mips.cc.
void mips32_pc_to_pointers | ( | struct cpu * | ) |
int mips_cpu_disassemble_instr | ( | struct cpu * | cpu, |
unsigned char * | originstr, | ||
int | running, | ||
uint64_t | dumpaddr | ||
) |
Definition at line 708 of file cpu_mips.cc.
References addr, cpu::byte_order, cpu::cpu_id, debug, cpu::delay_slot, EMUL_BIG_ENDIAN, get_symbol_name(), HI6_SPECIAL, instr, cpu::is_32bit, cpu::machine, machine::ncpus, cpu::pc, SPECIAL_DSLL, SPECIAL_DSLL32, SPECIAL_DSRA, SPECIAL_DSRA32, SPECIAL_DSRL, SPECIAL_DSRL32, SPECIAL_SLL, SPECIAL_SRA, SPECIAL_SRL, and machine::symbol_context.
void mips_cpu_dumpinfo | ( | struct cpu * | cpu | ) |
Definition at line 356 of file cpu_mips.cc.
References cpu::byte_order, cpu::cd, mips_cpu::cpu_type, debug, DEBUG_INDENTATION, debug_indentation(), EMUL_BIG_ENDIAN, cpu::is_32bit, mips_cpu_type_def::isa_level, mips_cpu_type_def::isa_revision, cpu::mips, mips_cpu_type_def::nr_of_tlb_entries, mips_cpu_type_def::pdcache, mips_cpu_type_def::pdlinesize, mips_cpu_type_def::pdways, mips_cpu_type_def::picache, mips_cpu_type_def::pilinesize, mips_cpu_type_def::piways, mips_cpu_type_def::scache, mips_cpu_type_def::slinesize, and mips_cpu_type_def::sways.
void mips_cpu_exception | ( | struct cpu * | cpu, |
int | exccode, | ||
int | tlb, | ||
uint64_t | vaddr, | ||
int | coproc_nr, | ||
uint64_t | vaddr_vpn2, | ||
int | vaddr_asid, | ||
int | x_64 | ||
) |
Definition at line 1740 of file cpu_mips.cc.
References cpu::cd, mips_cpu::coproc, cpu::cpu_id, mips_cpu::cpu_type, debug, mips_cpu_type_def::exc_model, get_symbol_name(), cpu::is_halted, cpu::machine, cpu::mips, machine::ncpus, cpu::pc, quiet_mode, reg, mips_coproc::reg, and machine::symbol_context.
Referenced by cop0_availability_check(), coproc_function(), MEMORY_RW(), TRANSLATE_ADDRESS(), and X().
int mips_cpu_instruction_has_delayslot | ( | struct cpu * | cpu, |
unsigned char * | ib | ||
) |
Definition at line 452 of file cpu_mips.cc.
References BE32_TO_HOST, cpu::byte_order, EMUL_LITTLE_ENDIAN, HI6_BEQ, HI6_BEQL, HI6_BGTZ, HI6_BGTZL, HI6_BLEZ, HI6_BLEZL, HI6_BNE, HI6_BNEL, HI6_J, HI6_JAL, HI6_REGIMM, HI6_SPECIAL, LE32_TO_HOST, REGIMM_BGEZ, REGIMM_BGEZAL, REGIMM_BGEZALL, REGIMM_BGEZL, REGIMM_BLTZ, REGIMM_BLTZAL, REGIMM_BLTZALL, REGIMM_BLTZL, SPECIAL_JALR, and SPECIAL_JR.
void mips_cpu_interrupt_assert | ( | struct interrupt * | interrupt | ) |
Definition at line 1713 of file cpu_mips.cc.
References cpu::cd, COP0_CAUSE, mips_cpu::coproc, interrupt::extra, interrupt::line, cpu::mips, and mips_coproc::reg.
void mips_cpu_interrupt_deassert | ( | struct interrupt * | interrupt | ) |
Definition at line 1718 of file cpu_mips.cc.
References cpu::cd, COP0_CAUSE, mips_cpu::coproc, interrupt::extra, interrupt::line, cpu::mips, and mips_coproc::reg.
void mips_cpu_list_available_types | ( | void | ) |
Definition at line 430 of file cpu_mips.cc.
int mips_cpu_new | ( | struct cpu * | cpu, |
struct memory * | mem, | ||
struct machine * | machine, | ||
int | cpu_id, | ||
char * | cpu_type_name | ||
) |
Definition at line 89 of file cpu_mips.cc.
void mips_cpu_register_dump | ( | struct cpu * | cpu, |
int | gprs, | ||
int | coprocs | ||
) |
Definition at line 1523 of file cpu_mips.cc.
References cpu::cd, cpu::cpu_id, mips_cpu::cpu_type, debug, get_symbol_name(), mips_cpu::hi, mips_cpu::hi1, cpu::is_32bit, mips_cpu::lo, mips_cpu::lo1, cpu::machine, cpu::mips, MIPS_GPR_ZERO, MIPS_R5900, cpu::pc, mips_cpu_type_def::rev, and machine::symbol_context.
void mips_cpu_tlbdump | ( | struct machine * | m, |
int | x, | ||
int | rawflag | ||
) |
Definition at line 508 of file cpu_mips.cc.
References cpu::cd, COP0_INDEX, COP0_RANDOM, COP0_WIRED, mips_cpu::coproc, mips_cpu::cpu_type, machine::cpus, ENTRYHI_ASID, ENTRYLO_D, ENTRYLO_PFN_MASK, ENTRYLO_PFN_SHIFT, ENTRYLO_V, mips_tlb::hi, INDEX_MASK, cpu::is_32bit, mips_cpu_type_def::isa_level, mips_tlb::lo0, mips_tlb::lo1, mips_tlb::mask, cpu::mips, MIPS_R4100, MMU32, MMU3K, mips_cpu_type_def::mmu_model, machine::ncpus, R2K3K_ENTRYHI_ASID_MASK, R2K3K_ENTRYHI_ASID_SHIFT, R2K3K_ENTRYHI_VPN_MASK, R2K3K_ENTRYLO_D, R2K3K_ENTRYLO_G, R2K3K_ENTRYLO_N, R2K3K_ENTRYLO_PFN_MASK, R2K3K_ENTRYLO_V, R2K3K_INDEX_MASK, R2K3K_INDEX_SHIFT, R2K3K_RANDOM_MASK, R2K3K_RANDOM_SHIFT, RANDOM_MASK, mips_coproc::reg, mips_cpu_type_def::rev, TLB_G, and mips_coproc::tlbs.
void mips_pc_to_pointers | ( | struct cpu * | ) |