28 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
29 |
* |
* |
30 |
* |
* |
31 |
* $Id: cpu_arm.h,v 1.70 2007/02/05 16:49:21 debug Exp $ |
* $Id: cpu_arm.h,v 1.74 2007/06/14 04:53:14 debug Exp $ |
32 |
*/ |
*/ |
33 |
|
|
34 |
#include "misc.h" |
#include "misc.h" |
35 |
#include "interrupt.h" |
#include "interrupt.h" |
36 |
|
|
37 |
struct cpu_family; |
struct cpu_family; |
38 |
|
struct timer; |
39 |
|
|
40 |
/* ARM CPU types: */ |
/* ARM CPU types: */ |
41 |
struct arm_cpu_type_def { |
struct arm_cpu_type_def { |
70 |
"and", "eor", "sub", "rsb", "add", "adc", "sbc", "rsc", \ |
"and", "eor", "sub", "rsb", "add", "adc", "sbc", "rsc", \ |
71 |
"tst", "teq", "cmp", "cmn", "orr", "mov", "bic", "mvn" } |
"tst", "teq", "cmp", "cmn", "orr", "mov", "bic", "mvn" } |
72 |
|
|
|
#ifdef ONEKPAGE |
|
|
#define ARM_IC_ENTRIES_SHIFT 8 |
|
|
#else |
|
73 |
#define ARM_IC_ENTRIES_SHIFT 10 |
#define ARM_IC_ENTRIES_SHIFT 10 |
|
#endif |
|
74 |
|
|
75 |
#define ARM_N_IC_ARGS 3 |
#define ARM_N_IC_ARGS 3 |
76 |
#define ARM_INSTR_ALIGNMENT_SHIFT 2 |
#define ARM_INSTR_ALIGNMENT_SHIFT 2 |
124 |
|
|
125 |
DYNTRANS_MISC_DECLARATIONS(arm,ARM,uint32_t) |
DYNTRANS_MISC_DECLARATIONS(arm,ARM,uint32_t) |
126 |
|
|
127 |
#define ARM_MAX_VPH_TLB_ENTRIES 128 |
#define ARM_MAX_VPH_TLB_ENTRIES 384 |
128 |
|
|
129 |
|
|
130 |
struct arm_cpu { |
struct arm_cpu { |
234 |
*/ |
*/ |
235 |
DYNTRANS_ITC(arm) |
DYNTRANS_ITC(arm) |
236 |
VPH_TLBS(arm,ARM) |
VPH_TLBS(arm,ARM) |
237 |
VPH32(arm,ARM,uint32_t,uint8_t) |
VPH32_16BITVPHENTRIES(arm,ARM) |
238 |
|
|
239 |
/* ARM specific: */ |
/* ARM specific: */ |
240 |
uint32_t is_userpage[N_VPH32_ENTRIES/32]; |
uint32_t is_userpage[N_VPH32_ENTRIES/32]; |
290 |
uint32_t paddr); |
uint32_t paddr); |
291 |
void arm_exception(struct cpu *, int); |
void arm_exception(struct cpu *, int); |
292 |
int arm_run_instr(struct cpu *cpu); |
int arm_run_instr(struct cpu *cpu); |
293 |
|
void arm_timer_sample_tick(struct timer *, void *); |
294 |
void arm_update_translation_table(struct cpu *cpu, uint64_t vaddr_page, |
void arm_update_translation_table(struct cpu *cpu, uint64_t vaddr_page, |
295 |
unsigned char *host_page, int writeflag, uint64_t paddr_page); |
unsigned char *host_page, int writeflag, uint64_t paddr_page); |
296 |
void arm_invalidate_translation_caches(struct cpu *cpu, uint64_t, int); |
void arm_invalidate_translation_caches(struct cpu *cpu, uint64_t, int); |