Commit 5dc4b744806b5f7487989e42a84322fbd5810877
1 parent
c570fd16
Scrap SIGN_EXTEND32.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2251 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
6 changed files
with
79 additions
and
78 deletions
hw/mips_r4k.c
... | ... | @@ -11,10 +11,14 @@ |
11 | 11 | |
12 | 12 | #define BIOS_FILENAME "mips_bios.bin" |
13 | 13 | //#define BIOS_FILENAME "system.bin" |
14 | -#define KERNEL_LOAD_ADDR SIGN_EXTEND32(0x80010000) | |
15 | -#define INITRD_LOAD_ADDR SIGN_EXTEND32(0x80800000) | |
14 | +#define KERNEL_LOAD_ADDR (int32_t)0x80010000 | |
15 | +#ifdef MIPS_HAS_MIPS64 | |
16 | +#define INITRD_LOAD_ADDR (int64_t)0x80800000 | |
17 | +#else | |
18 | +#define INITRD_LOAD_ADDR (int32_t)0x80800000 | |
19 | +#endif | |
16 | 20 | |
17 | -#define VIRT_TO_PHYS_ADDEND (-SIGN_EXTEND32(0x80000000LL)) | |
21 | +#define VIRT_TO_PHYS_ADDEND (-((int64_t)(int32_t)0x80000000)) | |
18 | 22 | |
19 | 23 | static const int ide_iobase[2] = { 0x1f0, 0x170 }; |
20 | 24 | static const int ide_iobase2[2] = { 0x3f6, 0x376 }; |
... | ... | @@ -76,7 +80,7 @@ void load_kernel (CPUState *env, int ram_size, const char *kernel_filename, |
76 | 80 | kernel_size = load_elf(kernel_filename, VIRT_TO_PHYS_ADDEND, &entry); |
77 | 81 | if (kernel_size >= 0) { |
78 | 82 | if ((entry & ~0x7fffffffULL) == 0x80000000) |
79 | - entry = SIGN_EXTEND32(entry); | |
83 | + entry = (int32_t)entry; | |
80 | 84 | env->PC = entry; |
81 | 85 | } else { |
82 | 86 | kernel_size = load_image(kernel_filename, | ... | ... |
target-mips/cpu.h
... | ... | @@ -15,13 +15,10 @@ typedef unsigned char uint_fast8_t; |
15 | 15 | typedef unsigned int uint_fast16_t; |
16 | 16 | #endif |
17 | 17 | |
18 | -#ifdef MIPS_HAS_MIPS64 | |
19 | -#define SIGN_EXTEND32(val) (((((uint64_t)(val)) & 0xFFFFFFFF) ^ 0x80000000) - 0x80000000) | |
20 | 18 | /* target_ulong size spec */ |
19 | +#ifdef MIPS_HAS_MIPS64 | |
21 | 20 | #define TLSZ "%016llx" |
22 | 21 | #else |
23 | -#define SIGN_EXTEND32(val) (val) | |
24 | -/* target_ulong size spec */ | |
25 | 22 | #define TLSZ "%08x" |
26 | 23 | #endif |
27 | 24 | ... | ... |
target-mips/helper.c
... | ... | @@ -86,7 +86,7 @@ static int get_physical_address (CPUState *env, target_ulong *physical, |
86 | 86 | #endif |
87 | 87 | if (user_mode && address > 0x7FFFFFFFUL) |
88 | 88 | return TLBRET_BADADDR; |
89 | - if (address < SIGN_EXTEND32(0x80000000UL)) { | |
89 | + if (address < (int32_t)0x80000000UL) { | |
90 | 90 | if (!(env->hflags & MIPS_HFLAG_ERL)) { |
91 | 91 | #ifdef MIPS_USES_R4K_TLB |
92 | 92 | ret = map_address(env, physical, prot, address, rw, access_type); |
... | ... | @@ -98,17 +98,17 @@ static int get_physical_address (CPUState *env, target_ulong *physical, |
98 | 98 | *physical = address; |
99 | 99 | *prot = PAGE_READ | PAGE_WRITE; |
100 | 100 | } |
101 | - } else if (address < SIGN_EXTEND32(0xA0000000UL)) { | |
101 | + } else if (address < (int32_t)0xA0000000UL) { | |
102 | 102 | /* kseg0 */ |
103 | 103 | /* XXX: check supervisor mode */ |
104 | - *physical = address - SIGN_EXTEND32(0x80000000UL); | |
104 | + *physical = address - (int32_t)0x80000000UL; | |
105 | 105 | *prot = PAGE_READ | PAGE_WRITE; |
106 | - } else if (address < SIGN_EXTEND32(0xC0000000UL)) { | |
106 | + } else if (address < (int32_t)0xC0000000UL) { | |
107 | 107 | /* kseg1 */ |
108 | 108 | /* XXX: check supervisor mode */ |
109 | - *physical = address - SIGN_EXTEND32(0xA0000000UL); | |
109 | + *physical = address - (int32_t)0xA0000000UL; | |
110 | 110 | *prot = PAGE_READ | PAGE_WRITE; |
111 | - } else if (address < SIGN_EXTEND32(0xE0000000UL)) { | |
111 | + } else if (address < (int32_t)0xE0000000UL) { | |
112 | 112 | /* kseg2 */ |
113 | 113 | #ifdef MIPS_USES_R4K_TLB |
114 | 114 | ret = map_address(env, physical, prot, address, rw, access_type); |
... | ... | @@ -299,7 +299,7 @@ void do_interrupt (CPUState *env) |
299 | 299 | enter_debug_mode: |
300 | 300 | env->hflags |= MIPS_HFLAG_DM; |
301 | 301 | /* EJTAG probe trap enable is not implemented... */ |
302 | - env->PC = SIGN_EXTEND32(0xBFC00480); | |
302 | + env->PC = (int32_t)0xBFC00480; | |
303 | 303 | break; |
304 | 304 | case EXCP_RESET: |
305 | 305 | cpu_reset(env); |
... | ... | @@ -321,7 +321,7 @@ void do_interrupt (CPUState *env) |
321 | 321 | } |
322 | 322 | env->hflags |= MIPS_HFLAG_ERL; |
323 | 323 | env->CP0_Status |= (1 << CP0St_ERL) | (1 << CP0St_BEV); |
324 | - env->PC = SIGN_EXTEND32(0xBFC00000); | |
324 | + env->PC = (int32_t)0xBFC00000; | |
325 | 325 | break; |
326 | 326 | case EXCP_MCHECK: |
327 | 327 | cause = 24; |
... | ... | @@ -389,9 +389,9 @@ void do_interrupt (CPUState *env) |
389 | 389 | env->CP0_Cause &= ~0x80000000; |
390 | 390 | } |
391 | 391 | if (env->CP0_Status & (1 << CP0St_BEV)) { |
392 | - env->PC = SIGN_EXTEND32(0xBFC00200); | |
392 | + env->PC = (int32_t)0xBFC00200; | |
393 | 393 | } else { |
394 | - env->PC = SIGN_EXTEND32(0x80000000); | |
394 | + env->PC = (int32_t)0x80000000; | |
395 | 395 | } |
396 | 396 | env->hflags |= MIPS_HFLAG_EXL; |
397 | 397 | env->CP0_Status |= (1 << CP0St_EXL); | ... | ... |
target-mips/op.c
... | ... | @@ -328,7 +328,7 @@ void op_store_LO (void) |
328 | 328 | /* Arithmetic */ |
329 | 329 | void op_add (void) |
330 | 330 | { |
331 | - T0 = SIGN_EXTEND32((int32_t)T0 + (int32_t)T1); | |
331 | + T0 = (int32_t)((int32_t)T0 + (int32_t)T1); | |
332 | 332 | RETURN(); |
333 | 333 | } |
334 | 334 | |
... | ... | @@ -342,13 +342,13 @@ void op_addo (void) |
342 | 342 | /* operands of same sign, result different sign */ |
343 | 343 | CALL_FROM_TB1(do_raise_exception_direct, EXCP_OVERFLOW); |
344 | 344 | } |
345 | - T0 = SIGN_EXTEND32(T0); | |
345 | + T0 = (int32_t)T0; | |
346 | 346 | RETURN(); |
347 | 347 | } |
348 | 348 | |
349 | 349 | void op_sub (void) |
350 | 350 | { |
351 | - T0 = SIGN_EXTEND32((int32_t)T0 - (int32_t)T1); | |
351 | + T0 = (int32_t)((int32_t)T0 - (int32_t)T1); | |
352 | 352 | RETURN(); |
353 | 353 | } |
354 | 354 | |
... | ... | @@ -362,21 +362,21 @@ void op_subo (void) |
362 | 362 | /* operands of different sign, first operand and result different sign */ |
363 | 363 | CALL_FROM_TB1(do_raise_exception_direct, EXCP_OVERFLOW); |
364 | 364 | } |
365 | - T0 = SIGN_EXTEND32(T0); | |
365 | + T0 = (int32_t)T0; | |
366 | 366 | RETURN(); |
367 | 367 | } |
368 | 368 | |
369 | 369 | void op_mul (void) |
370 | 370 | { |
371 | - T0 = SIGN_EXTEND32((int32_t)T0 * (int32_t)T1); | |
371 | + T0 = (int32_t)((int32_t)T0 * (int32_t)T1); | |
372 | 372 | RETURN(); |
373 | 373 | } |
374 | 374 | |
375 | 375 | void op_div (void) |
376 | 376 | { |
377 | 377 | if (T1 != 0) { |
378 | - env->LO = SIGN_EXTEND32((int32_t)T0 / (int32_t)T1); | |
379 | - env->HI = SIGN_EXTEND32((int32_t)T0 % (int32_t)T1); | |
378 | + env->LO = (int32_t)((int32_t)T0 / (int32_t)T1); | |
379 | + env->HI = (int32_t)((int32_t)T0 % (int32_t)T1); | |
380 | 380 | } |
381 | 381 | RETURN(); |
382 | 382 | } |
... | ... | @@ -384,8 +384,8 @@ void op_div (void) |
384 | 384 | void op_divu (void) |
385 | 385 | { |
386 | 386 | if (T1 != 0) { |
387 | - env->LO = SIGN_EXTEND32((uint32_t)T0 / (uint32_t)T1); | |
388 | - env->HI = SIGN_EXTEND32((uint32_t)T0 % (uint32_t)T1); | |
387 | + env->LO = (int32_t)((uint32_t)T0 / (uint32_t)T1); | |
388 | + env->HI = (int32_t)((uint32_t)T0 % (uint32_t)T1); | |
389 | 389 | } |
390 | 390 | RETURN(); |
391 | 391 | } |
... | ... | @@ -497,19 +497,19 @@ void op_xor (void) |
497 | 497 | |
498 | 498 | void op_sll (void) |
499 | 499 | { |
500 | - T0 = SIGN_EXTEND32((uint32_t)T0 << (uint32_t)T1); | |
500 | + T0 = (int32_t)((uint32_t)T0 << (uint32_t)T1); | |
501 | 501 | RETURN(); |
502 | 502 | } |
503 | 503 | |
504 | 504 | void op_sra (void) |
505 | 505 | { |
506 | - T0 = SIGN_EXTEND32((int32_t)T0 >> (uint32_t)T1); | |
506 | + T0 = (int32_t)((int32_t)T0 >> (uint32_t)T1); | |
507 | 507 | RETURN(); |
508 | 508 | } |
509 | 509 | |
510 | 510 | void op_srl (void) |
511 | 511 | { |
512 | - T0 = SIGN_EXTEND32((uint32_t)T0 >> (uint32_t)T1); | |
512 | + T0 = (int32_t)((uint32_t)T0 >> (uint32_t)T1); | |
513 | 513 | RETURN(); |
514 | 514 | } |
515 | 515 | |
... | ... | @@ -518,8 +518,8 @@ void op_rotr (void) |
518 | 518 | target_ulong tmp; |
519 | 519 | |
520 | 520 | if (T1) { |
521 | - tmp = SIGN_EXTEND32((uint32_t)T0 << (0x20 - (uint32_t)T1)); | |
522 | - T0 = SIGN_EXTEND32((uint32_t)T0 >> (uint32_t)T1) | tmp; | |
521 | + tmp = (int32_t)((uint32_t)T0 << (0x20 - (uint32_t)T1)); | |
522 | + T0 = (int32_t)((uint32_t)T0 >> (uint32_t)T1) | tmp; | |
523 | 523 | } else |
524 | 524 | T0 = T1; |
525 | 525 | RETURN(); |
... | ... | @@ -527,19 +527,19 @@ void op_rotr (void) |
527 | 527 | |
528 | 528 | void op_sllv (void) |
529 | 529 | { |
530 | - T0 = SIGN_EXTEND32((uint32_t)T1 << ((uint32_t)T0 & 0x1F)); | |
530 | + T0 = (int32_t)((uint32_t)T1 << ((uint32_t)T0 & 0x1F)); | |
531 | 531 | RETURN(); |
532 | 532 | } |
533 | 533 | |
534 | 534 | void op_srav (void) |
535 | 535 | { |
536 | - T0 = SIGN_EXTEND32((int32_t)T1 >> (T0 & 0x1F)); | |
536 | + T0 = (int32_t)((int32_t)T1 >> (T0 & 0x1F)); | |
537 | 537 | RETURN(); |
538 | 538 | } |
539 | 539 | |
540 | 540 | void op_srlv (void) |
541 | 541 | { |
542 | - T0 = SIGN_EXTEND32((uint32_t)T1 >> (T0 & 0x1F)); | |
542 | + T0 = (int32_t)((uint32_t)T1 >> (T0 & 0x1F)); | |
543 | 543 | RETURN(); |
544 | 544 | } |
545 | 545 | |
... | ... | @@ -549,8 +549,8 @@ void op_rotrv (void) |
549 | 549 | |
550 | 550 | T0 &= 0x1F; |
551 | 551 | if (T0) { |
552 | - tmp = SIGN_EXTEND32((uint32_t)T1 << (0x20 - T0)); | |
553 | - T0 = SIGN_EXTEND32((uint32_t)T1 >> T0) | tmp; | |
552 | + tmp = (int32_t)((uint32_t)T1 << (0x20 - T0)); | |
553 | + T0 = (int32_t)((uint32_t)T1 >> T0) | tmp; | |
554 | 554 | } else |
555 | 555 | T0 = T1; |
556 | 556 | RETURN(); |
... | ... | @@ -842,8 +842,8 @@ static inline uint64_t get_HILO (void) |
842 | 842 | |
843 | 843 | static inline void set_HILO (uint64_t HILO) |
844 | 844 | { |
845 | - env->LO = SIGN_EXTEND32(HILO & 0xFFFFFFFF); | |
846 | - env->HI = SIGN_EXTEND32(HILO >> 32); | |
845 | + env->LO = (int32_t)(HILO & 0xFFFFFFFF); | |
846 | + env->HI = (int32_t)(HILO >> 32); | |
847 | 847 | } |
848 | 848 | |
849 | 849 | void op_mult (void) |
... | ... | @@ -1032,7 +1032,7 @@ void op_jnz_T2 (void) |
1032 | 1032 | /* CP0 functions */ |
1033 | 1033 | void op_mfc0_index (void) |
1034 | 1034 | { |
1035 | - T0 = SIGN_EXTEND32(env->CP0_index); | |
1035 | + T0 = (int32_t)(env->CP0_index); | |
1036 | 1036 | RETURN(); |
1037 | 1037 | } |
1038 | 1038 | |
... | ... | @@ -1062,25 +1062,25 @@ void op_mfc0_context (void) |
1062 | 1062 | |
1063 | 1063 | void op_mfc0_pagemask (void) |
1064 | 1064 | { |
1065 | - T0 = SIGN_EXTEND32(env->CP0_PageMask); | |
1065 | + T0 = (int32_t)env->CP0_PageMask; | |
1066 | 1066 | RETURN(); |
1067 | 1067 | } |
1068 | 1068 | |
1069 | 1069 | void op_mfc0_pagegrain (void) |
1070 | 1070 | { |
1071 | - T0 = SIGN_EXTEND32(env->CP0_PageGrain); | |
1071 | + T0 = (int32_t)env->CP0_PageGrain; | |
1072 | 1072 | RETURN(); |
1073 | 1073 | } |
1074 | 1074 | |
1075 | 1075 | void op_mfc0_wired (void) |
1076 | 1076 | { |
1077 | - T0 = SIGN_EXTEND32(env->CP0_Wired); | |
1077 | + T0 = (int32_t)env->CP0_Wired; | |
1078 | 1078 | RETURN(); |
1079 | 1079 | } |
1080 | 1080 | |
1081 | 1081 | void op_mfc0_hwrena (void) |
1082 | 1082 | { |
1083 | - T0 = SIGN_EXTEND32(env->CP0_HWREna); | |
1083 | + T0 = (int32_t)env->CP0_HWREna; | |
1084 | 1084 | RETURN(); |
1085 | 1085 | } |
1086 | 1086 | |
... | ... | @@ -1104,13 +1104,13 @@ void op_mfc0_entryhi (void) |
1104 | 1104 | |
1105 | 1105 | void op_mfc0_compare (void) |
1106 | 1106 | { |
1107 | - T0 = SIGN_EXTEND32(env->CP0_Compare); | |
1107 | + T0 = (int32_t)env->CP0_Compare; | |
1108 | 1108 | RETURN(); |
1109 | 1109 | } |
1110 | 1110 | |
1111 | 1111 | void op_mfc0_status (void) |
1112 | 1112 | { |
1113 | - T0 = SIGN_EXTEND32(env->CP0_Status); | |
1113 | + T0 = (int32_t)env->CP0_Status; | |
1114 | 1114 | if (env->hflags & MIPS_HFLAG_UM) |
1115 | 1115 | T0 |= (1 << CP0St_UM); |
1116 | 1116 | if (env->hflags & MIPS_HFLAG_ERL) |
... | ... | @@ -1122,19 +1122,19 @@ void op_mfc0_status (void) |
1122 | 1122 | |
1123 | 1123 | void op_mfc0_intctl (void) |
1124 | 1124 | { |
1125 | - T0 = SIGN_EXTEND32(env->CP0_IntCtl); | |
1125 | + T0 = (int32_t)env->CP0_IntCtl; | |
1126 | 1126 | RETURN(); |
1127 | 1127 | } |
1128 | 1128 | |
1129 | 1129 | void op_mfc0_srsctl (void) |
1130 | 1130 | { |
1131 | - T0 = SIGN_EXTEND32(env->CP0_SRSCtl); | |
1131 | + T0 = (int32_t)env->CP0_SRSCtl; | |
1132 | 1132 | RETURN(); |
1133 | 1133 | } |
1134 | 1134 | |
1135 | 1135 | void op_mfc0_cause (void) |
1136 | 1136 | { |
1137 | - T0 = SIGN_EXTEND32(env->CP0_Cause); | |
1137 | + T0 = (int32_t)env->CP0_Cause; | |
1138 | 1138 | RETURN(); |
1139 | 1139 | } |
1140 | 1140 | |
... | ... | @@ -1146,7 +1146,7 @@ void op_mfc0_epc (void) |
1146 | 1146 | |
1147 | 1147 | void op_mfc0_prid (void) |
1148 | 1148 | { |
1149 | - T0 = SIGN_EXTEND32(env->CP0_PRid); | |
1149 | + T0 = (int32_t)env->CP0_PRid; | |
1150 | 1150 | RETURN(); |
1151 | 1151 | } |
1152 | 1152 | |
... | ... | @@ -1158,25 +1158,25 @@ void op_mfc0_ebase (void) |
1158 | 1158 | |
1159 | 1159 | void op_mfc0_config0 (void) |
1160 | 1160 | { |
1161 | - T0 = SIGN_EXTEND32(env->CP0_Config0); | |
1161 | + T0 = (int32_t)env->CP0_Config0; | |
1162 | 1162 | RETURN(); |
1163 | 1163 | } |
1164 | 1164 | |
1165 | 1165 | void op_mfc0_config1 (void) |
1166 | 1166 | { |
1167 | - T0 = SIGN_EXTEND32(env->CP0_Config1); | |
1167 | + T0 = (int32_t)env->CP0_Config1; | |
1168 | 1168 | RETURN(); |
1169 | 1169 | } |
1170 | 1170 | |
1171 | 1171 | void op_mfc0_config2 (void) |
1172 | 1172 | { |
1173 | - T0 = SIGN_EXTEND32(env->CP0_Config2); | |
1173 | + T0 = (int32_t)env->CP0_Config2; | |
1174 | 1174 | RETURN(); |
1175 | 1175 | } |
1176 | 1176 | |
1177 | 1177 | void op_mfc0_config3 (void) |
1178 | 1178 | { |
1179 | - T0 = SIGN_EXTEND32(env->CP0_Config3); | |
1179 | + T0 = (int32_t)env->CP0_Config3; | |
1180 | 1180 | RETURN(); |
1181 | 1181 | } |
1182 | 1182 | |
... | ... | @@ -1188,13 +1188,13 @@ void op_mfc0_lladdr (void) |
1188 | 1188 | |
1189 | 1189 | void op_mfc0_watchlo0 (void) |
1190 | 1190 | { |
1191 | - T0 = SIGN_EXTEND32(env->CP0_WatchLo); | |
1191 | + T0 = (int32_t)env->CP0_WatchLo; | |
1192 | 1192 | RETURN(); |
1193 | 1193 | } |
1194 | 1194 | |
1195 | 1195 | void op_mfc0_watchhi0 (void) |
1196 | 1196 | { |
1197 | - T0 = SIGN_EXTEND32(env->CP0_WatchHi); | |
1197 | + T0 = (int32_t)env->CP0_WatchHi; | |
1198 | 1198 | RETURN(); |
1199 | 1199 | } |
1200 | 1200 | |
... | ... | @@ -1212,7 +1212,7 @@ void op_mfc0_framemask (void) |
1212 | 1212 | |
1213 | 1213 | void op_mfc0_debug (void) |
1214 | 1214 | { |
1215 | - T0 = SIGN_EXTEND32(env->CP0_Debug); | |
1215 | + T0 = (int32_t)env->CP0_Debug; | |
1216 | 1216 | if (env->hflags & MIPS_HFLAG_DM) |
1217 | 1217 | T0 |= 1 << CP0DB_DM; |
1218 | 1218 | RETURN(); |
... | ... | @@ -1226,31 +1226,31 @@ void op_mfc0_depc (void) |
1226 | 1226 | |
1227 | 1227 | void op_mfc0_performance0 (void) |
1228 | 1228 | { |
1229 | - T0 = SIGN_EXTEND32(env->CP0_Performance0); | |
1229 | + T0 = (int32_t)env->CP0_Performance0; | |
1230 | 1230 | RETURN(); |
1231 | 1231 | } |
1232 | 1232 | |
1233 | 1233 | void op_mfc0_taglo (void) |
1234 | 1234 | { |
1235 | - T0 = SIGN_EXTEND32(env->CP0_TagLo); | |
1235 | + T0 = (int32_t)env->CP0_TagLo; | |
1236 | 1236 | RETURN(); |
1237 | 1237 | } |
1238 | 1238 | |
1239 | 1239 | void op_mfc0_datalo (void) |
1240 | 1240 | { |
1241 | - T0 = SIGN_EXTEND32(env->CP0_DataLo); | |
1241 | + T0 = (int32_t)env->CP0_DataLo; | |
1242 | 1242 | RETURN(); |
1243 | 1243 | } |
1244 | 1244 | |
1245 | 1245 | void op_mfc0_taghi (void) |
1246 | 1246 | { |
1247 | - T0 = SIGN_EXTEND32(env->CP0_TagHi); | |
1247 | + T0 = (int32_t)env->CP0_TagHi; | |
1248 | 1248 | RETURN(); |
1249 | 1249 | } |
1250 | 1250 | |
1251 | 1251 | void op_mfc0_datahi (void) |
1252 | 1252 | { |
1253 | - T0 = SIGN_EXTEND32(env->CP0_DataHi); | |
1253 | + T0 = (int32_t)env->CP0_DataHi; | |
1254 | 1254 | RETURN(); |
1255 | 1255 | } |
1256 | 1256 | |
... | ... | @@ -1262,7 +1262,7 @@ void op_mfc0_errorepc (void) |
1262 | 1262 | |
1263 | 1263 | void op_mfc0_desave (void) |
1264 | 1264 | { |
1265 | - T0 = SIGN_EXTEND32(env->CP0_DESAVE); | |
1265 | + T0 = (int32_t)env->CP0_DESAVE; | |
1266 | 1266 | RETURN(); |
1267 | 1267 | } |
1268 | 1268 | |
... | ... | @@ -1276,7 +1276,7 @@ void op_mtc0_entrylo0 (void) |
1276 | 1276 | { |
1277 | 1277 | /* Large physaddr not implemented */ |
1278 | 1278 | /* 1k pages not implemented */ |
1279 | - env->CP0_EntryLo0 = T0 & SIGN_EXTEND32(0x3FFFFFFFUL); | |
1279 | + env->CP0_EntryLo0 = T0 & (int32_t)0x3FFFFFFF; | |
1280 | 1280 | RETURN(); |
1281 | 1281 | } |
1282 | 1282 | |
... | ... | @@ -1284,7 +1284,7 @@ void op_mtc0_entrylo1 (void) |
1284 | 1284 | { |
1285 | 1285 | /* Large physaddr not implemented */ |
1286 | 1286 | /* 1k pages not implemented */ |
1287 | - env->CP0_EntryLo1 = T0 & SIGN_EXTEND32(0x3FFFFFFFUL); | |
1287 | + env->CP0_EntryLo1 = T0 & (int32_t)0x3FFFFFFF; | |
1288 | 1288 | RETURN(); |
1289 | 1289 | } |
1290 | 1290 | |
... | ... | @@ -1334,7 +1334,7 @@ void op_mtc0_entryhi (void) |
1334 | 1334 | |
1335 | 1335 | /* 1k pages not implemented */ |
1336 | 1336 | /* Ignore MIPS64 TLB for now */ |
1337 | - val = T0 & SIGN_EXTEND32(0xFFFFE0FF); | |
1337 | + val = T0 & (int32_t)0xFFFFE0FF; | |
1338 | 1338 | old = env->CP0_EntryHi; |
1339 | 1339 | env->CP0_EntryHi = val; |
1340 | 1340 | /* If the ASID changes, flush qemu's TLB. */ |
... | ... | @@ -1353,7 +1353,7 @@ void op_mtc0_status (void) |
1353 | 1353 | { |
1354 | 1354 | uint32_t val, old, mask; |
1355 | 1355 | |
1356 | - val = T0 & SIGN_EXTEND32(0xFA78FF01); | |
1356 | + val = T0 & (int32_t)0xFA78FF01; | |
1357 | 1357 | old = env->CP0_Status; |
1358 | 1358 | if (T0 & (1 << CP0St_UM)) |
1359 | 1359 | env->hflags |= MIPS_HFLAG_UM; |
... | ... | @@ -1431,7 +1431,7 @@ void op_mtc0_ebase (void) |
1431 | 1431 | { |
1432 | 1432 | /* vectored interrupts not implemented */ |
1433 | 1433 | /* Multi-CPU not implemented */ |
1434 | - env->CP0_EBase = SIGN_EXTEND32(0x80000000) | (T0 & 0x3FFFF000); | |
1434 | + env->CP0_EBase = (int32_t)0x80000000 | (T0 & 0x3FFFF000); | |
1435 | 1435 | RETURN(); |
1436 | 1436 | } |
1437 | 1437 | |
... | ... | @@ -1501,7 +1501,7 @@ void op_mtc0_performance0 (void) |
1501 | 1501 | |
1502 | 1502 | void op_mtc0_taglo (void) |
1503 | 1503 | { |
1504 | - env->CP0_TagLo = T0 & SIGN_EXTEND32(0xFFFFFCF6); | |
1504 | + env->CP0_TagLo = T0 & (int32_t)0xFFFFFCF6; | |
1505 | 1505 | RETURN(); |
1506 | 1506 | } |
1507 | 1507 | ... | ... |
target-mips/op_helper.c
... | ... | @@ -167,8 +167,8 @@ static inline uint64_t get_HILO (void) |
167 | 167 | |
168 | 168 | static inline void set_HILO (uint64_t HILO) |
169 | 169 | { |
170 | - env->LO = SIGN_EXTEND32(HILO & 0xFFFFFFFF); | |
171 | - env->HI = SIGN_EXTEND32(HILO >> 32); | |
170 | + env->LO = (int32_t)(HILO & 0xFFFFFFFF); | |
171 | + env->HI = (int32_t)(HILO >> 32); | |
172 | 172 | } |
173 | 173 | |
174 | 174 | void do_mult (void) |
... | ... | @@ -305,12 +305,12 @@ void cpu_mips_tlb_flush (CPUState *env, int flush_global) |
305 | 305 | /* CP0 helpers */ |
306 | 306 | void do_mfc0_random (void) |
307 | 307 | { |
308 | - T0 = SIGN_EXTEND32(cpu_mips_get_random(env)); | |
308 | + T0 = (int32_t)cpu_mips_get_random(env); | |
309 | 309 | } |
310 | 310 | |
311 | 311 | void do_mfc0_count (void) |
312 | 312 | { |
313 | - T0 = SIGN_EXTEND32(cpu_mips_get_count(env)); | |
313 | + T0 = (int32_t)cpu_mips_get_count(env); | |
314 | 314 | } |
315 | 315 | |
316 | 316 | void do_mtc0_status_debug(uint32_t old, uint32_t val) |
... | ... | @@ -433,7 +433,7 @@ static void fill_tlb (int idx) |
433 | 433 | |
434 | 434 | /* XXX: detect conflicting TLBs and raise a MCHECK exception when needed */ |
435 | 435 | tlb = &env->tlb[idx]; |
436 | - tlb->VPN = env->CP0_EntryHi & SIGN_EXTEND32(0xFFFFE000); | |
436 | + tlb->VPN = env->CP0_EntryHi & (int32_t)0xFFFFE000; | |
437 | 437 | tlb->ASID = env->CP0_EntryHi & 0xFF; |
438 | 438 | size = env->CP0_PageMask >> 13; |
439 | 439 | size = 4 * (size + 1); |
... | ... | @@ -478,7 +478,7 @@ void do_tlbp (void) |
478 | 478 | uint8_t ASID; |
479 | 479 | int i; |
480 | 480 | |
481 | - tag = env->CP0_EntryHi & SIGN_EXTEND32(0xFFFFE000); | |
481 | + tag = env->CP0_EntryHi & (int32_t)0xFFFFE000; | |
482 | 482 | ASID = env->CP0_EntryHi & 0xFF; |
483 | 483 | for (i = 0; i < MIPS_TLB_NB; i++) { |
484 | 484 | tlb = &env->tlb[i]; | ... | ... |
target-mips/translate.c
... | ... | @@ -1420,7 +1420,7 @@ static void gen_compute_branch (DisasContext *ctx, uint32_t opc, |
1420 | 1420 | case OPC_J: |
1421 | 1421 | case OPC_JAL: |
1422 | 1422 | /* Jump to immediate */ |
1423 | - btarget = ((ctx->pc + 4) & SIGN_EXTEND32(0xF0000000)) | offset; | |
1423 | + btarget = ((ctx->pc + 4) & (int32_t)0xF0000000) | offset; | |
1424 | 1424 | break; |
1425 | 1425 | case OPC_JR: |
1426 | 1426 | case OPC_JALR: |
... | ... | @@ -4097,14 +4097,14 @@ void cpu_reset (CPUMIPSState *env) |
4097 | 4097 | } else { |
4098 | 4098 | env->CP0_ErrorEPC = env->PC; |
4099 | 4099 | } |
4100 | - env->PC = SIGN_EXTEND32(0xBFC00000); | |
4100 | + env->PC = (int32_t)0xBFC00000; | |
4101 | 4101 | #if defined (MIPS_USES_R4K_TLB) |
4102 | 4102 | env->CP0_random = MIPS_TLB_NB - 1; |
4103 | 4103 | env->tlb_in_use = MIPS_TLB_NB; |
4104 | 4104 | #endif |
4105 | 4105 | env->CP0_Wired = 0; |
4106 | 4106 | /* SMP not implemented */ |
4107 | - env->CP0_EBase = SIGN_EXTEND32(0x80000000); | |
4107 | + env->CP0_EBase = (int32_t)0x80000000; | |
4108 | 4108 | env->CP0_Config0 = MIPS_CONFIG0; |
4109 | 4109 | env->CP0_Config1 = MIPS_CONFIG1; |
4110 | 4110 | env->CP0_Config2 = MIPS_CONFIG2; | ... | ... |