Commit 57206fd42a0ce94525686b0ea18d0e23d58a89e3
1 parent
4c27ba27
more register values in monitor
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@751 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
22 additions
and
2 deletions
monitor.c
| ... | ... | @@ -539,6 +539,13 @@ typedef struct MonitorDef { |
| 539 | 539 | int (*get_value)(struct MonitorDef *md); |
| 540 | 540 | } MonitorDef; |
| 541 | 541 | |
| 542 | +#if defined(TARGET_I386) | |
| 543 | +static int monitor_get_pc (struct MonitorDef *md) | |
| 544 | +{ | |
| 545 | + return cpu_single_env->eip + (long)cpu_single_env->segs[R_CS].base; | |
| 546 | +} | |
| 547 | +#endif | |
| 548 | + | |
| 542 | 549 | #if defined(TARGET_PPC) |
| 543 | 550 | static int monitor_get_ccr (struct MonitorDef *md) |
| 544 | 551 | { |
| ... | ... | @@ -582,6 +589,12 @@ static int monitor_get_xer (struct MonitorDef *md) |
| 582 | 589 | |
| 583 | 590 | static MonitorDef monitor_defs[] = { |
| 584 | 591 | #ifdef TARGET_I386 |
| 592 | + | |
| 593 | +#define SEG(name, seg) \ | |
| 594 | + { name, offsetof(CPUState, segs[seg].selector) },\ | |
| 595 | + { name ".base", offsetof(CPUState, segs[seg].base) },\ | |
| 596 | + { name ".limit", offsetof(CPUState, segs[seg].limit) }, | |
| 597 | + | |
| 585 | 598 | { "eax", offsetof(CPUState, regs[0]) }, |
| 586 | 599 | { "ecx", offsetof(CPUState, regs[1]) }, |
| 587 | 600 | { "edx", offsetof(CPUState, regs[2]) }, |
| ... | ... | @@ -591,7 +604,13 @@ static MonitorDef monitor_defs[] = { |
| 591 | 604 | { "esi", offsetof(CPUState, regs[6]) }, |
| 592 | 605 | { "esi", offsetof(CPUState, regs[7]) }, |
| 593 | 606 | { "eflags", offsetof(CPUState, eflags) }, |
| 594 | - { "eip|pc", offsetof(CPUState, eip) }, | |
| 607 | + { "eip", offsetof(CPUState, eip) }, | |
| 608 | + SEG("cs", R_CS) | |
| 609 | + SEG("ds", R_DS) | |
| 610 | + SEG("es", R_ES) | |
| 611 | + SEG("fs", R_FS) | |
| 612 | + SEG("gs", R_GS) | |
| 613 | + { "pc", 0, monitor_get_pc, }, | |
| 595 | 614 | #elif defined(TARGET_PPC) |
| 596 | 615 | { "r0", offsetof(CPUState, gpr[0]) }, |
| 597 | 616 | { "r1", offsetof(CPUState, gpr[1]) }, |
| ... | ... | @@ -625,6 +644,7 @@ static MonitorDef monitor_defs[] = { |
| 625 | 644 | { "r29", offsetof(CPUState, gpr[29]) }, |
| 626 | 645 | { "r30", offsetof(CPUState, gpr[30]) }, |
| 627 | 646 | { "r31", offsetof(CPUState, gpr[31]) }, |
| 647 | + { "nip|pc", offsetof(CPUState, nip) }, | |
| 628 | 648 | { "lr", offsetof(CPUState, lr) }, |
| 629 | 649 | { "ctr", offsetof(CPUState, ctr) }, |
| 630 | 650 | { "decr", offsetof(CPUState, decr) }, |
| ... | ... | @@ -724,7 +744,7 @@ static int expr_unary(void) |
| 724 | 744 | while ((*pch >= 'a' && *pch <= 'z') || |
| 725 | 745 | (*pch >= 'A' && *pch <= 'Z') || |
| 726 | 746 | (*pch >= '0' && *pch <= '9') || |
| 727 | - *pch == '_') { | |
| 747 | + *pch == '_' || *pch == '.') { | |
| 728 | 748 | if ((q - buf) < sizeof(buf) - 1) |
| 729 | 749 | *q++ = *pch; |
| 730 | 750 | pch++; | ... | ... |