projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8.3.39:
[sbcl.git]
/
src
/
runtime
/
monitor.c
diff --git
a/src/runtime/monitor.c
b/src/runtime/monitor.c
index
ffefafa
..
5d08022
100644
(file)
--- a/
src/runtime/monitor.c
+++ b/
src/runtime/monitor.c
@@
-33,6
+33,11
@@
#include "globals.h"
#include "lispregs.h"
#include "interrupt.h"
#include "globals.h"
#include "lispregs.h"
#include "interrupt.h"
+#include "thread.h"
+#include "genesis/static-symbols.h"
+#include "genesis/primitive-objects.h"
+
+
/* When we need to do command input, we use this stream, which is not
* in general stdin, so that things will "work" (as well as being
/* When we need to do command input, we use this stream, which is not
* in general stdin, so that things will "work" (as well as being
@@
-174,6
+179,7
@@
regs_cmd(char **ptr)
#if !defined(__i386__)
printf("BSP\t=\t0x%08X\n", (unsigned long)current_binding_stack_pointer);
#endif
#if !defined(__i386__)
printf("BSP\t=\t0x%08X\n", (unsigned long)current_binding_stack_pointer);
#endif
+#if 0
#ifdef __i386__
printf("BSP\t=\t0x%08lx\n",
(unsigned long)SymbolValue(BINDING_STACK_POINTER));
#ifdef __i386__
printf("BSP\t=\t0x%08lx\n",
(unsigned long)SymbolValue(BINDING_STACK_POINTER));
@@
-192,7
+198,7
@@
regs_cmd(char **ptr)
(unsigned long)SymbolValue(STATIC_SPACE_FREE_POINTER));
printf("RDONLY\t=\t0x%08lx\n",
(unsigned long)SymbolValue(READ_ONLY_SPACE_FREE_POINTER));
(unsigned long)SymbolValue(STATIC_SPACE_FREE_POINTER));
printf("RDONLY\t=\t0x%08lx\n",
(unsigned long)SymbolValue(READ_ONLY_SPACE_FREE_POINTER));
-
+#endif /* 0 */
#ifdef MIPS
printf("FLAGS\t=\t0x%08x\n", current_flags_register);
#endif
#ifdef MIPS
printf("FLAGS\t=\t0x%08x\n", current_flags_register);
#endif
@@
-279,7
+285,7
@@
quit_cmd(char **ptr)
fflush(stdout);
fgets(buf, sizeof(buf), ldb_in);
if (buf[0] == 'y' || buf[0] == 'Y' || buf[0] == '\n')
fflush(stdout);
fgets(buf, sizeof(buf), ldb_in);
if (buf[0] == 'y' || buf[0] == 'Y' || buf[0] == '\n')
- exit(0);
+ exit(1);
}
static void
}
static void
@@
-320,6
+326,10
@@
print_context(os_context_t *context)
brief_print((lispobj)(*os_context_register_addr(context,i)));
#endif
}
brief_print((lispobj)(*os_context_register_addr(context,i)));
#endif
}
+#ifdef DARWIN
+ printf("DAR:\t\t 0x%08lx\n", (unsigned long)(*os_context_register_addr(context, 41)));
+ printf("DSISR:\t\t 0x%08lx\n", (unsigned long)(*os_context_register_addr(context, 42)));
+#endif
printf("PC:\t\t 0x%08lx\n",
(unsigned long)(*os_context_pc_addr(context)));
}
printf("PC:\t\t 0x%08lx\n",
(unsigned long)(*os_context_pc_addr(context)));
}
@@
-328,8
+338,9
@@
static void
print_context_cmd(char **ptr)
{
int free;
print_context_cmd(char **ptr)
{
int free;
+ struct thread *thread=arch_os_get_current_thread();
- free = SymbolValue(FREE_INTERRUPT_CONTEXT_INDEX)>>2;
+ free = SymbolValue(FREE_INTERRUPT_CONTEXT_INDEX,thread)>>2;
if (more_p(ptr)) {
int index;
if (more_p(ptr)) {
int index;
@@
-339,7
+350,7
@@
print_context_cmd(char **ptr)
if ((index >= 0) && (index < free)) {
printf("There are %d interrupt contexts.\n", free);
printf("printing context %d\n", index);
if ((index >= 0) && (index < free)) {
printf("There are %d interrupt contexts.\n", free);
printf("printing context %d\n", index);
- print_context(lisp_interrupt_contexts[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);
} else {
printf("There aren't that many/few contexts.\n");
printf("There are %d interrupt contexts.\n", free);
@@
-350,7
+361,7
@@
print_context_cmd(char **ptr)
else {
printf("There are %d interrupt contexts.\n", free);
printf("printing context %d\n", free - 1);
else {
printf("There are %d interrupt contexts.\n", free);
printf("printing context %d\n", free - 1);
- print_context(lisp_interrupt_contexts[free - 1]);
+ print_context(thread->interrupt_contexts[free - 1]);
}
}
}
}
}
}
@@
-374,8
+385,9
@@
static void
catchers_cmd(char **ptr)
{
struct catch_block *catch;
catchers_cmd(char **ptr)
{
struct catch_block *catch;
+ struct thread *thread=arch_os_get_current_thread();
- catch = (struct catch_block *)SymbolValue(CURRENT_CATCH_BLOCK);
+ catch = (struct catch_block *)SymbolValue(CURRENT_CATCH_BLOCK,thread);
if (catch == NULL)
printf("There are no active catchers!\n");
if (catch == NULL)
printf("There are no active catchers!\n");