1419,13 → 1419,13 |
test bl, bl |
jz @f |
stdcall is_region_userspace, ecx, 1 |
jnz @f |
jz @f |
ret |
@@: |
test esi, 0x08000000 |
jz @f |
stdcall is_region_userspace, edi, 1 |
jnz @f |
jz @f |
ret |
@@: |
;It is not optimization |
1767,7 → 1767,7 |
|
; if given memory address belongs to kernel then error |
stdcall is_region_userspace, ebx, 128 |
jz .addr_error |
jnz .addr_error |
|
mov eax, keymap |
mov ecx, 128 |
1780,7 → 1780,7 |
jnz .alt |
|
stdcall is_region_userspace, ebx, 128 |
jz .addr_error |
jnz .addr_error |
|
mov eax, keymap_shift |
mov ecx, 128 |
1793,7 → 1793,7 |
jne .country |
|
stdcall is_region_userspace, ebx, 128 |
jz .addr_error |
jnz .addr_error |
|
mov eax, keymap_alt |
mov ecx, 128 |
2459,7 → 2459,7 |
jnz .exit |
.small_table: |
stdcall is_region_userspace, edx, DRIVE_DATA_SIZE |
jz .exit |
jnz .exit |
mov edi, edx |
mov esi, DRIVE_DATA |
mov ecx, DRIVE_DATA_SIZE ;10 |
2475,7 → 2475,7 |
sysfn_getversion: ; 18.13 = get kernel ID and version |
; if given memory address belongs to kernel then error |
stdcall is_region_userspace, ecx, version_end-version_inf |
jz .addr_error |
jnz .addr_error |
|
mov edi, ecx |
mov esi, version_inf |
2838,7 → 2838,7 |
|
; add check pointer |
stdcall is_region_userspace, ecx, esi |
jz .fin |
jnz .fin |
|
cmp [img_background], static_background_data |
jnz @f |
3191,7 → 3191,7 |
; |
; if given memory address belongs to kernel then error |
stdcall is_region_userspace, ebx, 0x4C |
jz .addr_error |
jnz .addr_error |
|
cmp ecx, -1 ; who am I ? |
jne .no_who_am_i |
4401,7 → 4401,7 |
lea eax, [eax*3] |
stdcall is_region_userspace, ebx, eax |
pop ecx |
jz sys_putimage.exit |
jnz sys_putimage.exit |
|
sys_putimage: |
test ecx, 0x80008000 |
4451,7 → 4451,7 |
imul eax, ecx |
stdcall is_region_userspace, ebx, eax |
pop ecx |
jz sys_putimage.exit |
jnz sys_putimage.exit |
|
mov eax, [current_slot_idx] |
shl eax, 8 |
5206,7 → 5206,7 |
syscall_writetext: ; WriteText |
|
stdcall is_region_userspace, edx, esi |
jz .err |
jnz .err |
|
mov eax, [TASK_BASE] |
mov ebp, [eax-twdw+WDATA.box.left] |
5230,7 → 5230,7 |
|
@@: ; check pointer |
stdcall is_region_userspace, edi, 0 |
jz .err |
jnz .err |
jmp dtext |
.err: |
ret |
5403,7 → 5403,7 |
lea ebp, [ebp*3] |
imul ebp, esi |
stdcall is_region_userspace, edi, ebp |
jz .exit |
jnz .exit |
|
mov ebp, edx |
dec ebp |
5474,7 → 5474,7 |
lea ebp, [ebp*4] |
imul ebp, esi |
stdcall is_region_userspace, edi, ebp |
jz .exit |
jnz .exit |
|
mov ebp, edx |
|
5754,23 → 5754,20 |
; @return ZF = 1 if region in userspace memory, |
; ZF = 0 otherwise |
proc is_region_userspace stdcall, base:dword, len:dword |
push eax ebx |
push eax |
mov eax, [base] |
|
cmp eax, OS_BASE |
ja @f |
cmp eax, OS_BASE-1 |
ja @f ; zf |
|
add eax, [len] |
jc @f ; zf |
cmp eax, OS_BASE |
ja @f |
ja @f ; zf |
|
mov eax, 1 |
jmp .ret |
cmp eax, eax ; ZF |
@@: |
xor eax, eax |
.ret: |
test eax, eax |
pop ebx eax |
pop eax |
ret |
endp |
|