Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4892 → Rev 4893

/kernel/trunk/core/debug.inc
136,9 → 136,18
; ecx=pid
; edx=sizeof(CONTEXT)
; esi->CONTEXT
; destroys eax,ecx,edx,esi,edi
cmp edx, 28h
jnz .ret
; destroys eax,ebx,ecx,edx,esi,edi
 
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
; mov ecx, esi
call check_region
147,8 → 156,15
jnz .ret
call get_debuggee_slot
jc .ret
 
shr eax, 5
cmp eax, [fpu_owner]
jne @f
inc bh ; set swap context flag
@@:
shl eax, 8
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]
 
.ring0:
178,6 → 194,29
mov [edi+4], eax
lodsd ;esp
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:
sti
ret
/programs/develop/mtdbg/mtdbg.asm
105,19 → 105,11
get_new_context:
mov esi, context
mov edi, oldcontext
mov ecx, 10
mov ecx, (ctx_end-context)/4
rep movsd
 
get_context:
;push 1
;pop ebx
;push 69
;pop eax
;mov ecx, [debuggee_pid]
;mov esi, context
;push 28h
;pop edx
mcall 69, 1, [debuggee_pid], 28h, context
mcall 69, 1, [debuggee_pid], ctx_end-context, context
ret
 
set_context:
259,7 → 251,7
push ecx
call get_context
mov edi, oldcontext
mov ecx, 10
mov ecx, (ctx_end-context)/4
rep movsd
 
; activate debugger window
2428,10 → 2420,12
 
fileattr rb 40
 
;keep aligned !!!
;do not change layout !!!
 
align 16
needzerostart:
 
context:
 
_eip dd ?
_eflags dd ?
_eax dd ?
2442,41 → 2436,57
_ebp dd ?
_esi dd ?
_edi dd ?
oldcontext rb $-context
 
mmx_context:
_mm0 dq ?
_mm1 dq ?
_mm2 dq ?
_mm3 dq ?
_mm4 dq ?
_mm5 dq ?
_mm6 dq ?
_mm7 dq ?
oldmmxcontext rb $-mmx_context
_ctx_flags:
dd ?
dd ?
 
_sse_flags:
dq ?
dq ?
dq ?
dq ?
 
fpu_context:
_st0 dq ?
_st1 dq ?
_st2 dq ?
_st3 dq ?
_st4 dq ?
_st5 dq ?
_st6 dq ?
_st7 dq ?
oldfpucontext rb $-fpu_context
mmx_context:
_st0:
_mm0: rq 2
_st1:
_mm1: rq 2
_st2:
_mm2: rq 2
_st3:
_mm3: rq 2
_st4:
_mm4: rq 2
_st5:
_mm5: rq 2
_st6:
_mm6: rq 2
_st7:
_mm7: rq 2
 
sse_context:
_xmm0 dq 2 dup ?
_xmm1 dq 2 dup ?
_xmm2 dq 2 dup ?
_xmm3 dq 2 dup ?
_xmm4 dq 2 dup ?
_xmm5 dq 2 dup ?
_xmm6 dq 2 dup ?
_xmm7 dq 2 dup ?
oldssecontext rb $-sse_context
_xmm0 rq 2
_xmm1 rq 2
_xmm2 rq 2
_xmm3 rq 2
_xmm4 rq 2
_xmm5 rq 2
_xmm6 rq 2
_xmm7 rq 2
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:
_ymm0 dq 4 dup ?
_ymm1 dq 4 dup ?
2487,7 → 2497,9
_ymm6 dq 4 dup ?
_ymm7 dq 4 dup ?
oldavxcontext rb $-avx_context
end if
 
 
step_num dd 0
proc_num dd 0
dumpread dd ?