[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 10/33] target-alpha: Cleanup MMU modes.
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 10/33] target-alpha: Cleanup MMU modes. |
Date: |
Thu, 28 Apr 2011 13:50:52 -0700 |
Don't bother including executive and supervisor modes.
Signed-off-by: Richard Henderson <address@hidden>
---
target-alpha/cpu.h | 36 ++++++++++++++++++++++++++++--------
1 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/target-alpha/cpu.h b/target-alpha/cpu.h
index 1fc21dc..bdd396c 100644
--- a/target-alpha/cpu.h
+++ b/target-alpha/cpu.h
@@ -192,6 +192,33 @@ enum {
#define SWCR_MASK (SWCR_TRAP_ENABLE_MASK | SWCR_MAP_MASK | SWCR_STATUS_MASK)
+/* MMU modes definitions */
+
+/* Alpha has 5 MMU modes: PALcode, kernel, executive, supervisor, and user.
+ The Unix PALcode only exposes the kernel and user modes; presumably
+ executive and supervisor are used by VMS.
+
+ PALcode itself uses physical mode for code and kernel mode for data;
+ there are PALmode instructions that can access data via physical mode
+ or via an os-installed "alternate mode", which is one of the 4 above.
+
+ QEMU does not currently properly distinguish between code/data when
+ looking up addresses. To avoid having to address this issue, our
+ emulated PALcode will cheat and use the KSEG mapping for its code+data
+ rather than physical addresses.
+
+ Moreover, we're only emulating Unix PALcode, and not attempting VMS.
+
+ All of which allows us to drop all but kernel and user modes.
+ Elide the unused MMU modes to save space. */
+
+#define NB_MMU_MODES 2
+
+#define MMU_MODE0_SUFFIX _kernel
+#define MMU_MODE1_SUFFIX _user
+#define MMU_KERNEL_IDX 0
+#define MMU_USER_IDX 1
+
typedef struct CPUAlphaState CPUAlphaState;
struct CPUAlphaState {
@@ -246,16 +273,9 @@ struct CPUAlphaState {
#define cpu_gen_code cpu_alpha_gen_code
#define cpu_signal_handler cpu_alpha_signal_handler
-/* MMU modes definitions */
-#define NB_MMU_MODES 4
-#define MMU_MODE0_SUFFIX _kernel
-#define MMU_MODE1_SUFFIX _executive
-#define MMU_MODE2_SUFFIX _supervisor
-#define MMU_MODE3_SUFFIX _user
-#define MMU_USER_IDX 3
static inline int cpu_mmu_index (CPUState *env)
{
- return (env->ps >> 3) & 3;
+ return (env->ps >> 3) & 1;
}
#include "cpu-all.h"
--
1.7.4.4
- [Qemu-devel] [PATCH 03/33] target-alpha: Disassemble EV6 PALcode instructions., (continued)
- [Qemu-devel] [PATCH 04/33] pci: Export pci_to_cpu_addr., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 07/33] target-alpha: Enable the alpha-softmmu target., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 08/33] target-alpha: Tidy exception constants., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 06/33] target-alpha: Remove partial support for palcode emulation., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 10/33] target-alpha: Cleanup MMU modes.,
Richard Henderson <=
- [Qemu-devel] [PATCH 09/33] target-alpha: Rationalize internal processor registers., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 11/33] target-alpha: Fixup translation of PALmode instructions., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 13/33] target-alpha: Tidy up arithmetic exceptions., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 14/33] target-alpha: Use do_restore_state for arithmetic exceptions., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 15/33] target-alpha: Merge HW_REI and HW_RET implementations., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 12/33] target-alpha: Add IPRs to be used by the emulation PALcode., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 16/33] target-alpha: Implement do_interrupt for system mode., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 17/33] target-alpha: Swap shadow registers moving to/from PALmode., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 19/33] target-alpha: Use kernel mmu_idx for pal_mode., Richard Henderson, 2011/04/28
- [Qemu-devel] [PATCH 18/33] target-alpha: Add various symbolic constants., Richard Henderson, 2011/04/28