Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 113 → Rev 115

/kernel/trunk/core/debug.inc
21,7 → 21,7
; destroys eax
mov eax, [0x3000]
shl eax, 8
mov [eax+0x80000+0xBC], ebx
mov [eax+0x80000+APPDATA.dbg_event_mem], ebx
ret
 
get_debuggee_slot:
37,7 → 37,7
shl eax, 5
push ebx
mov ebx, [0x3000]
cmp [0x80000+eax*8+0xAC], ebx
cmp [0x80000+eax*8+APPDATA.debugger_slot], ebx
pop ebx
jnz .ret_bad
; clc ; automatically
51,7 → 51,7
; destroys eax,ebx
call get_debuggee_slot
jc .ret
and dword [eax*8+0x80000+0xAC], 0
and dword [eax*8+0x80000+APPDATA.debugger_slot], 0
call do_resume
.ret:
sti
72,13 → 72,13
; destroys eax,ebx
call get_debuggee_slot
jc .ret
mov bl, [0x3000+eax+0xA] ; process state
mov bl, [0x3000+eax+TASKDATA.state] ; process state
test bl, bl
jz .1
cmp bl, 5
jnz .ret
mov bl, 2
.2: mov [0x3000+eax+0xA], bl
.2: mov [0x3000+eax+TASKDATA.state], bl
.ret:
sti
ret
87,13 → 87,13
jmp .2
 
do_resume:
mov bl, [0x3000+eax+0xA]
mov bl, [0x3000+eax+TASKDATA.state]
cmp bl, 1
jz .1
cmp bl, 2
jnz .ret
mov bl, 5
.2: mov [0x3000+eax+0xA], bl
.2: mov [0x3000+eax+TASKDATA.state], bl
.ret: ret
.1: dec ebx
jmp .2
227,7 → 227,7
call get_debuggee_slot
jc .errret
mov ebp, eax
lea eax, [eax*8+0x80000+0xC0]
lea eax, [eax*8+0x80000+APPDATA.dbg_regs]
; [eax]=dr0, [eax+4]=dr1, [eax+8]=dr2, [eax+C]=dr3
; [eax+10]=dr7
add edx, std_application_base_address
358,7 → 358,7
.1:
mov eax, ebp
shl eax, 8
mov edx, [0x80000+eax+0xBC]
mov edx, [0x80000+eax+APPDATA.dbg_event_mem]
test edx, edx
jz .ret
; read buffer header
414,7 → 414,7
; new debug event
mov eax, ebp
shl eax, 8
or byte [0x80000+eax+0xA8+1], 1 ; set flag 100h
or byte [0x80000+eax+APPDATA.event_mask+1], 1 ; set flag 100h
.ret:
ret
 
432,7 → 432,7
; set DRx registers for task and continue
mov eax, [0x3000]
shl eax, 8
add eax, 0x80000+0xC0
add eax, 0x80000+APPDATA.dbg_regs
mov ecx, [eax+0]
mov dr0, ecx
mov ecx, [eax+4]
455,7 → 455,7
cli
mov eax, [0x3000]
shl eax, 8
mov eax, [0x80000+eax+0xAC]
mov eax, [0x80000+eax+APPDATA.debugger_slot]
test eax, eax
jnz .debug
sti
464,7 → 464,7
mov [error_interrupt], 1
call show_error_parameters
mov edx, [0x3010]
mov byte [edx+0xA], 4
mov byte [edx+TASKDATA.state], 4
jmp change_task
.debug:
; we are debugged process, notify debugger and suspend ourself
484,7 → 484,7
jnz .l1
push edx ; DR6 image
mov ecx, [0x3010]
push dword [ecx+4] ; PID
push dword [ecx+TASKDATA.pid] ; PID
push 12
pop ecx
push 3 ; 3 = debug exception
493,7 → 493,7
pop ecx
pop ecx
mov edx, [0x3010]
mov byte [edx+0xA], 1 ; suspended
mov byte [edx+TASKDATA.state], 1 ; suspended
call change_task
restore_ring3_context
iretd