#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 1009 of file cpu_mips_coproc.cc.
| #define FPU_OP_ADD 1 |
Definition at line 1001 of file cpu_mips_coproc.cc.
| #define FPU_OP_C 8 |
Definition at line 1008 of file cpu_mips_coproc.cc.
| #define FPU_OP_CVT 7 |
Definition at line 1007 of file cpu_mips_coproc.cc.
| #define FPU_OP_DIV 4 |
Definition at line 1004 of file cpu_mips_coproc.cc.
| #define FPU_OP_MOV 6 |
Definition at line 1006 of file cpu_mips_coproc.cc.
| #define FPU_OP_MUL 3 |
Definition at line 1003 of file cpu_mips_coproc.cc.
| #define FPU_OP_NEG 10 |
Definition at line 1010 of file cpu_mips_coproc.cc.
| #define FPU_OP_SQRT 5 |
Definition at line 1005 of file cpu_mips_coproc.cc.
| #define FPU_OP_SUB 2 |
Definition at line 1002 of file cpu_mips_coproc.cc.
| void coproc_eret | ( | struct cpu * | cpu | ) |
Definition at line 1952 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 1976 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 583 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 659 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, machine::emulated_hz, ENTRYLO_C_MASK, ENTRYLO_D, ENTRYLO_G, ENTRYLO_PFN_MASK, ENTRYLO_V, fatal(), INDEX_MASK, cpu::machine, cpu::mips, MIPS_R4100, MMU3K, MMU4K, 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 1489 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 1608 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.
1.8.17