gdt: setup TSS
This commit is contained in:
+18
-5
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user