gdt: setup TSS

This commit is contained in:
2025-04-06 20:07:24 +03:00
parent 86cb117509
commit c92839c7f6
2 changed files with 85 additions and 34 deletions
+18 -5
View File
@@ -1,3 +1,8 @@
section .gdt
extern tss ; Объявляем tss как внешний символ из .data
extern tss_end
gdt_start:
; null entry
dd 0
@@ -35,14 +40,22 @@ gdt_data_ring3:
db 11001111b
db 0
gdt_tss:
dw 103 ;tss_end - tss - 1 ; Limit (размер TSS - 1)
dw 0 ; Base (будет заполнено вручную в boot.asm)
db 0 ; Base (средние 8 бит)
db 10001001b ; Access: Present, Ring 0, Type 9 (Available TSS)
db 00000000b ; Limit (48-51) и Flags (52-55): Granularity=0, Size=0
db 0 ; Base (верхние 8 бит)
gdt_end:
gdt:
dw gdt_end - gdt_start - 1 ; length
dd gdt_start ; address
dw gdt_end - gdt_start - 1
dd gdt_start
CODE_SEG equ gdt_code - gdt_start
DATA_SEG equ gdt_data - gdt_start
CODE_SEG_RING3 equ gdt_code_ring3 - gdt_start ; 24
DATA_SEG_RING3 equ gdt_data_ring3 - gdt_start ; 32
CODE_SEG_RING3 equ gdt_code_ring3 - gdt_start
DATA_SEG_RING3 equ gdt_data_ring3 - gdt_start
TSS_SEG equ gdt_tss - gdt_start