/kernel/branches/net/bus/pci/pci32.inc |
---|
155,12 → 155,12 |
align 4 |
pci_read_reg: |
push ebx esi |
cmp byte [BOOT_VAR+0x9020], 2;what mechanism will we use? |
je pci_read_reg_2 |
; mechanism 1 |
mov esi, eax ; save register size into ESI |
push esi ; save register size into ESI |
mov esi, eax |
and esi, 3 |
call pci_make_config_cmd |
202,7 → 202,7 |
out dx, eax |
pop eax |
pop esi ebx |
pop esi |
ret |
pci_read_reg_2: |
209,7 → 209,8 |
test bh, 128 ;mech#2 only supports 16 devices per bus |
jnz pci_read_reg_err |
mov esi, eax ; save register size into ESI |
push esi; save register size into ESI |
mov esi, eax |
and esi, 3 |
push eax |
261,13 → 262,12 |
out dx, al |
pop eax |
pop esi ebx |
pop esi |
ret |
pci_read_reg_err: |
xor eax, eax |
dec eax |
pop esi ebx |
ret |
286,12 → 286,12 |
align 4 |
pci_write_reg: |
push esi ebx |
cmp byte [BOOT_VAR+0x9020], 2;what mechanism will we use? |
je pci_write_reg_2 |
; mechanism 1 |
mov esi, eax ; save register size into ESI |
push esi ; save register size into ESI |
mov esi, eax |
and esi, 3 |
call pci_make_config_cmd |
335,7 → 335,7 |
out dx, eax |
xor eax, eax |
pop ebx esi |
pop esi |
ret |
pci_write_reg_2: |
344,7 → 344,8 |
jnz pci_write_reg_err |
mov esi, eax ; save register size into ESI |
push esi; save register size into ESI |
mov esi, eax |
and esi, 3 |
push eax |
396,13 → 397,12 |
out dx, al |
xor eax, eax |
pop ebx esi |
pop esi |
ret |
pci_write_reg_err: |
xor eax, eax |
dec eax |
pop ebx esi |
ret |
if defined mmio_pci_addr ; must be set above |
658,67 → 658,3 |
.return_a: |
mov dword[esp + 32], eax |
ret |
proc pci_enum |
push ebp |
mov ebp, esp |
push 0 |
virtual at ebp-4 |
.devfn db ? |
.bus db ? |
end virtual |
.loop: |
mov ah, [.bus] |
mov al, 2 |
mov bh, [.devfn] |
mov bl, 0 |
call pci_read_reg |
cmp eax, 0xFFFFFFFF |
jnz .has_device |
test byte [.devfn], 7 |
jnz .next_func |
jmp .no_device |
.has_device: |
push eax |
push sizeof.PCIDEV |
pop eax |
call malloc |
pop ecx |
test eax, eax |
jz .nomemory |
mov edi, eax |
mov [edi+PCIDEV.vendor_device_id], ecx |
mov eax, pcidev_list |
mov ecx, [eax+PCIDEV.bk] |
mov [edi+PCIDEV.bk], ecx |
mov [edi+PCIDEV.fd], eax |
mov [ecx+PCIDEV.fd], edi |
mov [eax+PCIDEV.bk], edi |
mov eax, dword [.devfn] |
mov word [edi+PCIDEV.devfn], ax |
mov bh, al |
mov al, 2 |
mov bl, 8 |
call pci_read_reg |
shr eax, 8 |
mov [edi+PCIDEV.class], eax |
test byte [.devfn], 7 |
jnz .next_func |
mov ah, [.bus] |
mov al, 0 |
mov bh, [.devfn] |
mov bl, 0Eh |
call pci_read_reg |
test al, al |
js .next_func |
.no_device: |
or byte [.devfn], 7 |
.next_func: |
inc dword [.devfn] |
mov ah, [.bus] |
cmp ah, [BOOT_VAR+0x9021] |
jbe .loop |
.nomemory: |
leave |
ret |
endp |
/kernel/branches/net/core/heap.inc |
---|
154,11 → 154,11 |
mov [ecx+block_next], eax |
mov [ecx+block_prev], ebx |
mov [ecx+list_fd], eax |
mov [ecx+list_bk], eax |
mov [ecx+block_base], eax |
mov [ecx+block_size], eax |
mov [ecx+block_flags], USED_BLOCK |
mov [edi+list_fd], eax |
mov [edi+list_bk], eax |
mov [edi+block_base], eax |
mov [edi+block_size], eax |
mov [edi+block_flags], USED_BLOCK |
mov [ebx+block_next], ecx |
mov [ebx+block_prev], edi |
/kernel/branches/net/core/peload.inc |
---|
284,14 → 284,10 |
alloc_pages, 'AllocPages', \ ; stdcall |
commit_pages, 'CommitPages', \ ; eax, ebx, ecx |
\ |
disk_add, 'DiskAdd', \ ;stdcall |
disk_media_changed, 'DiskMediaChanged', \ ;stdcall |
\ |
create_event, 'CreateEvent', \ ; ecx, esi |
destroy_event, 'DestroyEvent', \ ; |
raise_event, 'RaiseEvent', \ ; eax, ebx, edx, esi |
wait_event, 'WaitEvent', \ ; eax, ebx |
wait_event_timeout, 'WaitEventTimeout', \ ; eax, ebx, ecx |
get_event_ex, 'GetEvent', \ ; edi |
\ |
create_kernel_object, 'CreateObject', \ |
/kernel/branches/net/core/v86.inc |
---|
888,7 → 888,6 |
.cont2: |
pop ecx |
.cont: |
add ebx, 0x100 |
loop .scan |
mov ecx, edi |
call irq_eoi |
/kernel/branches/net/data32.inc |
---|
181,10 → 181,6 |
.bk dd dll_list |
.fd dd dll_list |
pcidev_list: |
.bk dd pcidev_list |
.fd dd pcidev_list |
MAX_DEFAULT_DLL_ADDR = 0x80000000 |
MIN_DEFAULT_DLL_ADDR = 0x70000000 |
dll_cur_addr dd MIN_DEFAULT_DLL_ADDR |
/kernel/branches/net/fs/ext2.inc |
---|
565,7 → 565,7 |
rep movsd |
pop ecx |
@@: |
cmp [ebp + EXT2_INODE_STRUC.i_size], 0 ;папка пуста |
cmp [ebp + EXT2_INODE_STRUC.i_blocks], 0 ;папка пуста |
je .error_empty_dir |
push edx ;адрес результата [edi + 28] |
616,7 → 616,6 |
test ebx, 0x3 ; длина записи должна делиться на 4 |
jnz .error_bad_len |
sub [ebp + EXT2_INODE_STRUC.i_size], ebx ;вычитаем напрямую из структуры inode |
add esi, ebx ; к следующей записи |
cmp esi, [edi + 24] ; сравниваем с концом блока |
jb .find_wanted_start |
623,7 → 622,8 |
push .find_wanted_start |
.end_block: ;вылетели из цикла |
cmp [ebp + EXT2_INODE_STRUC.i_size], 0 |
mov ebx, [ext2_data.count_block_in_block] |
sub [ebp + EXT2_INODE_STRUC.i_blocks], ebx ;вычитаем напрямую из структуры inode |
jle .end_dir |
inc dword [edi] ;получаем новый блок |
727,7 → 727,6 |
test ebx, 0x3 ; длина записи должна делиться на 4 |
jnz .error_bad_len |
sub [ebp + EXT2_INODE_STRUC.i_size], ebx ;вычитаем напрямую из структуры inode |
add esi, ebx |
cmp esi, [edi + 24] ;дошли ли до конца блока? |
jb .wanted_start |
1096,7 → 1095,6 |
push [ebp + EXT2_INODE_STRUC.i_blocks] |
xor ecx, ecx |
.folder_block_cycle: |
push ecx |
call ext2_get_inode_block |
test eax, eax |
jnz .error_get_inode_block |
1109,7 → 1107,7 |
push esi |
call ext2_test_block_by_name |
pop edi ecx |
pop edi |
cmp edi, esi ;нашли имя? |
je .next_folder_block ;не нашли -> к след. блоку |
1155,7 → 1153,6 |
.error_get_inode_block: |
.error_get_block: |
pop ecx |
.error_get_inode: |
pop ebx |
.error_empty_root: |
/kernel/branches/net/gui/event.inc |
---|
307,23 → 307,6 |
jmp wait_finish |
;----------------------------------------------------------------------------- |
align 4 |
wait_event_timeout: |
;param: |
; eax - event |
; ebx - uid (for Dummy testing) |
; ecx - timeout in timer ticks |
;retval: |
; eax - EVENT handle or 0 if timeout |
call DummyTest |
mov ebx, ecx |
mov ecx, eax ; wait_param |
mov edx, get_event_alone ; wait_test |
call Wait_events_ex |
test eax, eax |
jnz wait_finish |
ret |
;----------------------------------------------------------------------------- |
align 4 |
get_event_ex: ;; f68:14 |
;info: |
; Îæèäàíèå ëþáîãî ñîáûòèÿ â î÷åðåäè EventList òåêóùåãî ñëîòà |
/kernel/branches/net/kernel.asm |
---|
792,7 → 792,6 |
; call boot_log |
mov [pci_access_enabled], 1 |
call pci_enum |
; SET PRELIMINARY WINDOW STACK AND POSITIONS |
4618,10 → 4617,9 |
popad |
ret |
msg_board_data_size = 65536 ; Must be power of two |
uglobal |
msg_board_data rb msg_board_data_size |
msg_board_data: |
times 4096 db 0 |
msg_board_count dd 0x0 |
endg |
4654,7 → 4652,7 |
mov [msg_board_data+ecx], bl |
inc ecx |
and ecx, msg_board_data_size - 1 |
and ecx, 4095 |
mov [msg_board_count], ecx |
mov [check_idle_semaphore], 5 |
ret |
4747,8 → 4745,7 |
mov [eax], edx |
mov [ecx], eax |
mov [eax+12], ecx |
test edx, edx |
jz @f |
jecxz @f |
mov [edx+12], eax |
@@: |
and dword [esp+32], 0 |
/kernel/branches/net/const.inc |
---|
571,35 → 571,6 |
count dd ? |
ends |
struct PCIDEV |
bk dd ? |
fd dd ? |
vendor_device_id dd ? |
class dd ? |
devfn db ? |
bus db ? |
ends |
; The following macro assume that we are on uniprocessor machine. |
; Serious work is needed for multiprocessor machines. |
macro spin_lock_irqsave spinlock |
{ |
pushf |
cli |
} |
macro spin_unlock_irqrestore spinlock |
{ |
popf |
} |
macro spin_lock_irq spinlock |
{ |
cli |
} |
macro spin_unlock_irq spinlock |
{ |
sti |
} |
struct MEM_STATE |
mutex MUTEX |
smallmap dd ? |