aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorMarvin Borner2021-05-05 20:59:15 +0200
committerMarvin Borner2021-05-05 20:59:15 +0200
commit8f3e8e7f06cb786b2e2c174cb90eee7947012067 (patch)
tree12361730899d62937b71829770dc2c32649bef30 /kernel
parent51016670a24092b6b9ecd0f50d1aaa976e780cc1 (diff)
Debugging improvements
STILL NOT FOUND (see previous descr)
Diffstat (limited to 'kernel')
-rw-r--r--kernel/drivers/interrupts.c4
-rw-r--r--kernel/features/load.c1
2 files changed, 3 insertions, 2 deletions
diff --git a/kernel/drivers/interrupts.c b/kernel/drivers/interrupts.c
index 92971e4..5b57e56 100644
--- a/kernel/drivers/interrupts.c
+++ b/kernel/drivers/interrupts.c
@@ -181,8 +181,8 @@ void isr_panic(struct regs *r)
if (proc) {
printf("\t-> Exception occurred in %s at addr 0x%x (offset 0x%x)\n", proc->name,
r->eip, r->eip - proc->entry);
- printf("\t\t-> Process: [entry: %x, kstack: %x, ustack: %x]\n", proc->entry,
- proc->stack.kernel, proc->stack.user);
+ printf("\t\t-> Process: [entry: %x, kstack: %x, esp %x, ustack: %x, uesp %x]\n",
+ proc->entry, proc->stack.kernel, r->esp, proc->stack.user, r->useresp);
proc_exit(proc, r, 1);
} else {
__asm__ volatile("cli\nhlt");
diff --git a/kernel/features/load.c b/kernel/features/load.c
index cbe32ed..d6e387e 100644
--- a/kernel/features/load.c
+++ b/kernel/features/load.c
@@ -167,6 +167,7 @@ res elf_load(const char *name, struct proc *proc)
proc->stack.user = user_stack + PROC_STACK_SIZE;
proc->stack.kernel = kernel_stack + PROC_STACK_SIZE;
+ proc->regs.esp = proc->stack.kernel;
proc->regs.ebp = proc->stack.user;
proc->regs.useresp = proc->stack.user;
proc->regs.eip = header.entry + rand_off;