1)fixed hangup on reboot/restart/poweroff

2)drivers

git-svn-id: svn://kolibrios.org@417 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge) 2007-03-13 22:09:38 +00:00
parent d4db051a61
commit ef977fdf26
11 changed files with 64 additions and 69 deletions

View File

@ -34,7 +34,7 @@ pci_api:
or al,al
jnz pci_fn_1
; PCI function 0: get pci version (AH.AL)
movzx eax,word [0x2F0000+0x9022]
movzx eax,word [BOOT_VAR+0x9022]
ret
pci_fn_1:
@ -42,14 +42,14 @@ pci_fn_1:
jnz pci_fn_2
; PCI function 1: get last bus in AL
mov al,[0x2F0000+0x9021]
mov al,[BOOT_VAR+0x9021]
ret
pci_fn_2:
cmp al,2
jne pci_fn_3
; PCI function 2: get pci access mechanism
mov al,[0x2F0000+0x9020]
mov al,[BOOT_VAR+0x9020]
ret
pci_fn_3:
@ -108,7 +108,7 @@ pci_make_config_cmd:
align 4
pci_read_reg:
cmp byte [0x2F0000+0x9020],2 ;what mechanism will we use?
cmp byte [BOOT_VAR+0x9020],2 ;what mechanism will we use?
je pci_read_reg_2
; mechanism 1
@ -238,7 +238,7 @@ pci_read_reg_err:
align 4
pci_write_reg:
cmp byte [0x2F0000+0x9020],2 ;what mechanism will we use?
cmp byte [BOOT_VAR+0x9020],2 ;what mechanism will we use?
je pci_write_reg_2
; mechanism 1

View File

