Revision f1b0aa5d target-mips/op.c

b/target-mips/op.c
1260 1260
{
1261 1261
    /* Large physaddr not implemented */
1262 1262
    /* 1k pages not implemented */
1263
    env->CP0_EntryLo0 = (int32_t)T0 & 0x3FFFFFFF;
1263
    env->CP0_EntryLo0 = T0 & 0x3FFFFFFF;
1264 1264
    RETURN();
1265 1265
}
1266 1266

  
......
1268 1268
{
1269 1269
    /* Large physaddr not implemented */
1270 1270
    /* 1k pages not implemented */
1271
    env->CP0_EntryLo1 = (int32_t)T0 & 0x3FFFFFFF;
1271
    env->CP0_EntryLo1 = T0 & 0x3FFFFFFF;
1272 1272
    RETURN();
1273 1273
}
1274 1274

  
......
1338 1338
    uint32_t val, old;
1339 1339
    uint32_t mask = env->Status_rw_bitmask;
1340 1340

  
1341
    /* No reverse endianness, no MDMX/DSP, no 64bit ops,
1342
       no 64bit addressing implemented. */
1343
    val = (int32_t)T0 & mask;
1341
    /* No reverse endianness, no MDMX/DSP, no 64bit ops
1342
       implemented. */
1343
    val = T0 & mask;
1344 1344
    old = env->CP0_Status;
1345 1345
    if (!(val & (1 << CP0St_EXL)) &&
1346 1346
        !(val & (1 << CP0St_ERL)) &&
......
1395 1395

  
1396 1396
void op_mtc0_epc (void)
1397 1397
{
1398
    env->CP0_EPC = (int32_t)T0;
1398
    env->CP0_EPC = T0;
1399 1399
    RETURN();
1400 1400
}
1401 1401

  
......
1424 1424
{
1425 1425
    /* Watch exceptions for instructions, data loads, data stores
1426 1426
       not implemented. */
1427
    env->CP0_WatchLo = (int32_t)(T0 & ~0x7);
1427
    env->CP0_WatchLo = (T0 & ~0x7);
1428 1428
    RETURN();
1429 1429
}
1430 1430

  
......
1453 1453

  
1454 1454
void op_mtc0_depc (void)
1455 1455
{
1456
    env->CP0_DEPC = (int32_t)T0;
1456
    env->CP0_DEPC = T0;
1457 1457
    RETURN();
1458 1458
}
1459 1459

  
......
1489 1489

  
1490 1490
void op_mtc0_errorepc (void)
1491 1491
{
1492
    env->CP0_ErrorEPC = (int32_t)T0;
1492
    env->CP0_ErrorEPC = T0;
1493 1493
    RETURN();
1494 1494
}
1495 1495

  
......
1500 1500
}
1501 1501

  
1502 1502
#ifdef TARGET_MIPS64
1503
void op_mtc0_xcontext (void)
1504
{
1505
    env->CP0_XContext = (env->CP0_XContext & 0x1ffffffffULL) | (T0 & ~0x1ffffffffULL);
1506
    RETURN();
1507
}
1508

  
1503 1509
void op_dmfc0_entrylo0 (void)
1504 1510
{
1505 1511
    T0 = env->CP0_EntryLo0;
......
1565 1571
    T0 = env->CP0_ErrorEPC;
1566 1572
    RETURN();
1567 1573
}
1568

  
1569
void op_dmtc0_entrylo0 (void)
1570
{
1571
    /* Large physaddr not implemented */
1572
    /* 1k pages not implemented */
1573
    env->CP0_EntryLo0 = T0 & 0x3FFFFFFF;
1574
    RETURN();
1575
}
1576

  
1577
void op_dmtc0_entrylo1 (void)
1578
{
1579
    /* Large physaddr not implemented */
1580
    /* 1k pages not implemented */
1581
    env->CP0_EntryLo1 = T0 & 0x3FFFFFFF;
1582
    RETURN();
1583
}
1584

  
1585
void op_dmtc0_context (void)
1586
{
1587
    env->CP0_Context = (env->CP0_Context & 0x007FFFFF) | (T0 & ~0x007FFFFF);
1588
    RETURN();
1589
}
1590

  
1591
void op_dmtc0_epc (void)
1592
{
1593
    env->CP0_EPC = T0;
1594
    RETURN();
1595
}
1596

  
1597
void op_dmtc0_watchlo0 (void)
1598
{
1599
    /* Watch exceptions for instructions, data loads, data stores
1600
       not implemented. */
1601
    env->CP0_WatchLo = T0 & ~0x7;
1602
    RETURN();
1603
}
1604

  
1605
void op_dmtc0_xcontext (void)
1606
{
1607
    env->CP0_XContext = (env->CP0_XContext & 0xffffffff) | (T0 & ~0xffffffff);
1608
    RETURN();
1609
}
1610

  
1611
void op_dmtc0_depc (void)
1612
{
1613
    env->CP0_DEPC = T0;
1614
    RETURN();
1615
}
1616

  
1617
void op_dmtc0_errorepc (void)
1618
{
1619
    env->CP0_ErrorEPC = T0;
1620
    RETURN();
1621
}
1622 1574
#endif /* TARGET_MIPS64 */
1623 1575

  
1624 1576
/* CP1 functions */

Also available in: Unified diff