forked from PoliEcho-holding-org/kern
30 lines
886 B
ArmAsm
30 lines
886 B
ArmAsm
; Global Descriptor Table
|
|
gdt:
|
|
.null_desc: ; Just zeros, no clue why it even exists
|
|
dq 0
|
|
.code_desc: ; 32-bit code
|
|
dw 0xffff ; Limit (low 16-bits)
|
|
dw 0x0000 ; Base (low 16 bits)
|
|
db 0x00 ; Base (mid 8 bits)
|
|
db 0b10011011 ; Access flags
|
|
db 0b11001111 ; Low 4 bits - Granularity, High 4 bits - Limit (high 4 bits)
|
|
db 0x00 ; Base (high 8 bits)
|
|
.data_desc: ; 32-bit data
|
|
dw 0xffff ; Limit (low 16-bits)
|
|
dw 0x0000 ; Base (low 16 bits)
|
|
db 0x00 ; Base (mid 8 bits)
|
|
db 0b10010011 ; Access flags
|
|
db 0b11001111 ; Low 4 bits - Granularity, High 4 bits - Limit (high 4 bits)
|
|
db 0x00 ; Base (high 8 bits)
|
|
.end:
|
|
|
|
; GDT Pointer
|
|
gdtp:
|
|
dw gdt.end - gdt - 1 ; Size
|
|
dd gdt ; Pointer
|
|
|
|
; Segments
|
|
code_seg equ gdt.code_desc - gdt
|
|
data_seg equ gdt.data_desc - gdt
|
|
|