/*
- * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
#include <ddb/db_output.h>
extern jmp_buf_t *db_recover;
-struct x86_kernel_state32 ddb_null_kregs;
+struct x86_kernel_state ddb_null_kregs;
extern kmod_info_t *kmod;
char *name;
unsigned int offset;
} i386_kregs[] = {
- { "ebx", (unsigned int)(&((struct x86_kernel_state32 *)0)->k_ebx) },
- { "esp", (unsigned int)(&((struct x86_kernel_state32 *)0)->k_esp) },
- { "ebp", (unsigned int)(&((struct x86_kernel_state32 *)0)->k_ebp) },
- { "edi", (unsigned int)(&((struct x86_kernel_state32 *)0)->k_edi) },
- { "esi", (unsigned int)(&((struct x86_kernel_state32 *)0)->k_esi) },
- { "eip", (unsigned int)(&((struct x86_kernel_state32 *)0)->k_eip) },
+ { "ebx", (unsigned int)(&((struct x86_kernel_state *)0)->k_ebx) },
+ { "esp", (unsigned int)(&((struct x86_kernel_state *)0)->k_esp) },
+ { "ebp", (unsigned int)(&((struct x86_kernel_state *)0)->k_ebp) },
+ { "edi", (unsigned int)(&((struct x86_kernel_state *)0)->k_edi) },
+ { "esi", (unsigned int)(&((struct x86_kernel_state *)0)->k_esi) },
+ { "eip", (unsigned int)(&((struct x86_kernel_state *)0)->k_eip) },
{ 0 }
};
int if_efl; /* saved efl(iret_i) */
};
+extern const char *trap_type[];
+extern int TRAP_TYPES;
+
/*
* Figure out the next frame up in the call stack.
* For trap(), we print the address of the faulting instruction and
int frame_type, /* in */
thread_t thr_act) /* in */
{
- x86_saved_state32_t *iss32;
- extern char * trap_type[];
- extern int TRAP_TYPES;
-
+ x86_saved_state32_t *iss32;
struct interrupt_frame *ifp;
task_t task = (thr_act != THREAD_NULL)? thr_act->task: TASK_NULL;
switch(frame_type) {
case TRAP:
- /*
- * We know that trap() has 1 argument and we know that
- * it is an (x86_saved_state32_t *).
- */
- iss32 = (x86_saved_state32_t *)
- db_get_task_value((int)&((*fp)->f_arg0),4,FALSE,task);
-
- if (iss32->trapno >= 0 && iss32->trapno < TRAP_TYPES) {
- db_printf(">>>>> %s trap at ",
- trap_type[iss32->trapno]);
- } else {
- db_printf(">>>>> trap (number %d) at ",
- iss32->trapno & 0xffff);
- }
- db_task_printsym(iss32->eip, DB_STGY_PROC, task);
- db_printf(" <<<<<\n");
- *fp = (struct i386_frame *)iss32->ebp;
- *ip = (db_addr_t)iss32->eip;
- break;
+ /*
+ * We know that trap() has 1 argument and we know that
+ * it is an (strcut x86_saved_state32_t *).
+ */
+ iss32 = (x86_saved_state32_t *)
+ db_get_task_value((int)&((*fp)->f_arg0),4,FALSE,task);
+
+ if (iss32->trapno >= 0 && iss32->trapno < TRAP_TYPES) {
+ db_printf(">>>>> %s trap at ",
+ trap_type[iss32->trapno]);
+ } else {
+ db_printf(">>>>> trap (number %d) at ",
+ iss32->trapno & 0xffff);
+ }
+ db_task_printsym(iss32->eip, DB_STGY_PROC, task);
+ db_printf(" <<<<<\n");
+ *fp = (struct i386_frame *)iss32->ebp;
+ *ip = (db_addr_t)iss32->eip;
+ break;
+
case INTERRUPT:
- if (*lfp == 0) {
- db_printf(">>>>> interrupt <<<<<\n");
- goto miss_frame;
- }
- db_printf(">>>>> interrupt at ");
- ifp = (struct interrupt_frame *)(*lfp);
- *fp = ifp->if_frame;
- if (ifp->if_iretaddr == db_return_to_iret_symbol_value) {
- *ip = ((x86_saved_state32_t *) ifp->if_edx)->eip;
- } else
- *ip = (db_addr_t) ifp->if_eip;
- db_task_printsym(*ip, DB_STGY_PROC, task);
- db_printf(" <<<<<\n");
- break;
+ if (*lfp == 0) {
+ db_printf(">>>>> interrupt <<<<<\n");
+ goto miss_frame;
+ }
+ db_printf(">>>>> interrupt at ");
+ ifp = (struct interrupt_frame *)(*lfp);
+ *fp = ifp->if_frame;
+ if (ifp->if_iretaddr == db_return_to_iret_symbol_value) {
+ *ip = ((x86_saved_state32_t *)ifp->if_edx)->eip;
+ } else
+ *ip = (db_addr_t)ifp->if_eip;
+ db_task_printsym(*ip, DB_STGY_PROC, task);
+ db_printf(" <<<<<\n");
+ break;
+
case SYSCALL:
- if (thr_act != THREAD_NULL && thr_act->machine.pcb) {
- iss32 = (x86_saved_state32_t *)thr_act->machine.pcb->iss;
+ if (thr_act != THREAD_NULL && thr_act->machine.pcb) {
+ iss32 = (x86_saved_state32_t *)thr_act->machine.pcb->iss;
- *ip = (db_addr_t)(iss32->eip);
- *fp = (struct i386_frame *)(iss32->ebp);
- }
- break;
- /* falling down for unknown case */
- default:
- miss_frame:
- *ip = (db_addr_t)
- db_get_task_value((int)&(*fp)->f_retaddr, 4, FALSE, task);
- *lfp = *fp;
- *fp = (struct i386_frame *)
- db_get_task_value((int)&(*fp)->f_frame, 4, FALSE, task);
- break;
+ *ip = (db_addr_t)(iss32->eip);
+ *fp = (struct i386_frame *)(iss32->ebp);
+ }
+ break;
+
+ default: /* falling down for unknown case */
+miss_frame:
+ *ip = (db_addr_t)
+ db_get_task_value((int)&(*fp)->f_retaddr, 4, FALSE, task);
+ *lfp = *fp;
+ *fp = (struct i386_frame *)
+ db_get_task_value((int)&(*fp)->f_frame, 4, FALSE, task);
+ break;
}
}
if (count == -1)
count = 65535;
- next_thread:
+next_thread:
top_act = THREAD_NULL;
user_frame = 0;
iss32 = (x86_saved_state32_t *)th->machine.pcb->iss;
- frame = (struct i386_frame *) (iss32->ebp);
- callpc = (db_addr_t) (iss32->eip);
+ frame = (struct i386_frame *) (iss32->ebp);
+ callpc = (db_addr_t) (iss32->eip);
} else {
int cpu;
*/
iss32 = (x86_saved_state32_t *)th->machine.pcb->iss;
- frame = (struct i386_frame *) (iss32->ebp);
- callpc = (db_addr_t) (iss32->eip);
+ frame = (struct i386_frame *) (iss32->ebp);
+ callpc = (db_addr_t) (iss32->eip);
} else {
if (cpu == real_ncpus) {
- register struct x86_kernel_state32 *iks;
+ register struct x86_kernel_state *iks;
int r;
iks = STACK_IKS(th->kernel_stack);
iss32 = (x86_saved_state32_t *)cpu_datap(cpu)->cpu_kdb_saved_state;
- frame = (struct i386_frame *) (iss32->ebp);
- callpc = (db_addr_t) (iss32->eip);
+ frame = (struct i386_frame *) (iss32->ebp);
+ callpc = (db_addr_t) (iss32->eip);
+ }
}
}
}
- }
} else {
frame = (struct i386_frame *)addr;
th = (db_default_act)? db_default_act: current_thread();
}
db_printf("\n");
- next_frame:
+next_frame:
lastcallpc = callpc;
db_nextframe(&lastframe, &frame, &callpc, frame_type,
(user_frame) ? th : THREAD_NULL);
}
}
- thread_done:
+thread_done:
if (trace_all_threads) {
if (top_act != THREAD_NULL)
th = top_act;
}
}
-extern int kdp_vm_read(caddr_t, caddr_t, unsigned int );
+extern mach_vm_size_t kdp_machine_vm_read(mach_vm_address_t, caddr_t, mach_vm_size_t);
extern boolean_t kdp_trans_off;
/*
* Print out 256 bytes of real storage
*
* dr [entaddr]
*/
-void db_display_real(db_expr_t addr, __unused int have_addr, __unused db_expr_t count, __unused char * modif) {
-
+void
+db_display_real(db_expr_t addr, boolean_t have_addr, db_expr_t count,
+ char *modif)
+{
int i;
unsigned int xbuf[8];
unsigned read_result = 0;
/* Print 256 bytes */
for(i=0; i<8; i++) {
-/* Do a physical read using kdp_vm_read(), rather than replicating the same
+/*
+ * Do a physical read using kdp_machine_vm_read(), rather than replicating the same
* facility
*/
kdp_trans_off = 1;
- read_result = kdp_vm_read(addr, &xbuf[0], 32);
+ read_result = kdp_machine_vm_read(addr, &xbuf[0], 32);
kdp_trans_off = 0;
if (read_result != 32)
/*
* Displays all of the kmods in the system.
*
- * dk
+ * dk
*/
void
-db_display_kmod(__unused db_expr_t addr, __unused int have_addr, __unused db_expr_t count, __unused char *modif)
+db_display_kmod(__unused db_expr_t addr, __unused boolean_t have_addr,
+ __unused db_expr_t count, __unused char *modif)
{
kmod_info_t *kmd;
kmd, kmd->address, strt, end, kmd->name, kmd->version);
kmd = kmd->next;
}
+}
- return;
+void
+db_display_iokit(__unused db_expr_t addr, __unused boolean_t have_addr,
+ __unused db_expr_t count, __unused char *modif)
+{
}