Revision 540635ba target-mips/op.c
b/target-mips/op.c | ||
---|---|---|
296 | 296 |
/* For compatibility with 32-bit code, data reference in user mode |
297 | 297 |
with Status_UX = 0 should be casted to 32-bit and sign extended. |
298 | 298 |
See the MIPS64 PRA manual, section 4.10. */ |
299 |
#ifdef TARGET_MIPS64
|
|
299 |
#if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64)
|
|
300 | 300 |
if ((env->hflags & MIPS_HFLAG_UM) && |
301 | 301 |
!(env->CP0_Status & (1 << CP0St_UX))) |
302 | 302 |
T0 = (int64_t)(int32_t)(T0 + T1); |
... | ... | |
379 | 379 |
RETURN(); |
380 | 380 |
} |
381 | 381 |
|
382 |
#ifdef TARGET_MIPS64
|
|
382 |
#if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64)
|
|
383 | 383 |
/* Arithmetic */ |
384 | 384 |
void op_dadd (void) |
385 | 385 |
{ |
... | ... | |
448 | 448 |
RETURN(); |
449 | 449 |
} |
450 | 450 |
#endif |
451 |
#endif /* TARGET_MIPS64 */ |
|
451 |
#endif /* TARGET_MIPSN32 || TARGET_MIPS64 */
|
|
452 | 452 |
|
453 | 453 |
/* Logical */ |
454 | 454 |
void op_and (void) |
... | ... | |
569 | 569 |
RETURN(); |
570 | 570 |
} |
571 | 571 |
|
572 |
#ifdef TARGET_MIPS64
|
|
572 |
#if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64)
|
|
573 | 573 |
|
574 | 574 |
#if TARGET_LONG_BITS > HOST_LONG_BITS |
575 | 575 |
/* Those might call libgcc functions. */ |
... | ... | |
770 | 770 |
} |
771 | 771 |
RETURN(); |
772 | 772 |
} |
773 |
#endif |
|
773 |
#endif /* TARGET_MIPSN32 || TARGET_MIPS64 */
|
|
774 | 774 |
|
775 | 775 |
/* 64 bits arithmetic */ |
776 | 776 |
#if TARGET_LONG_BITS > HOST_LONG_BITS |
... | ... | |
873 | 873 |
} |
874 | 874 |
#endif /* TARGET_LONG_BITS > HOST_LONG_BITS */ |
875 | 875 |
|
876 |
#ifdef TARGET_MIPS64
|
|
876 |
#if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64)
|
|
877 | 877 |
void op_dmult (void) |
878 | 878 |
{ |
879 | 879 |
CALL_FROM_TB4(muls64, &(env->HI[0][env->current_tc]), &(env->LO[0][env->current_tc]), T0, T1); |
... | ... | |
977 | 977 |
RETURN(); |
978 | 978 |
} |
979 | 979 |
|
980 |
#ifdef TARGET_MIPS64
|
|
980 |
#if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64)
|
|
981 | 981 |
void op_save_btarget64 (void) |
982 | 982 |
{ |
983 | 983 |
env->btarget = ((uint64_t)PARAM1 << 32) | (uint32_t)PARAM2; |
... | ... | |
1804 | 1804 |
|
1805 | 1805 |
/* 1k pages not implemented */ |
1806 | 1806 |
val = T0 & ((TARGET_PAGE_MASK << 1) | 0xFF); |
1807 |
#ifdef TARGET_MIPS64
|
|
1807 |
#if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64)
|
|
1808 | 1808 |
val &= env->SEGMask; |
1809 | 1809 |
#endif |
1810 | 1810 |
old = env->CP0_EntryHi; |
... | ... | |
2031 | 2031 |
RETURN(); |
2032 | 2032 |
} |
2033 | 2033 |
|
2034 |
#ifdef TARGET_MIPS64
|
|
2034 |
#if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64)
|
|
2035 | 2035 |
void op_dmfc0_yqmask (void) |
2036 | 2036 |
{ |
2037 | 2037 |
T0 = env->CP0_YQMask; |
... | ... | |
2145 | 2145 |
T0 = env->CP0_ErrorEPC; |
2146 | 2146 |
RETURN(); |
2147 | 2147 |
} |
2148 |
#endif /* TARGET_MIPS64 */ |
|
2148 |
#endif /* TARGET_MIPSN32 || TARGET_MIPS64 */
|
|
2149 | 2149 |
|
2150 | 2150 |
/* MIPS MT functions */ |
2151 | 2151 |
void op_mftgpr(void) |
... | ... | |
3059 | 3059 |
RETURN(); |
3060 | 3060 |
} |
3061 | 3061 |
|
3062 |
#ifdef TARGET_MIPS64
|
|
3062 |
#if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64)
|
|
3063 | 3063 |
void op_save_pc64 (void) |
3064 | 3064 |
{ |
3065 | 3065 |
env->PC[env->current_tc] = ((uint64_t)PARAM1 << 32) | (uint32_t)PARAM2; |
... | ... | |
3131 | 3131 |
RETURN(); |
3132 | 3132 |
} |
3133 | 3133 |
|
3134 |
#ifdef TARGET_MIPS64
|
|
3134 |
#if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64)
|
|
3135 | 3135 |
void op_dext(void) |
3136 | 3136 |
{ |
3137 | 3137 |
unsigned int pos = PARAM1; |
Also available in: Unified diff