git.ucc.asn.au
/
tpg
/
acess2.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
aec7656cbc2b789b83ff04455c403aef07fc7605
[tpg/acess2.git]
/
desctab.asm
1
;
2
;
3
;
4
[BITS 64]
5
6
MM_LOCALAPIC equ 0xFFFFFD0000000000
7
8
[section .text]
9
Desctab_Init:
10
; Install IRQ Handlers
11
12
[section .data]
13
gIDT:
14
times 256 dw 0x00080000, 0x00008E00, 0, 0 ; 64-bit Interrupt Gate, CS = 0x8, IST0
15
16
%macro DEFERR 1
17
Isr%1:
18
push 0
19
push %1
20
jmp ErrorCommon
21
%endmacro
22
%macro DEFERRNO 1
23
Isr%1:
24
push %1
25
jmp ErrorCommon
26
%endmacro
27
28
%macro DEFIRQ 1
29
Irq%1:
30
push 0
31
push %1
32
jmp IrqCommon
33
%endmacro
34
35
%macro PUSH_EX 1-*
36
%rep %0
37
push %1
38
%rotate 1
39
%endrep
40
%endmacro
41
%macro POP_EX 1-*
42
%rep %0
43
%rotate -1
44
pop %1
45
%endrep
46
%endmacro
47
48
%macro PUSH_GPR 0
49
mov [rsp-0x08], r15
50
mov [rsp-0x10], r14
51
mov [rsp-0x18], r13
52
mov [rsp-0x20], r12
53
mov [rsp-0x28], r11
54
mov [rsp-0x30], r10
55
mov [rsp-0x38], r9
56
mov [rsp-0x40], r8
57
mov [rsp-0x48], rdi
58
mov [rsp-0x50], rsi
59
mov [rsp-0x58], rbp
60
mov [rsp-0x60], rsp
61
mov [rsp-0x68], rbx
62
mov [rsp-0x70], rdx
63
mov [rsp-0x78], rcx
64
mov [rsp-0x80], rax
65
sub rsp, 0x80
66
%endmacro
67
%macro POP_GPR 0
68
add rsp, 0x80
69
mov r15, [rsp-0x08]
70
mov r14, [rsp-0x10]
71
mov r13, [rsp-0x18]
72
mov r12, [rsp-0x20]
73
mov r11, [rsp-0x28]
74
mov r10, [rsp-0x30]
75
mov r9, [rsp-0x38]
76
mov r8, [rsp-0x40]
77
mov rdi, [rsp-0x48]
78
mov rsi, [rsp-0x50]
79
mov rbp, [rsp-0x58]
80
;mov rsp, [rsp-0x60]
81
mov rbx, [rsp-0x68]
82
mov rdx, [rsp-0x70]
83
mov rcx, [rsp-0x78]
84
mov rax, [rsp-0x80]
85
%endmacro
86
87
[extern Proc_Scheduler]
88
SchedulerIRQ:
89
; TODO: Find Current CPU
90
PUSH_GPR
91
;PUSH_FPU
92
;PUSH_XMM
93
94
xor rsi, rsi
95
mov rdi, MM_LOCALAPIC+0x20
96
mov esi, [rdi]
97
call Proc_Scheduler
98
99
;POP_XMM
100
;POP_FPU
101
POP_GPR
102
iret
UCC
git Repository :: git.ucc.asn.au