2 |
#define CPU_SH_H |
#define CPU_SH_H |
3 |
|
|
4 |
/* |
/* |
5 |
* Copyright (C) 2005-2006 Anders Gavare. All rights reserved. |
* Copyright (C) 2005-2007 Anders Gavare. All rights reserved. |
6 |
* |
* |
7 |
* Redistribution and use in source and binary forms, with or without |
* Redistribution and use in source and binary forms, with or without |
8 |
* modification, are permitted provided that the following conditions are met: |
* modification, are permitted provided that the following conditions are met: |
28 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
29 |
* |
* |
30 |
* |
* |
31 |
* $Id: cpu_sh.h,v 1.33 2006/10/27 15:51:37 debug Exp $ |
* $Id: cpu_sh.h,v 1.37 2006/12/30 13:31:00 debug Exp $ |
32 |
* |
* |
33 |
* Note: Many things here are SH4-specific, so it probably doesn't work |
* Note: Many things here are SH4-specific, so it probably doesn't work |
34 |
* for SH3 emulation. |
* for SH3 emulation. |
35 |
*/ |
*/ |
36 |
|
|
37 |
|
#include "interrupt.h" |
38 |
#include "misc.h" |
#include "misc.h" |
39 |
#include "sh4_cpu.h" |
#include "sh4_cpu.h" |
40 |
|
|
82 |
#define SH_N_ITLB_ENTRIES 4 |
#define SH_N_ITLB_ENTRIES 4 |
83 |
#define SH_N_UTLB_ENTRIES 64 |
#define SH_N_UTLB_ENTRIES 64 |
84 |
|
|
85 |
|
#define SH_INVALID_INSTR 0x00fb |
86 |
|
|
87 |
|
|
88 |
struct sh_cpu { |
struct sh_cpu { |
89 |
struct sh_cpu_type_def cpu_type; |
struct sh_cpu_type_def cpu_type; |
138 |
uint16_t intc_ipra; /* Interrupt Priority Registers */ |
uint16_t intc_ipra; /* Interrupt Priority Registers */ |
139 |
uint16_t intc_iprb; |
uint16_t intc_iprb; |
140 |
uint16_t intc_iprc; |
uint16_t intc_iprc; |
141 |
|
uint16_t intc_iprd; |
142 |
int16_t int_to_assert; /* Calculated int to assert */ |
int16_t int_to_assert; /* Calculated int to assert */ |
143 |
int int_level; /* Calculated int level */ |
int int_level; /* Calculated int level */ |
144 |
uint32_t int_pending[0x1000 / 0x20 / (sizeof(uint32_t)*8)]; |
uint32_t int_pending[0x1000 / 0x20 / (sizeof(uint32_t)*8)]; |
146 |
/* Timer/clock functionality: */ |
/* Timer/clock functionality: */ |
147 |
int pclock; |
int pclock; |
148 |
|
|
149 |
|
/* DMA Controller: (4 channels) */ |
150 |
|
uint32_t dmac_sar[4]; |
151 |
|
uint32_t dmac_dar[4]; |
152 |
|
uint32_t dmac_tcr[4]; |
153 |
|
uint32_t dmac_chcr[4]; |
154 |
|
|
155 |
|
|
156 |
/* |
/* |
157 |
* Instruction translation cache and Virtual->Physical->Host |
* Instruction translation cache and Virtual->Physical->Host |
202 |
|
|
203 |
|
|
204 |
/* cpu_sh.c: */ |
/* cpu_sh.c: */ |
205 |
|
void sh_cpu_interrupt_assert(struct interrupt *interrupt); |
206 |
|
void sh_cpu_interrupt_deassert(struct interrupt *interrupt); |
207 |
int sh_cpu_instruction_has_delayslot(struct cpu *cpu, unsigned char *ib); |
int sh_cpu_instruction_has_delayslot(struct cpu *cpu, unsigned char *ib); |
208 |
int sh_run_instr(struct cpu *cpu); |
int sh_run_instr(struct cpu *cpu); |
209 |
void sh_update_translation_table(struct cpu *cpu, uint64_t vaddr_page, |
void sh_update_translation_table(struct cpu *cpu, uint64_t vaddr_page, |