Fix IDT error # bug, add debug helper, continue debugging spawn_thread crash

The crash occurs after the newly-created stack is accessed, suggesting
that there is some bug in the paging code.
diff --git a/src/kernel/task.c b/src/kernel/task.c
index 85cce5b..1ec1337 100644
--- a/src/kernel/task.c
+++ b/src/kernel/task.c
@@ -81,6 +81,8 @@
 {
 	asm("cli");
 
+	kprintf(DEBUG "Spawning thread %p, data=%p\n", function, data);
+
 	struct process *proc = current_task->task.proc;
 	// Virtual address of page directory (in kernel memory)
 	uint *dir_v = PHYS_TO_VIRT(proc->page_directory_p);
@@ -93,11 +95,14 @@
 	// Alloc a new page in the current process mapping to the new stack
 	alloc_page(dir_v, (void *)proc->last_stack_pos);
 
+	kprintf(INFO "new_stack_base_v = %p\n", new_stack_base_v);
 	new_stack_base_v -= sizeof(uint);
 	*((uint *)new_stack_base_v) = (size_t)data;
 	new_stack_base_v -= sizeof(uint);
 	*((uint *)new_stack_base_v) = (size_t)&kill_this_thread;
 
+	kprintf(DEBUG "Set stack\n");
+
 	struct ll_task_i *ll_task = malloc(sizeof(struct ll_task_i));
 	memset(ll_task, 0, sizeof(struct ll_task_i));
 	struct task *task = &ll_task->task;
@@ -175,9 +180,11 @@
 
 void _do_switch_task(struct registers regs)
 {
-	// sti is called in switch_to_task
+	// Resetting eflags in _switch_to_task iret will switch this back
 	asm("cli");
 
+	kprintf(DEBUG "switching tasks\n");
+
 	// save context for this task
 	current_task->task.state = regs;