Revision fab9d284 gdbstub.c
b/gdbstub.c | ||
---|---|---|
1512 | 1512 |
} |
1513 | 1513 |
} |
1514 | 1514 |
|
1515 |
static void gdb_set_cpu_pc(GDBState *s, target_ulong pc) |
|
1516 |
{ |
|
1517 |
#if defined(TARGET_I386) |
|
1518 |
s->c_cpu->eip = pc; |
|
1519 |
cpu_synchronize_state(s->c_cpu, 1); |
|
1520 |
#elif defined (TARGET_PPC) |
|
1521 |
s->c_cpu->nip = pc; |
|
1522 |
#elif defined (TARGET_SPARC) |
|
1523 |
s->c_cpu->pc = pc; |
|
1524 |
s->c_cpu->npc = pc + 4; |
|
1525 |
#elif defined (TARGET_ARM) |
|
1526 |
s->c_cpu->regs[15] = pc; |
|
1527 |
#elif defined (TARGET_SH4) |
|
1528 |
s->c_cpu->pc = pc; |
|
1529 |
#elif defined (TARGET_MIPS) |
|
1530 |
s->c_cpu->active_tc.PC = pc; |
|
1531 |
#elif defined (TARGET_CRIS) |
|
1532 |
s->c_cpu->pc = pc; |
|
1533 |
#elif defined (TARGET_ALPHA) |
|
1534 |
s->c_cpu->pc = pc; |
|
1535 |
#endif |
|
1536 |
} |
|
1537 |
|
|
1515 | 1538 |
static int gdb_handle_packet(GDBState *s, const char *line_buf) |
1516 | 1539 |
{ |
1517 | 1540 |
CPUState *env; |
... | ... | |
1542 | 1565 |
case 'c': |
1543 | 1566 |
if (*p != '\0') { |
1544 | 1567 |
addr = strtoull(p, (char **)&p, 16); |
1545 |
#if defined(TARGET_I386) |
|
1546 |
s->c_cpu->eip = addr; |
|
1547 |
cpu_synchronize_state(s->c_cpu, 1); |
|
1548 |
#elif defined (TARGET_PPC) |
|
1549 |
s->c_cpu->nip = addr; |
|
1550 |
#elif defined (TARGET_SPARC) |
|
1551 |
s->c_cpu->pc = addr; |
|
1552 |
s->c_cpu->npc = addr + 4; |
|
1553 |
#elif defined (TARGET_ARM) |
|
1554 |
s->c_cpu->regs[15] = addr; |
|
1555 |
#elif defined (TARGET_SH4) |
|
1556 |
s->c_cpu->pc = addr; |
|
1557 |
#elif defined (TARGET_MIPS) |
|
1558 |
s->c_cpu->active_tc.PC = addr; |
|
1559 |
#elif defined (TARGET_CRIS) |
|
1560 |
s->c_cpu->pc = addr; |
|
1561 |
#elif defined (TARGET_ALPHA) |
|
1562 |
s->c_cpu->pc = addr; |
|
1563 |
#endif |
|
1568 |
gdb_set_cpu_pc(s, addr); |
|
1564 | 1569 |
} |
1565 | 1570 |
s->signal = 0; |
1566 | 1571 |
gdb_continue(s); |
... | ... | |
1584 | 1589 |
case 's': |
1585 | 1590 |
if (*p != '\0') { |
1586 | 1591 |
addr = strtoull(p, (char **)&p, 16); |
1587 |
#if defined(TARGET_I386) |
|
1588 |
s->c_cpu->eip = addr; |
|
1589 |
cpu_synchronize_state(s->c_cpu, 1); |
|
1590 |
#elif defined (TARGET_PPC) |
|
1591 |
s->c_cpu->nip = addr; |
|
1592 |
#elif defined (TARGET_SPARC) |
|
1593 |
s->c_cpu->pc = addr; |
|
1594 |
s->c_cpu->npc = addr + 4; |
|
1595 |
#elif defined (TARGET_ARM) |
|
1596 |
s->c_cpu->regs[15] = addr; |
|
1597 |
#elif defined (TARGET_SH4) |
|
1598 |
s->c_cpu->pc = addr; |
|
1599 |
#elif defined (TARGET_MIPS) |
|
1600 |
s->c_cpu->active_tc.PC = addr; |
|
1601 |
#elif defined (TARGET_CRIS) |
|
1602 |
s->c_cpu->pc = addr; |
|
1603 |
#elif defined (TARGET_ALPHA) |
|
1604 |
s->c_cpu->pc = addr; |
|
1605 |
#endif |
|
1592 |
gdb_set_cpu_pc(s, addr); |
|
1606 | 1593 |
} |
1607 | 1594 |
cpu_single_step(s->c_cpu, sstep_flags); |
1608 | 1595 |
gdb_continue(s); |
Also available in: Unified diff