X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fmonitor.c;h=69d03805c3e1cf4ad4678d4537cc77876fac2a63;hb=70769503c505c22bddef3bc7885b91b9d503607f;hp=ec80a935e8f2f376641c219d329a0e396e00a163;hpb=426bde0954ef91387b8ab0d4528fad9ec02fa24c;p=sbcl.git diff --git a/src/runtime/monitor.c b/src/runtime/monitor.c index ec80a93..69d0380 100644 --- a/src/runtime/monitor.c +++ b/src/runtime/monitor.c @@ -148,7 +148,14 @@ dump_cmd(char **ptr) unsigned short *sptr = (unsigned short *)addr; unsigned char *cptr = (unsigned char *)addr; - printf("0x%08lx 0x%04x 0x%04x 0x%02x 0x%02x 0x%02x 0x%02x %c%c%c%c\n", lptr[0], sptr[0], sptr[1], cptr[0], cptr[1], cptr[2], cptr[3], visible(cptr[0]), visible(cptr[1]), visible(cptr[2]), visible(cptr[3])); + printf("0x%08lx 0x%04x 0x%04x " + "0x%02x 0x%02x 0x%02x 0x%02x " + "%c%c" + "%c%c\n", + lptr[0], sptr[0], sptr[1], + cptr[0], cptr[1], cptr[2], cptr[3], + visible(cptr[0]), visible(cptr[1]), + visible(cptr[2]), visible(cptr[3])); } else printf("invalid Lisp-level address\n"); @@ -176,31 +183,40 @@ kill_cmd(char **ptr) static void regs_cmd(char **ptr) { - printf("CSP\t=\t0x%08lX\n", (unsigned long)current_control_stack_pointer); - printf("FP\t=\t0x%08lX\n", (unsigned long)current_control_frame_pointer); -#if !(defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64)) - printf("BSP\t=\t0x%08X\n", (unsigned long)current_binding_stack_pointer); + printf("CSP\t=\t0x%08lx\n", (unsigned long)current_control_stack_pointer); + printf("CFP\t=\t0x%08lx\n", (unsigned long)current_control_frame_pointer); + +#ifdef reg_BSP + printf("BSP\t=\t0x%08lx\n", (unsigned long)current_binding_stack_pointer); +#else + /* printf("BSP\t=\t0x%08lx\n", + (unsigned long)SymbolValue(BINDING_STACK_POINTER)); */ #endif -#if 0 -#if (defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64)) - printf("BSP\t=\t0x%08lx\n", - (unsigned long)SymbolValue(BINDING_STACK_POINTER)); + +#ifdef LISP_FEATURE_GENCGC + /* printf("DYNAMIC\t=\t0x%08lx\n", DYNAMIC_SPACE_START); */ +#else + printf("DYNAMIC\t=\t0x%08lx\n", (unsigned long)current_dynamic_space); #endif - printf("DYNAMIC\t=\t0x%08lx\n", (unsigned long)DYNAMIC_SPACE_START); -#if (defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64)) - printf("ALLOC\t=\t0x%08lx\n", - (unsigned long)SymbolValue(ALLOCATION_POINTER)); +#ifdef reg_ALLOC + printf("ALLOC\t=\t0x%08lx\n", (unsigned long)dynamic_space_free_pointer); #else - printf("ALLOC\t=\t0x%08X\n", - (unsigned long)dynamic_space_free_pointer); + printf("ALLOC\t=\t0x%08lx\n", + (unsigned long)SymbolValue(ALLOCATION_POINTER, + arch_os_get_current_thread())); +#endif + +#ifndef LISP_FEATURE_GENCGC printf("TRIGGER\t=\t0x%08lx\n", (unsigned long)current_auto_gc_trigger); #endif + +#if 0 printf("STATIC\t=\t0x%08lx\n", (unsigned long)SymbolValue(STATIC_SPACE_FREE_POINTER)); printf("RDONLY\t=\t0x%08lx\n", (unsigned long)SymbolValue(READ_ONLY_SPACE_FREE_POINTER)); -#endif /* 0 */ +#endif } static void @@ -336,31 +352,31 @@ print_context(os_context_t *context) static void print_context_cmd(char **ptr) { - int free; + int free_ici; struct thread *thread=arch_os_get_current_thread(); - free = SymbolValue(FREE_INTERRUPT_CONTEXT_INDEX,thread)>>2; + free_ici = fixnum_value(SymbolValue(FREE_INTERRUPT_CONTEXT_INDEX,thread)); if (more_p(ptr)) { int index; index = parse_number(ptr); - if ((index >= 0) && (index < free)) { - printf("There are %d interrupt contexts.\n", free); + if ((index >= 0) && (index < free_ici)) { + printf("There are %d interrupt contexts.\n", free_ici); printf("printing context %d\n", index); print_context(thread->interrupt_contexts[index]); } else { printf("There aren't that many/few contexts.\n"); - printf("There are %d interrupt contexts.\n", free); + printf("There are %d interrupt contexts.\n", free_ici); } } else { - if (free == 0) + if (free_ici == 0) printf("There are no interrupt contexts!\n"); else { - printf("There are %d interrupt contexts.\n", free); - printf("printing context %d\n", free - 1); - print_context(thread->interrupt_contexts[free - 1]); + printf("There are %d interrupt contexts.\n", free_ici); + printf("printing context %d\n", free_ici - 1); + print_context(thread->interrupt_contexts[free_ici - 1]); } } } @@ -392,20 +408,18 @@ catchers_cmd(char **ptr) printf("There are no active catchers!\n"); else { while (catch != NULL) { -#if !(defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64)) - printf("0x%08lX:\n\tuwp: 0x%08lX\n\tfp: 0x%08lX\n\tcode: 0x%08lx\n\tentry: 0x%08lx\n\ttag: ", - (unsigned long)catch, (unsigned long)(catch->current_uwp), + printf("0x%08lX:\n\tuwp: 0x%08lX\n\tfp: 0x%08lX\n\t" + "code: 0x%08lX\n\tentry: 0x%08lX\n\ttag: ", + (unsigned long)catch, + (unsigned long)(catch->current_uwp), (unsigned long)(catch->current_cont), - catch->current_code, - catch->entry_pc); +#if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64) + (unsigned long)component_ptr_from_pc((void*)catch->entry_pc) + + OTHER_POINTER_LOWTAG, #else - printf("0x%08lX:\n\tuwp: 0x%08lX\n\tfp: 0x%08lX\n\tcode: 0x%08lx\n\tentry: 0x%08lx\n\ttag: ", - (unsigned long)catch, (unsigned long)(catch->current_uwp), - (unsigned long)(catch->current_cont), - (unsigned long)component_ptr_from_pc((void*)catch->entry_pc) + - OTHER_POINTER_LOWTAG, - (unsigned long)catch->entry_pc); + (unsigned long)(catch->current_code), #endif + (unsigned long)(catch->entry_pc)); brief_print((lispobj)catch->tag); catch = catch->previous_catch; }