aboutsummaryrefslogtreecommitdiff
path: root/target/hppa/cpu.h
diff options
context:
space:
mode:
Diffstat (limited to 'target/hppa/cpu.h')
-rw-r--r--target/hppa/cpu.h50
1 files changed, 23 insertions, 27 deletions
diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h
index 8b36642..c652ef9 100644
--- a/target/hppa/cpu.h
+++ b/target/hppa/cpu.h
@@ -21,32 +21,33 @@
#define HPPA_CPU_H
#include "cpu-qom.h"
+#include "exec/cpu-common.h"
#include "exec/cpu-defs.h"
+#include "exec/cpu-interrupt.h"
+#include "system/memory.h"
#include "qemu/cpu-float.h"
#include "qemu/interval-tree.h"
#include "hw/registerfields.h"
-#define MMU_ABS_W_IDX 6
-#define MMU_ABS_IDX 7
-#define MMU_KERNEL_IDX 8
-#define MMU_KERNEL_P_IDX 9
-#define MMU_PL1_IDX 10
-#define MMU_PL1_P_IDX 11
-#define MMU_PL2_IDX 12
-#define MMU_PL2_P_IDX 13
-#define MMU_USER_IDX 14
-#define MMU_USER_P_IDX 15
-
-#define MMU_IDX_MMU_DISABLED(MIDX) ((MIDX) < MMU_KERNEL_IDX)
-#define MMU_IDX_TO_PRIV(MIDX) (((MIDX) - MMU_KERNEL_IDX) / 2)
-#define MMU_IDX_TO_P(MIDX) (((MIDX) - MMU_KERNEL_IDX) & 1)
-#define PRIV_P_TO_MMU_IDX(PRIV, P) ((PRIV) * 2 + !!(P) + MMU_KERNEL_IDX)
+#define MMU_KERNEL_IDX 0
+#define MMU_KERNEL_P_IDX 1
+#define MMU_PL1_IDX 2
+#define MMU_PL1_P_IDX 3
+#define MMU_PL2_IDX 4
+#define MMU_PL2_P_IDX 5
+#define MMU_USER_IDX 6
+#define MMU_USER_P_IDX 7
+#define MMU_ABS_IDX 8
+#define MMU_ABS_W_IDX 9
+
+#define MMU_IDX_MMU_DISABLED(MIDX) ((MIDX) >= MMU_ABS_IDX)
+#define MMU_IDX_TO_PRIV(MIDX) ((MIDX) / 2)
+#define MMU_IDX_TO_P(MIDX) ((MIDX) & 1)
+#define PRIV_P_TO_MMU_IDX(PRIV, P) ((PRIV) * 2 + !!(P))
#define PRIV_KERNEL 0
#define PRIV_USER 3
-#define TARGET_INSN_START_EXTRA_WORDS 2
-
/* No need to flush MMU_ABS*_IDX */
#define HPPA_MMU_FLUSH_MASK \
(1 << MMU_KERNEL_IDX | 1 << MMU_KERNEL_P_IDX | \
@@ -186,7 +187,7 @@ typedef struct HPPATLBEntry {
struct HPPATLBEntry *unused_next;
};
- target_ulong pa;
+ hwaddr pa;
unsigned entry_valid : 1;
@@ -303,8 +304,6 @@ struct HPPACPUClass {
ResettablePhases parent_phases;
};
-#include "exec/cpu-all.h"
-
static inline bool hppa_is_pa20(const CPUHPPAState *env)
{
return env->is_pa20;
@@ -321,8 +320,8 @@ void hppa_translate_code(CPUState *cs, TranslationBlock *tb,
#define CPU_RESOLVING_TYPE TYPE_HPPA_CPU
-static inline target_ulong hppa_form_gva_mask(uint64_t gva_offset_mask,
- uint64_t spc, target_ulong off)
+static inline vaddr hppa_form_gva_mask(uint64_t gva_offset_mask,
+ uint64_t spc, target_ulong off)
{
#ifdef CONFIG_USER_ONLY
return off & gva_offset_mask;
@@ -331,8 +330,8 @@ static inline target_ulong hppa_form_gva_mask(uint64_t gva_offset_mask,
#endif
}
-static inline target_ulong hppa_form_gva(CPUHPPAState *env, uint64_t spc,
- target_ulong off)
+static inline vaddr hppa_form_gva(CPUHPPAState *env, uint64_t spc,
+ target_ulong off)
{
return hppa_form_gva_mask(env->gva_offset_mask, spc, off);
}
@@ -352,9 +351,6 @@ hwaddr hppa_abs_to_phys_pa2_w1(vaddr addr);
#define CS_BASE_DIFFPAGE (1 << 12)
#define CS_BASE_DIFFSPACE (1 << 13)
-void cpu_get_tb_cpu_state(CPUHPPAState *env, vaddr *pc,
- uint64_t *cs_base, uint32_t *pflags);
-
target_ulong cpu_hppa_get_psw(CPUHPPAState *env);
void cpu_hppa_put_psw(CPUHPPAState *env, target_ulong);
void update_gva_offset_mask(CPUHPPAState *env);