diff options
author | Alexis211 <alexis211@gmail.com> | 2009-09-06 12:09:59 +0200 |
---|---|---|
committer | Alexis211 <alexis211@gmail.com> | 2009-09-06 12:09:59 +0200 |
commit | 7f6511e97e378d5853ec6b2edc6e330fb09e5132 (patch) | |
tree | 830230e99fa775853745b3019c855fd22fcd09e3 /Source/Kernel/SyscallManager | |
parent | 50115ce7b42baf30d31cbee2669bc3d694098d12 (diff) | |
download | Melon-7f6511e97e378d5853ec6b2edc6e330fb09e5132.tar.gz Melon-7f6511e97e378d5853ec6b2edc6e330fb09e5132.zip |
Bug correction
Diffstat (limited to 'Source/Kernel/SyscallManager')
-rw-r--r-- | Source/Kernel/SyscallManager/IDT.ns.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/Source/Kernel/SyscallManager/IDT.ns.cpp b/Source/Kernel/SyscallManager/IDT.ns.cpp index 0684255..96b2e2a 100644 --- a/Source/Kernel/SyscallManager/IDT.ns.cpp +++ b/Source/Kernel/SyscallManager/IDT.ns.cpp @@ -61,7 +61,6 @@ extern "C" void int66(); //IRQ to signal that thread ended extern "C" void idt_flush(u32int); extern "C" void interrupt_handler(registers_t regs) { - Task::currentThread->enterInterrupt(); //Do that so that whatever is called here can use waitIRQ bool doSwitch = (regs.int_no == 32 or regs.int_no >= 65); //SYSCALLS >= 65 are task-managing-related if (regs.int_no < 32) { IDT::handleException(regs, regs.int_no); @@ -76,7 +75,6 @@ extern "C" void interrupt_handler(registers_t regs) { Task::currentThread->finish(regs.eax); } if (doSwitch) Task::doSwitch(); - Task::currentThread->exitInterrupt(); } namespace IDT { @@ -185,8 +183,9 @@ void handleException(registers_t regs, int no) { //TODO :: make exception handli VirtualTerminal *vt = new VirtualTerminal(5, 50, 0, 15); vt->map(); - *vt << "\n Unhandled exception " << (s32int)no << " at " << (u32int)regs.cs << ":" << - (u32int)regs.eip << "\n :: " << exceptions[no]; + *vt << "\n Unhandled exception " << (s32int)no << " at "; + vt->writeHex(regs.cs); *vt <<":"; vt->writeHex(regs.eip); + *vt << "\n :: " << exceptions[no]; if (no == 14) { //Page fault int present = !(regs.err_code & 0x1); |