Commit fe2b269a4ff4ed0b06c2dca5083fb2271da1c506

Authored by aurel32
1 parent f18cd223

target-alpha: misc fixes

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5355 c046a42c-6fe2-441c-8c8c-71466251a162
target-alpha/op.c
... ... @@ -25,15 +25,6 @@
25 25 #include "host-utils.h"
26 26 #include "op_helper.h"
27 27  
28   -/* Debug stuff */
29   -void OPPROTO op_no_op (void)
30   -{
31   -#if !defined (DEBUG_OP)
32   - __asm__ __volatile__("nop" : : : "memory");
33   -#endif
34   - RETURN();
35   -}
36   -
37 28 /* Load and stores */
38 29 #define MEMSUFFIX _raw
39 30 #include "op_mem.h"
... ...
target-alpha/op_helper.h
... ... @@ -43,5 +43,4 @@ void helper_mfpr (int iprn);
43 43 void helper_mtpr (int iprn);
44 44 void helper_ld_phys_to_virt (void);
45 45 void helper_st_phys_to_virt (void);
46   -void helper_tb_flush (void);
47 46  
... ...
target-alpha/translate.c
... ... @@ -31,7 +31,6 @@
31 31 #include "qemu-common.h"
32 32  
33 33 #define DO_SINGLE_STEP
34   -#define GENERATE_NOP
35 34 #define ALPHA_DEBUG_DISAS
36 35 #define DO_TB_FLUSH
37 36  
... ... @@ -104,13 +103,6 @@ static void alpha_translate_init(void)
104 103 done_init = 1;
105 104 }
106 105  
107   -static always_inline void gen_op_nop (void)
108   -{
109   -#if defined(GENERATE_NOP)
110   - gen_op_no_op();
111   -#endif
112   -}
113   -
114 106 /* Memory moves */
115 107 #if defined(CONFIG_USER_ONLY)
116 108 #define OP_LD_TABLE(width) \
... ... @@ -184,10 +176,7 @@ static always_inline void gen_load_mem_dyngen (DisasContext *ctx,
184 176 int ra, int rb, int32_t disp16,
185 177 int clear)
186 178 {
187   - if (ra == 31 && disp16 == 0) {
188   - /* UNOP */
189   - gen_op_nop();
190   - } else {
  179 + if (ra != 31 || disp16 != 0) {
191 180 if (rb != 31)
192 181 tcg_gen_addi_i64(cpu_T[0], cpu_ir[rb], disp16);
193 182 else
... ... @@ -374,8 +363,7 @@ static always_inline void gen_fbcond (DisasContext *ctx,
374 363 gen_set_label(l2);
375 364 }
376 365  
377   -static always_inline void gen_cmov (DisasContext *ctx,
378   - TCGCond inv_cond,
  366 +static always_inline void gen_cmov (TCGCond inv_cond,
379 367 int ra, int rb, int rc,
380 368 int islit, uint8_t lit, int mask)
381 369 {
... ... @@ -487,7 +475,7 @@ static always_inline void gen_ext_h(void (*tcg_gen_ext_i64)(TCGv t0, TCGv t1),
487 475 tcg_gen_shli_i64(cpu_ir[rc], cpu_ir[ra], 64 - ((lit & 7) * 8));
488 476 else
489 477 tcg_gen_mov_i64(cpu_ir[rc], cpu_ir[ra]);
490   - } else {
  478 + } else {
491 479 TCGv tmp1, tmp2;
492 480 tmp1 = tcg_temp_new(TCG_TYPE_I64);
493 481 tcg_gen_andi_i64(tmp1, cpu_ir[rb], 7);
... ... @@ -521,7 +509,7 @@ static always_inline void gen_ext_l(void (*tcg_gen_ext_i64)(TCGv t0, TCGv t1),
521 509 tcg_gen_shli_i64(tmp, tmp, 3);
522 510 tcg_gen_shr_i64(cpu_ir[rc], cpu_ir[ra], tmp);
523 511 tcg_temp_free(tmp);
524   - }
  512 + }
525 513 if (tcg_gen_ext_i64)
526 514 tcg_gen_ext_i64(cpu_ir[rc], cpu_ir[rc]);
527 515 } else
... ... @@ -529,9 +517,9 @@ static always_inline void gen_ext_l(void (*tcg_gen_ext_i64)(TCGv t0, TCGv t1),
529 517 }
530 518  
531 519 /* Code to call arith3 helpers */
532   -static always_inline void gen_arith3_helper(void *helper,
533   - int ra, int rb, int rc,
534   - int islit, uint8_t lit)
  520 +static always_inline void gen_arith3 (void *helper,
  521 + int ra, int rb, int rc,
  522 + int islit, uint8_t lit)
535 523 {
536 524 if (unlikely(rc == 31))
537 525 return;
... ... @@ -792,7 +780,7 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
792 780 break;
793 781 case 0x0F:
794 782 /* CMPBGE */
795   - gen_arith3_helper(helper_cmpbge, ra, rb, rc, islit, lit);
  783 + gen_arith3(helper_cmpbge, ra, rb, rc, islit, lit);
796 784 break;
797 785 case 0x12:
798 786 /* S8ADDL */
... ... @@ -958,11 +946,11 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
958 946 break;
959 947 case 0x40:
960 948 /* ADDL/V */
961   - gen_arith3_helper(helper_addlv, ra, rb, rc, islit, lit);
  949 + gen_arith3(helper_addlv, ra, rb, rc, islit, lit);
962 950 break;
963 951 case 0x49:
964 952 /* SUBL/V */
965   - gen_arith3_helper(helper_sublv, ra, rb, rc, islit, lit);
  953 + gen_arith3(helper_sublv, ra, rb, rc, islit, lit);
966 954 break;
967 955 case 0x4D:
968 956 /* CMPLT */
... ... @@ -970,11 +958,11 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
970 958 break;
971 959 case 0x60:
972 960 /* ADDQ/V */
973   - gen_arith3_helper(helper_addqv, ra, rb, rc, islit, lit);
  961 + gen_arith3(helper_addqv, ra, rb, rc, islit, lit);
974 962 break;
975 963 case 0x69:
976 964 /* SUBQ/V */
977   - gen_arith3_helper(helper_subqv, ra, rb, rc, islit, lit);
  965 + gen_arith3(helper_subqv, ra, rb, rc, islit, lit);
978 966 break;
979 967 case 0x6D:
980 968 /* CMPLE */
... ... @@ -1015,11 +1003,11 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1015 1003 break;
1016 1004 case 0x14:
1017 1005 /* CMOVLBS */
1018   - gen_cmov(ctx, TCG_COND_EQ, ra, rb, rc, islit, lit, 1);
  1006 + gen_cmov(TCG_COND_EQ, ra, rb, rc, islit, lit, 1);
1019 1007 break;
1020 1008 case 0x16:
1021 1009 /* CMOVLBC */
1022   - gen_cmov(ctx, TCG_COND_NE, ra, rb, rc, islit, lit, 1);
  1010 + gen_cmov(TCG_COND_NE, ra, rb, rc, islit, lit, 1);
1023 1011 break;
1024 1012 case 0x20:
1025 1013 /* BIS */
... ... @@ -1027,7 +1015,7 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1027 1015 if (ra != 31) {
1028 1016 if (islit)
1029 1017 tcg_gen_ori_i64(cpu_ir[rc], cpu_ir[ra], lit);
1030   - else
  1018 + else
1031 1019 tcg_gen_or_i64(cpu_ir[rc], cpu_ir[ra], cpu_ir[rb]);
1032 1020 } else {
1033 1021 if (islit)
... ... @@ -1039,11 +1027,11 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1039 1027 break;
1040 1028 case 0x24:
1041 1029 /* CMOVEQ */
1042   - gen_cmov(ctx, TCG_COND_NE, ra, rb, rc, islit, lit, 0);
  1030 + gen_cmov(TCG_COND_NE, ra, rb, rc, islit, lit, 0);
1043 1031 break;
1044 1032 case 0x26:
1045 1033 /* CMOVNE */
1046   - gen_cmov(ctx, TCG_COND_EQ, ra, rb, rc, islit, lit, 0);
  1034 + gen_cmov(TCG_COND_EQ, ra, rb, rc, islit, lit, 0);
1047 1035 break;
1048 1036 case 0x28:
1049 1037 /* ORNOT */
... ... @@ -1083,11 +1071,11 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1083 1071 break;
1084 1072 case 0x44:
1085 1073 /* CMOVLT */
1086   - gen_cmov(ctx, TCG_COND_GE, ra, rb, rc, islit, lit, 0);
  1074 + gen_cmov(TCG_COND_GE, ra, rb, rc, islit, lit, 0);
1087 1075 break;
1088 1076 case 0x46:
1089 1077 /* CMOVGE */
1090   - gen_cmov(ctx, TCG_COND_LT, ra, rb, rc, islit, lit, 0);
  1078 + gen_cmov(TCG_COND_LT, ra, rb, rc, islit, lit, 0);
1091 1079 break;
1092 1080 case 0x48:
1093 1081 /* EQV */
... ... @@ -1120,11 +1108,11 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1120 1108 break;
1121 1109 case 0x64:
1122 1110 /* CMOVLE */
1123   - gen_cmov(ctx, TCG_COND_GT, ra, rb, rc, islit, lit, 0);
  1111 + gen_cmov(TCG_COND_GT, ra, rb, rc, islit, lit, 0);
1124 1112 break;
1125 1113 case 0x66:
1126 1114 /* CMOVGT */
1127   - gen_cmov(ctx, TCG_COND_LE, ra, rb, rc, islit, lit, 0);
  1115 + gen_cmov(TCG_COND_LE, ra, rb, rc, islit, lit, 0);
1128 1116 break;
1129 1117 case 0x6C:
1130 1118 /* IMPLVER */
... ... @@ -1139,7 +1127,7 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1139 1127 switch (fn7) {
1140 1128 case 0x02:
1141 1129 /* MSKBL */
1142   - gen_arith3_helper(helper_mskbl, ra, rb, rc, islit, lit);
  1130 + gen_arith3(helper_mskbl, ra, rb, rc, islit, lit);
1143 1131 break;
1144 1132 case 0x06:
1145 1133 /* EXTBL */
... ... @@ -1147,11 +1135,11 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1147 1135 break;
1148 1136 case 0x0B:
1149 1137 /* INSBL */
1150   - gen_arith3_helper(helper_insbl, ra, rb, rc, islit, lit);
  1138 + gen_arith3(helper_insbl, ra, rb, rc, islit, lit);
1151 1139 break;
1152 1140 case 0x12:
1153 1141 /* MSKWL */
1154   - gen_arith3_helper(helper_mskwl, ra, rb, rc, islit, lit);
  1142 + gen_arith3(helper_mskwl, ra, rb, rc, islit, lit);
1155 1143 break;
1156 1144 case 0x16:
1157 1145 /* EXTWL */
... ... @@ -1159,11 +1147,11 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1159 1147 break;
1160 1148 case 0x1B:
1161 1149 /* INSWL */
1162   - gen_arith3_helper(helper_inswl, ra, rb, rc, islit, lit);
  1150 + gen_arith3(helper_inswl, ra, rb, rc, islit, lit);
1163 1151 break;
1164 1152 case 0x22:
1165 1153 /* MSKLL */
1166   - gen_arith3_helper(helper_mskll, ra, rb, rc, islit, lit);
  1154 + gen_arith3(helper_mskll, ra, rb, rc, islit, lit);
1167 1155 break;
1168 1156 case 0x26:
1169 1157 /* EXTLL */
... ... @@ -1171,19 +1159,19 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1171 1159 break;
1172 1160 case 0x2B:
1173 1161 /* INSLL */
1174   - gen_arith3_helper(helper_insll, ra, rb, rc, islit, lit);
  1162 + gen_arith3(helper_insll, ra, rb, rc, islit, lit);
1175 1163 break;
1176 1164 case 0x30:
1177 1165 /* ZAP */
1178   - gen_arith3_helper(helper_zap, ra, rb, rc, islit, lit);
  1166 + gen_arith3(helper_zap, ra, rb, rc, islit, lit);
1179 1167 break;
1180 1168 case 0x31:
1181 1169 /* ZAPNOT */
1182   - gen_arith3_helper(helper_zapnot, ra, rb, rc, islit, lit);
  1170 + gen_arith3(helper_zapnot, ra, rb, rc, islit, lit);
1183 1171 break;
1184 1172 case 0x32:
1185 1173 /* MSKQL */
1186   - gen_arith3_helper(helper_mskql, ra, rb, rc, islit, lit);
  1174 + gen_arith3(helper_mskql, ra, rb, rc, islit, lit);
1187 1175 break;
1188 1176 case 0x34:
1189 1177 /* SRL */
... ... @@ -1223,7 +1211,7 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1223 1211 break;
1224 1212 case 0x3B:
1225 1213 /* INSQL */
1226   - gen_arith3_helper(helper_insql, ra, rb, rc, islit, lit);
  1214 + gen_arith3(helper_insql, ra, rb, rc, islit, lit);
1227 1215 break;
1228 1216 case 0x3C:
1229 1217 /* SRA */
... ... @@ -1243,11 +1231,11 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1243 1231 break;
1244 1232 case 0x52:
1245 1233 /* MSKWH */
1246   - gen_arith3_helper(helper_mskwh, ra, rb, rc, islit, lit);
  1234 + gen_arith3(helper_mskwh, ra, rb, rc, islit, lit);
1247 1235 break;
1248 1236 case 0x57:
1249 1237 /* INSWH */
1250   - gen_arith3_helper(helper_inswh, ra, rb, rc, islit, lit);
  1238 + gen_arith3(helper_inswh, ra, rb, rc, islit, lit);
1251 1239 break;
1252 1240 case 0x5A:
1253 1241 /* EXTWH */
... ... @@ -1255,11 +1243,11 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1255 1243 break;
1256 1244 case 0x62:
1257 1245 /* MSKLH */
1258   - gen_arith3_helper(helper_msklh, ra, rb, rc, islit, lit);
  1246 + gen_arith3(helper_msklh, ra, rb, rc, islit, lit);
1259 1247 break;
1260 1248 case 0x67:
1261 1249 /* INSLH */
1262   - gen_arith3_helper(helper_inslh, ra, rb, rc, islit, lit);
  1250 + gen_arith3(helper_inslh, ra, rb, rc, islit, lit);
1263 1251 break;
1264 1252 case 0x6A:
1265 1253 /* EXTLH */
... ... @@ -1267,11 +1255,11 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1267 1255 break;
1268 1256 case 0x72:
1269 1257 /* MSKQH */
1270   - gen_arith3_helper(helper_mskqh, ra, rb, rc, islit, lit);
  1258 + gen_arith3(helper_mskqh, ra, rb, rc, islit, lit);
1271 1259 break;
1272 1260 case 0x77:
1273 1261 /* INSQH */
1274   - gen_arith3_helper(helper_insqh, ra, rb, rc, islit, lit);
  1262 + gen_arith3(helper_insqh, ra, rb, rc, islit, lit);
1275 1263 break;
1276 1264 case 0x7A:
1277 1265 /* EXTQH */
... ... @@ -1310,15 +1298,15 @@ static always_inline int translate_one (DisasContext *ctx, uint32_t insn)
1310 1298 break;
1311 1299 case 0x30:
1312 1300 /* UMULH */
1313   - gen_arith3_helper(helper_umulh, ra, rb, rc, islit, lit);
  1301 + gen_arith3(helper_umulh, ra, rb, rc, islit, lit);
1314 1302 break;
1315 1303 case 0x40:
1316 1304 /* MULL/V */
1317   - gen_arith3_helper(helper_mullv, ra, rb, rc, islit, lit);
  1305 + gen_arith3(helper_mullv, ra, rb, rc, islit, lit);
1318 1306 break;
1319 1307 case 0x60:
1320 1308 /* MULQ/V */
1321   - gen_arith3_helper(helper_mulqv, ra, rb, rc, islit, lit);
  1309 + gen_arith3(helper_mulqv, ra, rb, rc, islit, lit);
1322 1310 break;
1323 1311 default:
1324 1312 goto invalid_opc;
... ... @@ -2397,7 +2385,7 @@ static always_inline void gen_intermediate_code_internal (CPUState *env,
2397 2385 }
2398 2386 if (loglevel & CPU_LOG_TB_IN_ASM) {
2399 2387 fprintf(logfile, "IN: %s\n", lookup_symbol(pc_start));
2400   - target_disas(logfile, pc_start, ctx.pc - pc_start, 1);
  2388 + target_disas(logfile, pc_start, ctx.pc - pc_start, 1);
2401 2389 fprintf(logfile, "\n");
2402 2390 }
2403 2391 #endif
... ...