Commit 57206fd42a0ce94525686b0ea18d0e23d58a89e3

Authored by bellard
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++;
... ...