#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "cop0.h"
#include "cpu.h"
#include "cpu_mips.h"
#include "emul.h"
#include "float_emul.h"
#include "machine.h"
#include "memory.h"
#include "mips_cpu_types.h"
#include "misc.h"
#include "opcodes_mips.h"
#include "timer.h"
Go to the source code of this file.
Macros | |
#define | FPU_OP_ADD 1 |
#define | FPU_OP_SUB 2 |
#define | FPU_OP_MUL 3 |
#define | FPU_OP_DIV 4 |
#define | FPU_OP_SQRT 5 |
#define | FPU_OP_MOV 6 |
#define | FPU_OP_CVT 7 |
#define | FPU_OP_C 8 |
#define | FPU_OP_ABS 9 |
#define | FPU_OP_NEG 10 |
Functions | |
struct mips_coproc * | mips_coproc_new (struct cpu *cpu, int coproc_nr) |
void | mips_coproc_tlb_set_entry (struct cpu *cpu, int entrynr, int size, uint64_t vaddr, uint64_t paddr0, uint64_t paddr1, int valid0, int valid1, int dirty0, int dirty1, int global, int asid, int cachealgo0, int cachealgo1) |
void | coproc_register_read (struct cpu *cpu, struct mips_coproc *cp, int reg_nr, uint64_t *ptr, int select) |
void | coproc_register_write (struct cpu *cpu, struct mips_coproc *cp, int reg_nr, uint64_t *ptr, int flag64, int select) |
void | coproc_tlbpr (struct cpu *cpu, int readflag) |
void | coproc_tlbwri (struct cpu *cpu, int randomflag) |
void | coproc_eret (struct cpu *cpu) |
void | coproc_function (struct cpu *cpu, struct mips_coproc *cp, int cpnr, uint32_t function, int unassemble_only, int running) |
Variables | |
volatile int | single_step |
#define FPU_OP_ABS 9 |
Definition at line 1036 of file cpu_mips_coproc.cc.
#define FPU_OP_ADD 1 |
Definition at line 1028 of file cpu_mips_coproc.cc.
#define FPU_OP_C 8 |
Definition at line 1035 of file cpu_mips_coproc.cc.
#define FPU_OP_CVT 7 |
Definition at line 1034 of file cpu_mips_coproc.cc.
#define FPU_OP_DIV 4 |
Definition at line 1031 of file cpu_mips_coproc.cc.
#define FPU_OP_MOV 6 |
Definition at line 1033 of file cpu_mips_coproc.cc.
#define FPU_OP_MUL 3 |
Definition at line 1030 of file cpu_mips_coproc.cc.
#define FPU_OP_NEG 10 |
Definition at line 1037 of file cpu_mips_coproc.cc.
#define FPU_OP_SQRT 5 |
Definition at line 1032 of file cpu_mips_coproc.cc.
#define FPU_OP_SUB 2 |
Definition at line 1029 of file cpu_mips_coproc.cc.
void coproc_eret | ( | struct cpu * | cpu | ) |
Definition at line 1971 of file cpu_mips_coproc.cc.
References cpu::cd, COP0_EPC, COP0_ERROREPC, COP0_STATUS, mips_cpu::coproc, cpu::delay_slot, cpu::mips, cpu::pc, mips_coproc::reg, mips_cpu::rmw, STATUS_ERL, and STATUS_EXL.
void coproc_function | ( | struct cpu * | cpu, |
struct mips_coproc * | cp, | ||
int | cpnr, | ||
uint32_t | function, | ||
int | unassemble_only, | ||
int | running | ||
) |
Definition at line 1995 of file cpu_mips_coproc.cc.
References cpu::cd, COPz_DMFCz, COPz_MFCz, mips_cpu::cpu_type, debug, EXCEPTION_CPU, fatal(), mips_cpu_type_def::flags, cpu::mips, mips_cpu_exception(), NOFPU, op, and cpu::pc.
Referenced by X().
void coproc_register_read | ( | struct cpu * | cpu, |
struct mips_coproc * | cp, | ||
int | reg_nr, | ||
uint64_t * | ptr, | ||
int | select | ||
) |
Definition at line 577 of file cpu_mips_coproc.cc.
References cpu::cd, COP0_BADVADDR, COP0_CACHEERR, COP0_CAUSE, COP0_COMPARE, COP0_CONFIG, mips_cpu::cop0_config_select1, COP0_CONTEXT, COP0_COUNT, COP0_DEBUG, COP0_DESAVE, COP0_ENTRYHI, COP0_ENTRYLO0, COP0_ENTRYLO1, COP0_EPC, COP0_ERRCTL, COP0_ERROREPC, COP0_INDEX, COP0_LLADDR, COP0_PAGEMASK, COP0_PERFCNT, COP0_PRID, COP0_RANDOM, COP0_RESERV22, COP0_STATUS, COP0_TAGDATA_HI, COP0_TAGDATA_LO, COP0_WATCHHI, COP0_WATCHLO, COP0_WIRED, COP0_XCONTEXT, mips_coproc::coproc_nr, mips_cpu::count_register_read_count, cpu::cpu_id, fatal(), cpu::mips, and mips_coproc::reg.
Referenced by X().
void coproc_register_write | ( | struct cpu * | cpu, |
struct mips_coproc * | cp, | ||
int | reg_nr, | ||
uint64_t * | ptr, | ||
int | flag64, | ||
int | select | ||
) |
Definition at line 653 of file cpu_mips_coproc.cc.
References cpu::cd, CONTEXT_BADVPN2_MASK, CONTEXT_BADVPN2_MASK_R4100, COP0_BADVADDR, COP0_COMPARE, COP0_CONTEXT, COP0_COUNT, COP0_ENTRYLO0, COP0_ENTRYLO1, COP0_INDEX, COP0_PAGEMASK, COP0_RANDOM, COP0_WIRED, mips_coproc::coproc_nr, cpu::cpu_id, mips_cpu::cpu_type, debug, machine::emulated_hz, ENTRYLO_C_MASK, ENTRYLO_C_SHIFT, ENTRYLO_D, ENTRYLO_G, ENTRYLO_PFN_MASK, ENTRYLO_V, fatal(), INDEX_MASK, cpu::machine, cpu::mips, MIPS_R4100, MMU10K, MMU3K, mips_cpu_type_def::mmu_model, mips_coproc::nr_of_tlbs, PAGEMASK_SHIFT, R2K3K_CONTEXT_BADVPN_MASK, R2K3K_ENTRYLO_D, R2K3K_ENTRYLO_G, R2K3K_ENTRYLO_N, R2K3K_ENTRYLO_PFN_MASK, R2K3K_ENTRYLO_V, mips_coproc::reg, mips_cpu_type_def::rev, mips_cpu::timer, and timer_add().
Referenced by X().
void coproc_tlbpr | ( | struct cpu * | cpu, |
int | readflag | ||
) |
Definition at line 1515 of file cpu_mips_coproc.cc.
References cpu::cd, COP0_ENTRYHI, COP0_ENTRYLO0, COP0_ENTRYLO1, COP0_INDEX, COP0_PAGEMASK, mips_cpu::coproc, mips_cpu::cpu_type, ENTRYHI_ASID, ENTRYHI_R_MASK, ENTRYHI_VPN2_MASK, ENTRYHI_VPN2_MASK_R10K, ENTRYLO_G, fatal(), mips_tlb::hi, if(), INDEX_MASK, INDEX_P, mips_tlb::lo0, mips_tlb::lo1, mips_tlb::mask, cpu::mips, MIPS_R4100, MMU10K, MMU3K, mips_cpu_type_def::mmu_model, mips_coproc::nr_of_tlbs, R2K3K_ENTRYHI_ASID_MASK, R2K3K_ENTRYHI_VPN_MASK, R2K3K_ENTRYLO_G, R2K3K_INDEX_MASK, R2K3K_INDEX_SHIFT, mips_coproc::reg, mips_cpu_type_def::rev, TLB_G, and mips_coproc::tlbs.
Referenced by X().
void coproc_tlbwri | ( | struct cpu * | cpu, |
int | randomflag | ||
) |
Definition at line 1634 of file cpu_mips_coproc.cc.
References cpu::cd, COP0_ENTRYHI, COP0_ENTRYLO0, COP0_ENTRYLO1, COP0_INDEX, COP0_PAGEMASK, COP0_RANDOM, COP0_STATUS, COP0_WIRED, mips_cpu::coproc, mips_cpu::cpu_type, ENTRYHI_ASID, ENTRYHI_R_MASK, ENTRYHI_VPN2_MASK, ENTRYHI_VPN2_MASK_R10K, ENTRYLO_D, ENTRYLO_G, ENTRYLO_PFN_MASK, ENTRYLO_PFN_SHIFT, ENTRYLO_V, EXC3K, mips_cpu_type_def::exc_model, fatal(), mips_tlb::hi, INDEX_MASK, cpu::invalidate_code_translation, INVALIDATE_PADDR, cpu::invalidate_translation_caches, INVALIDATE_VADDR, cpu::is_32bit, mips_cpu::last_written_tlb_index, mips_tlb::lo0, mips_tlb::lo1, mips_tlb::mask, cpu::mem, memory_paddr_to_hostaddr(), cpu::mips, MIPS1_ISOL_CACHES, MIPS_R4100, MMU10K, MMU3K, mips_cpu_type_def::mmu_model, mips_coproc::nr_of_tlbs, R2K3K_ENTRYHI_ASID_MASK, R2K3K_ENTRYHI_VPN_MASK, R2K3K_ENTRYLO_D, R2K3K_ENTRYLO_G, 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, mips_coproc::tlbs, and cpu::update_translation_table.
Referenced by X().
struct mips_coproc* mips_coproc_new | ( | struct cpu * | cpu, |
int | coproc_nr | ||
) |
Definition at line 356 of file cpu_mips_coproc.cc.
References cpu::cd, CHECK_ALLOCATION, COP0_PAGEMASK, COP0_PRID, COP0_STATUS, COP0_WIRED, mips_coproc::coproc_nr, mips_cpu::cpu_type, cpu::machine, cpu::mips, MIPS_R5900, mips_cpu_type_def::nr_of_tlb_entries, mips_coproc::nr_of_tlbs, machine::prom_emulation, R5900_STATUS_EIE, mips_coproc::reg, mips_cpu_type_def::rev, STATUS_BEV, STATUS_CU_SHIFT, mips_cpu_type_def::sub, mips_coproc::tlbs, and zeroed_alloc().
Referenced by MACHINE_SETUP().
void mips_coproc_tlb_set_entry | ( | struct cpu * | cpu, |
int | entrynr, | ||
int | size, | ||
uint64_t | vaddr, | ||
uint64_t | paddr0, | ||
uint64_t | paddr1, | ||
int | valid0, | ||
int | valid1, | ||
int | dirty0, | ||
int | dirty1, | ||
int | global, | ||
int | asid, | ||
int | cachealgo0, | ||
int | cachealgo1 | ||
) |
Definition at line 438 of file cpu_mips_coproc.cc.
References cpu::cd, mips_cpu::coproc, mips_cpu::cpu_type, ENTRYHI_ASID, ENTRYHI_R_MASK, ENTRYHI_VPN2_MASK, ENTRYHI_VPN2_MASK_R10K, ENTRYLO_C_MASK, ENTRYLO_C_SHIFT, ENTRYLO_D, ENTRYLO_G, ENTRYLO_PFN_MASK, ENTRYLO_PFN_SHIFT, ENTRYLO_V, mips_tlb::hi, mips_tlb::lo0, mips_tlb::lo1, mips_tlb::mask, cpu::mips, MMU10K, MMU3K, mips_cpu_type_def::mmu_model, mips_coproc::nr_of_tlbs, 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, TLB_G, and mips_coproc::tlbs.
volatile int single_step |
Definition at line 68 of file debugger.cc.