@ -484,6 +484,9 @@ struc SRV
SRV_FD_OFFSET equ 0x18
SRV_SIZE equ 44
DRV_ENTRY equ 1
DRV_EXIT equ -1
struc COFF_HEADER
{ .machine dw ?
.nSections dw ?

View File

@ -1,6 +1,4 @@
DRV_ENTRY equ 1
DRV_EXIT equ -1
DRV_COMPAT equ 4 ;minimal required drivers version
DRV_CURRENT equ 4 ;current drivers model version
@ -698,23 +696,23 @@ proc load_driver stdcall, driver_name:dword
file_name rb 14+16+4+1 ; '/rd/1/drivers/<up-to-16-chars>.obj'
endl
lea edx, [file_name]
mov dword [edx], '/rd/'
mov dword [edx+4], '1/dr'
mov dword [edx+8], 'iver'
mov word [edx+12], 's/'
mov esi, [driver_name]
lea edi, [edx+14]
mov ecx, 16
lea edx, [file_name]
mov dword [edx], '/rd/'
mov dword [edx+4], '1/dr'
mov dword [edx+8], 'iver'
mov word [edx+12], 's/'
mov esi, [driver_name]
lea edi, [edx+14]
mov ecx, 16
@@:
lodsb
test al, al
jz @f
stosb
loop @b
lodsb
test al, al
jz @f
stosb
loop @b
@@:
mov dword [edi], '.obj'
mov byte [edi+4], 0
mov dword [edi], '.obj'
mov byte [edi+4], 0
stdcall load_file, edx
test eax, eax

View File

@ -452,13 +452,13 @@ align 4
proc page_fault_handler
pushad
; push eax
; push edx
; mov edx, 0x400 ;bocsh
; mov al,0xff ;bocsh
; out dx, al ;bocsh
; pop edx
; pop eax
push eax
push edx
mov edx, 0x400 ;bocsh
mov al,0xff ;bocsh
out dx, al ;bocsh
pop edx
pop eax
mov ebp, esp
mov eax, cr2

View File

@ -65,9 +65,8 @@ R9800 equ 0x4E49 ;R350
R9800P equ 0x4E48 ;R350
R9800XT equ 0x4E4A ;R360
OS_BASE equ 0
new_app_base equ 0x80000000
SLOT_BASE equ 0x0080000
OS_BASE equ 0x80000000
SLOT_BASE equ (OS_BASE+0x0080000)
PG_SW equ 0x003
PG_NOCACHE equ 0x018

View File

@ -27,9 +27,11 @@ FORCE_MMX_128 equ 0 ;integer sse2 extensions
DEBUG equ 1
OS_BASE equ 0
new_app_base equ 0x80000000
SLOT_BASE equ OS_BASE+0x0080000
OS_BASE equ 0x80000000
SLOT_BASE equ (OS_BASE+0x0080000)
TASK_COUNT equ (OS_BASE+0x0003004)
CURRENT_TASK equ (OS_BASE+0x0003000)
CAPS_SSE2 equ 26
PG_SW equ 0x003
@ -165,7 +167,7 @@ proc service_proc stdcall, ioctl:dword
jne @F
mov eax, [edi+output]
mov eax, [eax]
mov [eax+new_app_base], dword SOUND_VERSION
mov [eax], dword SOUND_VERSION
xor eax, eax
ret
@@:
@ -177,7 +179,7 @@ proc service_proc stdcall, ioctl:dword
pop edi
mov ecx, [edi+output]
mov ecx, [ecx]
mov [ecx+new_app_base], ebx
mov [ecx], ebx
ret
@@:
mov ebx, [edi+input]
@ -206,7 +208,7 @@ proc service_proc stdcall, ioctl:dword
movzx eax, word [edx+STREAM.format]
mov ecx, [edi+output]
mov ecx, [ecx]
mov [ecx+new_app_base], eax
mov [ecx], eax
xor eax, eax
ret
@@:
@ -227,13 +229,12 @@ proc service_proc stdcall, ioctl:dword
pop edi
mov ecx, [edi+output]
mov ecx, [ecx]
mov [ecx+new_app_base], ebx
mov [ecx], ebx
ret
@@:
cmp eax, SND_SETBUFF
jne @F
mov eax, [ebx+4]
add eax, new_app_base
stdcall set_buffer, [ebx],eax,[ebx+8],[ebx+12]
ret
@@:
@ -248,8 +249,6 @@ proc service_proc stdcall, ioctl:dword
mov eax, [edi+output]
mov ecx, [eax]
mov eax, [eax+4]
add ecx, new_app_base
add eax, new_app_base
stdcall GetBufferVol,[ebx],ecx,eax
ret
@@:
@ -263,7 +262,7 @@ proc service_proc stdcall, ioctl:dword
mov eax, [edx+STREAM.pan]
mov ebx, [edi+output]
mov ebx, [ebx]
mov [ebx+new_app_base], eax
mov [ebx], eax
xor eax, eax
ret
@@:
@ -271,7 +270,6 @@ proc service_proc stdcall, ioctl:dword
jne @F
mov eax, [ebx+4]
add eax, new_app_base
stdcall wave_out, [ebx],eax,[ebx+8]
ret
@@:
@ -292,7 +290,7 @@ proc service_proc stdcall, ioctl:dword
mov eax, [edx+STREAM.in_size]
mov ecx, [edi+output]
mov ecx, [ecx]
mov [ecx+new_app_base], eax
mov [ecx], eax
xor eax, eax
ret
@@:
@ -308,10 +306,6 @@ restore inp_size
restore output
restore out_size
TASK_COUNT equ 0x0003004
CURRENT_TASK equ 0x0003000
align 4
proc CreateBuffer stdcall, format:dword, size:dword
locals
@ -653,8 +647,8 @@ proc wave_out stdcall, str:dword,src:dword,size:dword
test esi, esi
jz .fail
cmp esi, new_app_base
jb .fail
cmp esi, OS_BASE
ja .fail
mov [state_saved], 0

View File

@ -84,7 +84,6 @@ CTRL_CNT_GIE equ 0x00000001 ; GPI Interrupt Enable
CODEC_REG_POWERDOWN equ 0x26
CODEC_REG_ST equ 0x26
DEV_PLAY equ 1
DEV_STOP equ 2
DEV_CALLBACK equ 3
@ -243,9 +242,8 @@ end virtual
EVENT_NOTIFY equ 0x00000200
OS_BASE equ 0; 0x80400000
OS_BASE equ 0x80000000
SLOT_BASE equ OS_BASE+0x0080000
new_app_base equ 0x80000000
public START
public service_proc
@ -369,15 +367,14 @@ proc service_proc stdcall, ioctl:dword
cmp eax, DEV_GET_MASTERVOL
jne @F
mov ebx, [edi+output]
add ebx, new_app_base
stdcall get_master_vol, ebx
ret
@@:
cmp eax, DEV_GET_INFO
jne @F
mov ebx, [edi+output]
stdcall get_dev_info, ebx
ret
;@@:
; cmp eax, DEV_GET_INFO
; jne @F
; mov ebx, [edi+output]
; stdcall get_dev_info, ebx
; ret
@@:
.fail:
or eax, -1

View File

@ -270,9 +270,8 @@ end virtual
EVENT_NOTIFY equ 0x00000200
OS_BASE equ 0;
OS_BASE equ 0x80000000
SLOT_BASE equ OS_BASE+0x0080000
new_app_base equ 0x80000000
public START
public service_proc
@ -413,7 +412,6 @@ proc service_proc stdcall, ioctl:dword
cmp eax, DEV_GET_MASTERVOL
jne @F
mov ebx, [edi+output]
add ebx, new_app_base
stdcall get_master_vol, ebx
ret
;@@:
@ -1409,5 +1407,3 @@ ctrl AC_CNTRL
lpc_bus rd 1
civ_val rd 1

View File

@ -164,7 +164,11 @@ CONNECTION_SIZE equ 7*4
UART_VERSION equ 0x12345678 ;debug
init_uart_service:
proc init_uart_service stdcall, state:dword
cmp [state], 1
jne .stop
mov eax, UART_SIZE
call malloc
test eax, eax
@ -241,10 +245,14 @@ init_uart_service:
stdcall attach_int_handler, COM_1_IRQ, com_1_isr
stdcall reg_service, sz_uart_srv, uart_proc
mov [eax+SRV.entry], init_uart_service
ret
.fail:
.stop:
xor eax, eax
ret
endp
handle equ IOCTL.handle
io_code equ IOCTL.io_code

View File

@ -721,7 +721,7 @@ first_app_found:
cmp [IDEContrRegsBaseAddr], 0
setnz [dma_hdd]
call init_uart_service
stdcall init_uart_service, DRV_ENTRY
sti
jmp $ ; wait here for timer to take control

View File

@ -264,7 +264,7 @@ include "video/cursors.inc" ; cursors functions
include "network/stack.inc"
include "drivers/comport.asm"
include "drivers/uart.inc"
; Mouse pointer