Commit 963262debc52f771c99c2bf2605a63f60134410d

Authored by blueswir1
1 parent 8fa211e8

Better SuperSPARC emulation (Robert Reif)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6123 c046a42c-6fe2-441c-8c8c-71466251a162
target-sparc/cpu.h
... ... @@ -210,6 +210,7 @@ typedef struct sparc_def_t {
210 210 uint32_t mmu_cxr_mask;
211 211 uint32_t mmu_sfsr_mask;
212 212 uint32_t mmu_trcr_mask;
  213 + uint32_t mxcc_version;
213 214 uint32_t features;
214 215 uint32_t nwindows;
215 216 uint32_t maxtl;
... ...
target-sparc/helper.c
... ... @@ -688,6 +688,7 @@ static int cpu_sparc_register(CPUSPARCState *env, const char *cpu_model)
688 688 #if !defined(TARGET_SPARC64)
689 689 env->mmuregs[0] |= def->mmu_version;
690 690 cpu_sparc_set_id(env, 0);
  691 + env->mxccregs[7] |= def->mxcc_version;
691 692 #else
692 693 env->mmu_version = def->mmu_version;
693 694 env->maxtl = def->maxtl;
... ... @@ -972,19 +973,6 @@ static const sparc_def_t sparc_defs[] = {
972 973 CPU_FEATURE_FSMULD,
973 974 },
974 975 {
975   - .name = "TI SuperSparc II",
976   - .iu_version = 0x40000000,
977   - .fpu_version = 0 << 17,
978   - .mmu_version = 0x04000000,
979   - .mmu_bm = 0x00002000,
980   - .mmu_ctpr_mask = 0xffffffc0,
981   - .mmu_cxr_mask = 0x0000ffff,
982   - .mmu_sfsr_mask = 0xffffffff,
983   - .mmu_trcr_mask = 0xffffffff,
984   - .nwindows = 8,
985   - .features = CPU_DEFAULT_FEATURES,
986   - },
987   - {
988 976 .name = "TI MicroSparc I",
989 977 .iu_version = 0x41000000,
990 978 .fpu_version = 4 << 17,
... ... @@ -1027,9 +1015,9 @@ static const sparc_def_t sparc_defs[] = {
1027 1015 },
1028 1016 {
1029 1017 .name = "TI SuperSparc 40", // STP1020NPGA
1030   - .iu_version = 0x41000000,
  1018 + .iu_version = 0x41000000, // SuperSPARC 2.x
1031 1019 .fpu_version = 0 << 17,
1032   - .mmu_version = 0x00000000,
  1020 + .mmu_version = 0x00000800, // SuperSPARC 2.x, no MXCC
1033 1021 .mmu_bm = 0x00002000,
1034 1022 .mmu_ctpr_mask = 0xffffffc0,
1035 1023 .mmu_cxr_mask = 0x0000ffff,
... ... @@ -1040,9 +1028,9 @@ static const sparc_def_t sparc_defs[] = {
1040 1028 },
1041 1029 {
1042 1030 .name = "TI SuperSparc 50", // STP1020PGA
1043   - .iu_version = 0x40000000,
  1031 + .iu_version = 0x40000000, // SuperSPARC 3.x
1044 1032 .fpu_version = 0 << 17,
1045   - .mmu_version = 0x04000000,
  1033 + .mmu_version = 0x01000800, // SuperSPARC 3.x, no MXCC
1046 1034 .mmu_bm = 0x00002000,
1047 1035 .mmu_ctpr_mask = 0xffffffc0,
1048 1036 .mmu_cxr_mask = 0x0000ffff,
... ... @@ -1053,22 +1041,23 @@ static const sparc_def_t sparc_defs[] = {
1053 1041 },
1054 1042 {
1055 1043 .name = "TI SuperSparc 51",
1056   - .iu_version = 0x43000000,
  1044 + .iu_version = 0x40000000, // SuperSPARC 3.x
1057 1045 .fpu_version = 0 << 17,
1058   - .mmu_version = 0x04000000,
  1046 + .mmu_version = 0x01000000, // SuperSPARC 3.x, MXCC
1059 1047 .mmu_bm = 0x00002000,
1060 1048 .mmu_ctpr_mask = 0xffffffc0,
1061 1049 .mmu_cxr_mask = 0x0000ffff,
1062 1050 .mmu_sfsr_mask = 0xffffffff,
1063 1051 .mmu_trcr_mask = 0xffffffff,
  1052 + .mxcc_version = 0x00000104,
1064 1053 .nwindows = 8,
1065 1054 .features = CPU_DEFAULT_FEATURES,
1066 1055 },
1067 1056 {
1068 1057 .name = "TI SuperSparc 60", // STP1020APGA
1069   - .iu_version = 0x40000000,
  1058 + .iu_version = 0x40000000, // SuperSPARC 3.x
1070 1059 .fpu_version = 0 << 17,
1071   - .mmu_version = 0x03000000,
  1060 + .mmu_version = 0x01000800, // SuperSPARC 3.x, no MXCC
1072 1061 .mmu_bm = 0x00002000,
1073 1062 .mmu_ctpr_mask = 0xffffffc0,
1074 1063 .mmu_cxr_mask = 0x0000ffff,
... ... @@ -1079,14 +1068,29 @@ static const sparc_def_t sparc_defs[] = {
1079 1068 },
1080 1069 {
1081 1070 .name = "TI SuperSparc 61",
1082   - .iu_version = 0x44000000,
  1071 + .iu_version = 0x44000000, // SuperSPARC 3.x
1083 1072 .fpu_version = 0 << 17,
1084   - .mmu_version = 0x04000000,
  1073 + .mmu_version = 0x01000000, // SuperSPARC 3.x, MXCC
  1074 + .mmu_bm = 0x00002000,
  1075 + .mmu_ctpr_mask = 0xffffffc0,
  1076 + .mmu_cxr_mask = 0x0000ffff,
  1077 + .mmu_sfsr_mask = 0xffffffff,
  1078 + .mmu_trcr_mask = 0xffffffff,
  1079 + .mxcc_version = 0x00000104,
  1080 + .nwindows = 8,
  1081 + .features = CPU_DEFAULT_FEATURES,
  1082 + },
  1083 + {
  1084 + .name = "TI SuperSparc II",
  1085 + .iu_version = 0x40000000, // SuperSPARC II 1.x
  1086 + .fpu_version = 0 << 17,
  1087 + .mmu_version = 0x08000000, // SuperSPARC II 1.x, MXCC
1085 1088 .mmu_bm = 0x00002000,
1086 1089 .mmu_ctpr_mask = 0xffffffc0,
1087 1090 .mmu_cxr_mask = 0x0000ffff,
1088 1091 .mmu_sfsr_mask = 0xffffffff,
1089 1092 .mmu_trcr_mask = 0xffffffff,
  1093 + .mxcc_version = 0x00000104,
1090 1094 .nwindows = 8,
1091 1095 .features = CPU_DEFAULT_FEATURES,
1092 1096 },
... ...