Setting TR
Posted: Mon Nov 28, 2005 11:54 am
Will this function works ?
Code: Select all
set_task_register:
push eax
push ebx
push esi
mov esi, task_dec
mov ebx, tss_struct
mov [esi], word 68h
mov [esi+2], word bx
shr ebx, 10h
mov [esi+4], byte bl
mov [esi+5], byte 10001001b ; 89h
mov [esi+6], byte 10000000b ; c0h
mov [esi+7], byte bh
mov ax, 18h
ltr ax
pop esi
pop ebx
pop eax
ret
Code: Select all
gdt:
null_desc dd 0h
dd 0h
flat_code dw 0ffffh
dw 0h
db 0h
db 10011110b ; feh
db 11001111b ; cfh
db 0h
flat_data dw 0ffffh
dw 0h
db 0h
db 10010010b ; f2h
db 11001111b ; cfh
db 0h
task_desc dd 0h
dd 0h
tss_struct:
back_link dw 0h
dw 0h
esp0 dd 0h
ss0 dw 0h
dw 0h
esp1 dd 0h
ss1 dw 0h
dw 0h
esp2 dd 0h
ss2 dw 0h
dw 0h
ccr3 dd 0h
eip dd 0h
eflags dd 0h
eeax dd 0h
eecx dd 0h
eedx dd 0h
eebx dd 0h
eesp dd 0h
eebp dd 0h
eesi dd 0h
eedi dd 0h
ees dw 0h
dw 0h
ecs dw 0h
dw 0h
ess dw 0h
dw 0h
eds dw 0h
dw 0h
efs dw 0h
dw 0h
egs dw 0h
dw 0h
eldt dw 0h
dw 0h
dw 0h
bitmap dw 0h