2022-09-05 16:13:51 +02:00
|
|
|
#include "interrupts/Interrupts.h"
|
|
|
|
|
|
|
|
void Interrupts::disable()
|
|
|
|
{
|
|
|
|
asm volatile("cli");
|
|
|
|
}
|
|
|
|
|
|
|
|
void Interrupts::enable()
|
|
|
|
{
|
|
|
|
asm volatile("sti");
|
2022-09-20 17:16:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
extern char __is_in_interrupt_handler;
|
|
|
|
bool Interrupts::is_in_handler()
|
|
|
|
{
|
|
|
|
return __is_in_interrupt_handler;
|
|
|
|
}
|
|
|
|
|
|
|
|
void Interrupts::return_from_handler(SavedContext* context)
|
|
|
|
{
|
|
|
|
asm volatile("mov %0, %%rsp\n"
|
|
|
|
"jmp _asm_interrupt_exit"
|
|
|
|
:
|
|
|
|
: "r"(context));
|
2022-09-05 16:13:51 +02:00
|
|
|
}
|