forked from KolibriOS/kolibrios
kernel: fn69.1 - get simd context
mtdbg: display contents of mmx registers git-svn-id: svn://kolibrios.org@4893 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
06df103c1c
commit
6f2aa3f1f1
@ -136,9 +136,18 @@ debug_getcontext:
|
|||||||
; ecx=pid
|
; ecx=pid
|
||||||
; edx=sizeof(CONTEXT)
|
; edx=sizeof(CONTEXT)
|
||||||
; esi->CONTEXT
|
; esi->CONTEXT
|
||||||
; destroys eax,ecx,edx,esi,edi
|
; destroys eax,ebx,ecx,edx,esi,edi
|
||||||
cmp edx, 28h
|
|
||||||
jnz .ret
|
xor ebx, ebx ; 0 - get only gp regs
|
||||||
|
cmp edx, 40
|
||||||
|
je .std_ctx
|
||||||
|
|
||||||
|
cmp edx, 48+288
|
||||||
|
jne .ret
|
||||||
|
|
||||||
|
inc ebx ; 1 - get sse context
|
||||||
|
; TODO legacy 32-bit FPU/MMX context
|
||||||
|
.std_ctx:
|
||||||
; push ecx
|
; push ecx
|
||||||
; mov ecx, esi
|
; mov ecx, esi
|
||||||
call check_region
|
call check_region
|
||||||
@ -147,8 +156,15 @@ debug_getcontext:
|
|||||||
jnz .ret
|
jnz .ret
|
||||||
call get_debuggee_slot
|
call get_debuggee_slot
|
||||||
jc .ret
|
jc .ret
|
||||||
|
|
||||||
|
shr eax, 5
|
||||||
|
cmp eax, [fpu_owner]
|
||||||
|
jne @f
|
||||||
|
inc bh ; set swap context flag
|
||||||
|
@@:
|
||||||
|
shl eax, 8
|
||||||
mov edi, esi
|
mov edi, esi
|
||||||
mov eax, [eax*8+SLOT_BASE+APPDATA.pl0_stack]
|
mov eax, [eax+SLOT_BASE+APPDATA.pl0_stack]
|
||||||
lea esi, [eax+RING0_STACK_SIZE]
|
lea esi, [eax+RING0_STACK_SIZE]
|
||||||
|
|
||||||
.ring0:
|
.ring0:
|
||||||
@ -178,6 +194,29 @@ debug_getcontext:
|
|||||||
mov [edi+4], eax
|
mov [edi+4], eax
|
||||||
lodsd ;esp
|
lodsd ;esp
|
||||||
mov [edi+18h], eax
|
mov [edi+18h], eax
|
||||||
|
|
||||||
|
dec bl
|
||||||
|
js .ret
|
||||||
|
dec bl
|
||||||
|
jns .ret
|
||||||
|
|
||||||
|
test bh, bh ; check swap flag
|
||||||
|
jz @F
|
||||||
|
|
||||||
|
ffree st0 ; swap context
|
||||||
|
@@:
|
||||||
|
|
||||||
|
add esi, 4 ;top of ring0 stack
|
||||||
|
;fpu/sse context saved here
|
||||||
|
add edi, 40
|
||||||
|
mov eax, 1 ;sse context
|
||||||
|
stosd
|
||||||
|
xor eax, eax ;reserved dword
|
||||||
|
stosd
|
||||||
|
|
||||||
|
mov ecx, 288/4
|
||||||
|
rep movsd ;copy sse context
|
||||||
|
|
||||||
.ret:
|
.ret:
|
||||||
sti
|
sti
|
||||||
ret
|
ret
|
||||||
|
@ -105,19 +105,11 @@ OnQuit:
|
|||||||
get_new_context:
|
get_new_context:
|
||||||
mov esi, context
|
mov esi, context
|
||||||
mov edi, oldcontext
|
mov edi, oldcontext
|
||||||
mov ecx, 10
|
mov ecx, (ctx_end-context)/4
|
||||||
rep movsd
|
rep movsd
|
||||||
|
|
||||||
get_context:
|
get_context:
|
||||||
;push 1
|
mcall 69, 1, [debuggee_pid], ctx_end-context, context
|
||||||
;pop ebx
|
|
||||||
;push 69
|
|
||||||
;pop eax
|
|
||||||
;mov ecx, [debuggee_pid]
|
|
||||||
;mov esi, context
|
|
||||||
;push 28h
|
|
||||||
;pop edx
|
|
||||||
mcall 69, 1, [debuggee_pid], 28h, context
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
set_context:
|
set_context:
|
||||||
@ -259,7 +251,7 @@ do_reload:
|
|||||||
push ecx
|
push ecx
|
||||||
call get_context
|
call get_context
|
||||||
mov edi, oldcontext
|
mov edi, oldcontext
|
||||||
mov ecx, 10
|
mov ecx, (ctx_end-context)/4
|
||||||
rep movsd
|
rep movsd
|
||||||
|
|
||||||
; activate debugger window
|
; activate debugger window
|
||||||
@ -1136,7 +1128,7 @@ get_byte_nobreak:
|
|||||||
mov al, [edi+5]
|
mov al, [edi+5]
|
||||||
clc
|
clc
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.nobreak:
|
.nobreak:
|
||||||
;push 69
|
;push 69
|
||||||
;pop eax
|
;pop eax
|
||||||
@ -1152,7 +1144,7 @@ get_byte_nobreak:
|
|||||||
clc
|
clc
|
||||||
jz @f
|
jz @f
|
||||||
stc
|
stc
|
||||||
|
|
||||||
@@:
|
@@:
|
||||||
pop eax
|
pop eax
|
||||||
ret
|
ret
|
||||||
@ -1170,7 +1162,7 @@ OnCalc:
|
|||||||
mov esi, calc_string
|
mov esi, calc_string
|
||||||
call put_message_nodraw
|
call put_message_nodraw
|
||||||
jmp draw_messages
|
jmp draw_messages
|
||||||
|
|
||||||
.ret:
|
.ret:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -1183,7 +1175,7 @@ OnDump:
|
|||||||
jnz .param
|
jnz .param
|
||||||
add [dumppos], dump_height*10h
|
add [dumppos], dump_height*10h
|
||||||
jmp .doit
|
jmp .doit
|
||||||
|
|
||||||
.param:
|
.param:
|
||||||
call calc_expression
|
call calc_expression
|
||||||
jc .ret
|
jc .ret
|
||||||
@ -1527,7 +1519,7 @@ OnBl:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
|
|
||||||
show_break_info:
|
show_break_info:
|
||||||
push edi
|
push edi
|
||||||
test byte [edi+4], 8
|
test byte [edi+4], 8
|
||||||
@ -2081,7 +2073,7 @@ help_data_msg db 'List of data commands:',10
|
|||||||
db 'u [<expression>] - unassemble instructions at given address',10
|
db 'u [<expression>] - unassemble instructions at given address',10
|
||||||
db 'r <register> <expression> or',10
|
db 'r <register> <expression> or',10
|
||||||
db 'r <register>=<expression> - set register value',10,0
|
db 'r <register>=<expression> - set register value',10,0
|
||||||
|
|
||||||
; Breakpoints commands group
|
; Breakpoints commands group
|
||||||
|
|
||||||
aBreakpoints db 12,'breakpoints',0
|
aBreakpoints db 12,'breakpoints',0
|
||||||
@ -2428,10 +2420,12 @@ dbgbuf rb 256
|
|||||||
|
|
||||||
fileattr rb 40
|
fileattr rb 40
|
||||||
|
|
||||||
|
;keep aligned !!!
|
||||||
|
;do not change layout !!!
|
||||||
|
|
||||||
|
align 16
|
||||||
needzerostart:
|
needzerostart:
|
||||||
|
|
||||||
context:
|
context:
|
||||||
|
|
||||||
_eip dd ?
|
_eip dd ?
|
||||||
_eflags dd ?
|
_eflags dd ?
|
||||||
_eax dd ?
|
_eax dd ?
|
||||||
@ -2442,41 +2436,57 @@ _esp dd ?
|
|||||||
_ebp dd ?
|
_ebp dd ?
|
||||||
_esi dd ?
|
_esi dd ?
|
||||||
_edi dd ?
|
_edi dd ?
|
||||||
oldcontext rb $-context
|
|
||||||
|
|
||||||
mmx_context:
|
_ctx_flags:
|
||||||
_mm0 dq ?
|
dd ?
|
||||||
_mm1 dq ?
|
dd ?
|
||||||
_mm2 dq ?
|
|
||||||
_mm3 dq ?
|
_sse_flags:
|
||||||
_mm4 dq ?
|
dq ?
|
||||||
_mm5 dq ?
|
dq ?
|
||||||
_mm6 dq ?
|
dq ?
|
||||||
_mm7 dq ?
|
dq ?
|
||||||
oldmmxcontext rb $-mmx_context
|
|
||||||
|
|
||||||
fpu_context:
|
fpu_context:
|
||||||
_st0 dq ?
|
mmx_context:
|
||||||
_st1 dq ?
|
_st0:
|
||||||
_st2 dq ?
|
_mm0: rq 2
|
||||||
_st3 dq ?
|
_st1:
|
||||||
_st4 dq ?
|
_mm1: rq 2
|
||||||
_st5 dq ?
|
_st2:
|
||||||
_st6 dq ?
|
_mm2: rq 2
|
||||||
_st7 dq ?
|
_st3:
|
||||||
oldfpucontext rb $-fpu_context
|
_mm3: rq 2
|
||||||
|
_st4:
|
||||||
|
_mm4: rq 2
|
||||||
|
_st5:
|
||||||
|
_mm5: rq 2
|
||||||
|
_st6:
|
||||||
|
_mm6: rq 2
|
||||||
|
_st7:
|
||||||
|
_mm7: rq 2
|
||||||
|
|
||||||
sse_context:
|
sse_context:
|
||||||
_xmm0 dq 2 dup ?
|
_xmm0 rq 2
|
||||||
_xmm1 dq 2 dup ?
|
_xmm1 rq 2
|
||||||
_xmm2 dq 2 dup ?
|
_xmm2 rq 2
|
||||||
_xmm3 dq 2 dup ?
|
_xmm3 rq 2
|
||||||
_xmm4 dq 2 dup ?
|
_xmm4 rq 2
|
||||||
_xmm5 dq 2 dup ?
|
_xmm5 rq 2
|
||||||
_xmm6 dq 2 dup ?
|
_xmm6 rq 2
|
||||||
_xmm7 dq 2 dup ?
|
_xmm7 rq 2
|
||||||
oldssecontext rb $-sse_context
|
ctx_end:
|
||||||
|
|
||||||
|
|
||||||
|
oldcontext rb _ctx_flags-context
|
||||||
|
rd 2
|
||||||
|
rq 4
|
||||||
|
|
||||||
|
oldfpucontext:
|
||||||
|
oldmmxcontext: rb sse_context-fpu_context
|
||||||
|
oldssecontext: rb ctx_end-sse_context
|
||||||
|
|
||||||
|
if 0
|
||||||
avx_context:
|
avx_context:
|
||||||
_ymm0 dq 4 dup ?
|
_ymm0 dq 4 dup ?
|
||||||
_ymm1 dq 4 dup ?
|
_ymm1 dq 4 dup ?
|
||||||
@ -2487,6 +2497,8 @@ _ymm5 dq 4 dup ?
|
|||||||
_ymm6 dq 4 dup ?
|
_ymm6 dq 4 dup ?
|
||||||
_ymm7 dq 4 dup ?
|
_ymm7 dq 4 dup ?
|
||||||
oldavxcontext rb $-avx_context
|
oldavxcontext rb $-avx_context
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
step_num dd 0
|
step_num dd 0
|
||||||
proc_num dd 0
|
proc_num dd 0
|
||||||
|
Loading…
Reference in New Issue
Block a user