summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorAda Christine <adachristine18@gmail.com>2021-04-07 09:17:19 +0000
committerAda Christine <adachristine18@gmail.com>2021-04-07 09:17:19 +0000
commit6d4fefae4f0afff412117133ee5e2178c3c5a1a1 (patch)
tree6733f1c42c392d941b7a7511f9a84f45456c31d4 /kernel
parente328f82d9232c1dac1dddd03b22da88c4d0dcdc5 (diff)
possible to install ist entries, stop and start interrupts
Diffstat (limited to 'kernel')
-rw-r--r--kernel/cpu.c14
-rw-r--r--kernel/cpu.h4
2 files changed, 18 insertions, 0 deletions
diff --git a/kernel/cpu.c b/kernel/cpu.c
index 83a264b..d5c6675 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -195,3 +195,17 @@ void isr_install(int vec, void *isr, int ist)
}
}
+void ist_install(int ist, void *stack)
+{
+ tss.ist[ist] = (uint64_t)stack;
+}
+
+void int_enable(void)
+{
+ __asm__ ("sti");
+}
+
+void int_disable(void)
+{
+ __asm__ ("cli");
+}
diff --git a/kernel/cpu.h b/kernel/cpu.h
index feded83..15cf44a 100644
--- a/kernel/cpu.h
+++ b/kernel/cpu.h
@@ -1,5 +1,9 @@
#pragma once
void cpu_init(void);
+
void isr_install(int vec, void *isr, int ist);
+void ist_install(int ist, void *stack);
+void int_enable(void);
+void int_disable(void);