qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 1/1] Add the CPU Identifier required for ARM 920T cp


From: Vincent Sanders
Subject: [Qemu-devel] [PATCH 1/1] Add the CPU Identifier required for ARM 920T cpu cores
Date: Tue, 26 May 2009 10:41:35 +0100

Signed-off-by: Vincent Sanders <address@hidden>
---
 target-arm/cpu.h    |    1 +
 target-arm/helper.c |   15 +++++++++++++++
 2 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/target-arm/cpu.h b/target-arm/cpu.h
index f98655f..eafaeaf 100644
--- a/target-arm/cpu.h
+++ b/target-arm/cpu.h
@@ -370,6 +370,7 @@ void cpu_arm_set_cp_io(CPUARMState *env, int cpnum,
 #define ARM_CPUID_ARM1026     0x4106a262
 #define ARM_CPUID_ARM926      0x41069265
 #define ARM_CPUID_ARM946      0x41059461
+#define ARM_CPUID_ARM920T     0x41129200
 #define ARM_CPUID_TI915T      0x54029152
 #define ARM_CPUID_TI925T      0x54029252
 #define ARM_CPUID_PXA250      0x69052100
diff --git a/target-arm/helper.c b/target-arm/helper.c
index 701629a..2439267 100644
--- a/target-arm/helper.c
+++ b/target-arm/helper.c
@@ -37,6 +37,20 @@ static void cpu_reset_model_id(CPUARMState *env, uint32_t id)
 {
     env->cp15.c0_cpuid = id;
     switch (id) {
+    case ARM_CPUID_ARM920T:
+        /* This processor is an ARMv4 and not ARMv5 which is the default
+         *   emulation level. The additional v5 instructions (blx clz ldrd pld
+         *   smlabb smlabt smlatt smlal smlawb smlawt smulbb smulbt smultt
+         *   smulwb smulwt qadd qdadd qdsub qsub strd) will all be successfully
+         *   executed instead of causing an unknown instruction fault.
+         *
+         * In practice this does not appear to be an issue and several boot
+         *   loaders, Linux kernels, BSD kernels and their user space all
+         *   appear to execute without problems.
+         */
+        env->cp15.c0_cachetype = 0x0d172172;
+        env->cp15.c1_sys = 0x00000078;
+        break;
     case ARM_CPUID_ARM926:
         set_feature(env, ARM_FEATURE_VFP);
         env->vfp.xregs[ARM_VFP_FPSID] = 0x41011090;
@@ -277,6 +291,7 @@ struct arm_cpu_t {
 };
 
 static const struct arm_cpu_t arm_cpu_names[] = {
+    { ARM_CPUID_ARM920T, "arm920t"},
     { ARM_CPUID_ARM926, "arm926"},
     { ARM_CPUID_ARM946, "arm946"},
     { ARM_CPUID_ARM1026, "arm1026"},
-- 
1.6.0.4





reply via email to

[Prev in Thread] Current Thread [Next in Thread]