aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
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;