28 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
29 |
* |
* |
30 |
* |
* |
31 |
* $Id: cpu_mips.h,v 1.42 2006/06/22 13:22:41 debug Exp $ |
* $Id: cpu_mips.h,v 1.45 2006/07/16 13:32:27 debug Exp $ |
32 |
*/ |
*/ |
33 |
|
|
34 |
#include "misc.h" |
#include "misc.h" |
69 |
|
|
70 |
/* |
/* |
71 |
* Coproc 0: |
* Coproc 0: |
72 |
|
* |
73 |
|
* NOTE: |
74 |
|
* On R3000, only hi and lo0 are used, and then only the lowest 32 bits. |
75 |
*/ |
*/ |
76 |
#define N_MIPS_COPROC_REGS 32 |
#define N_MIPS_COPROC_REGS 32 |
77 |
struct mips_tlb { |
struct mips_tlb { |
351 |
int mips_memory_rw(struct cpu *cpu, struct memory *mem, uint64_t vaddr, |
int mips_memory_rw(struct cpu *cpu, struct memory *mem, uint64_t vaddr, |
352 |
unsigned char *data, size_t len, int writeflag, int cache_flags); |
unsigned char *data, size_t len, int writeflag, int cache_flags); |
353 |
|
|
354 |
|
int translate_v2p_mmu3k(struct cpu *cpu, uint64_t vaddr, |
355 |
|
uint64_t *return_addr, int flags); |
356 |
|
int translate_v2p_mmu8k(struct cpu *cpu, uint64_t vaddr, |
357 |
|
uint64_t *return_addr, int flags); |
358 |
|
int translate_v2p_mmu10k(struct cpu *cpu, uint64_t vaddr, |
359 |
|
uint64_t *return_addr, int flags); |
360 |
|
int translate_v2p_mmu4100(struct cpu *cpu, uint64_t vaddr, |
361 |
|
uint64_t *return_addr, int flags); |
362 |
|
int translate_v2p_generic(struct cpu *cpu, uint64_t vaddr, |
363 |
|
uint64_t *return_addr, int flags); |
364 |
|
|
365 |
|
|
366 |
/* Dyntrans unaligned load/store: */ |
/* Dyntrans unaligned load/store: */ |
367 |
void mips_unaligned_loadstore(struct cpu *cpu, struct mips_instr_call *ic, |
void mips_unaligned_loadstore(struct cpu *cpu, struct mips_instr_call *ic, |
368 |
int is_left, int wlen, int store); |
int is_left, int wlen, int store); |
369 |
|
|
370 |
|
|
371 |
|
int mips_run_instr(struct cpu *cpu); |
372 |
void mips_update_translation_table(struct cpu *cpu, uint64_t vaddr_page, |
void mips_update_translation_table(struct cpu *cpu, uint64_t vaddr_page, |
373 |
unsigned char *host_page, int writeflag, uint64_t paddr_page); |
unsigned char *host_page, int writeflag, uint64_t paddr_page); |
374 |
void mips_invalidate_translation_caches(struct cpu *cpu, uint64_t, int); |
void mips_invalidate_translation_caches(struct cpu *cpu, uint64_t, int); |
375 |
void mips_invalidate_code_translation(struct cpu *cpu, uint64_t, int); |
void mips_invalidate_code_translation(struct cpu *cpu, uint64_t, int); |
376 |
|
int mips32_run_instr(struct cpu *cpu); |
377 |
void mips32_update_translation_table(struct cpu *cpu, uint64_t vaddr_page, |
void mips32_update_translation_table(struct cpu *cpu, uint64_t vaddr_page, |
378 |
unsigned char *host_page, int writeflag, uint64_t paddr_page); |
unsigned char *host_page, int writeflag, uint64_t paddr_page); |
379 |
void mips32_invalidate_translation_caches(struct cpu *cpu, uint64_t, int); |
void mips32_invalidate_translation_caches(struct cpu *cpu, uint64_t, int); |
380 |
void mips32_invalidate_code_translation(struct cpu *cpu, uint64_t, int); |
void mips32_invalidate_code_translation(struct cpu *cpu, uint64_t, int); |
|
void mips_init_64bit_dummy_tables(struct cpu *cpu); |
|
381 |
|
|
382 |
|
|
383 |
#endif /* CPU_MIPS_H */ |
#endif /* CPU_MIPS_H */ |