From 8c97d11513ca2074f166af981be15e60275e9912 Mon Sep 17 00:00:00 2001 From: daniel-k Date: Fri, 26 Aug 2016 18:07:34 +0200 Subject: [PATCH 1/2] kernel/entry.asm: fix pseudo interrupt stack frame (ordering was wrong) --- hermit/arch/x86/kernel/entry.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hermit/arch/x86/kernel/entry.asm b/hermit/arch/x86/kernel/entry.asm index 2173b571f..37767864d 100644 --- a/hermit/arch/x86/kernel/entry.asm +++ b/hermit/arch/x86/kernel/entry.asm @@ -506,8 +506,8 @@ switch_context: pushfq ; RFLAGS push QWORD 0x08 ; CS push QWORD rollback ; RIP - push QWORD 0x00 ; Interrupt number push QWORD 0x00edbabe ; Error code + push QWORD 0x00 ; Interrupt number push rax push rcx push rdx From 843bd8e1d5b9922709b70ee70a94b49626868099 Mon Sep 17 00:00:00 2001 From: daniel-k Date: Mon, 29 Aug 2016 14:16:31 +0200 Subject: [PATCH 2/2] kernel/tasks: fix logical bug check_timers() Only pop tasks from timer queue if their deadline is reached, this was most likely a typo. --- hermit/kernel/tasks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hermit/kernel/tasks.c b/hermit/kernel/tasks.c index ff2781f7c..039a40c6f 100644 --- a/hermit/kernel/tasks.c +++ b/hermit/kernel/tasks.c @@ -766,7 +766,7 @@ void check_timers(void) // check timers current_tick = get_clock_tick(); - while (readyqueues[core_id].timers.first && readyqueues[core_id].timers.first->timeout <= current_tick) + while (readyqueues[core_id].timers.first && readyqueues[core_id].timers.first->timeout >= current_tick) { task_t* task = readyqueues[core_id].timers.first;