summaryrefslogtreecommitdiff
path: root/Source/Kernel/SyscallManager
diff options
context:
space:
mode:
authorAlexis211 <alexis211@gmail.com>2009-09-06 12:09:59 +0200
committerAlexis211 <alexis211@gmail.com>2009-09-06 12:09:59 +0200
commit7f6511e97e378d5853ec6b2edc6e330fb09e5132 (patch)
tree830230e99fa775853745b3019c855fd22fcd09e3 /Source/Kernel/SyscallManager
parent50115ce7b42baf30d31cbee2669bc3d694098d12 (diff)
downloadMelon-7f6511e97e378d5853ec6b2edc6e330fb09e5132.tar.gz
Melon-7f6511e97e378d5853ec6b2edc6e330fb09e5132.zip
Bug correction
Diffstat (limited to 'Source/Kernel/SyscallManager')
-rw-r--r--Source/Kernel/SyscallManager/IDT.ns.cpp7
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);