1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
/*
* ========================================================
*
* HCore
* Copyright Mahrouss Logic, all rights reserved.
*
* ========================================================
*/
#include <ArchKit/ArchKit.hpp>
#include <KernelKit/ProcessManager.hpp>
#include <NewKit/String.hpp>
static const char* kExceptionMessage[32] = {
"Division by zero",
"Debug Breakpoint",
"Non-maskable interrupt",
"Breakpoint",
"Detected overflow",
"Out-of-bounds",
"Invalid opcode",
"No coprocessor",
"Double fault",
"Coprocessor segment overrun",
"Bad TSS",
"Segment not found",
"Stack error.",
"General Protection Fault",
"Page Fault",
"Invalid interrupt",
"Coprocessor fault",
"Alignment check",
"Machine check",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reservedl",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
};
/// @brief System call interrupt (like DOS and NT)
#define kKernelSyscallInterrupt (0x21)
extern "C" HCore::UIntPtr rt_handle_interrupts(HCore::UIntPtr &rsp) {
HCore::HAL::rt_cli();
HCore::HAL::StackFramePtr sf = (HCore::HAL::StackFramePtr)rsp;
HCore::HAL::rt_sti();
return rsp;
}
|