/kernel/trunk/core/memory.inc |
---|
143,45 → 143,6 |
ret |
endp |
proc map_io_mem stdcall, base:dword, size:dword, flags:dword |
push ebx |
push edi |
mov eax, [size] |
add eax, 4095 |
and eax, -4096 |
mov [size], eax |
stdcall alloc_kernel_space, eax |
test eax, eax |
jz .fail |
push eax |
mov edi, 0x1000 |
mov ebx, eax |
mov ecx,[size] |
mov edx, [base] |
shr eax, 12 |
shr ecx, 12 |
and edx, -4096 |
or edx, [flags] |
@@: |
mov [page_tabs+eax*4], edx |
invlpg [ebx] |
inc eax |
add ebx, edi |
add edx, edi |
loop @B |
pop eax |
mov edx, [base] |
and edx, 4095 |
add eax, edx |
.fail: |
pop edi |
pop ebx |
ret |
endp |
; param |
; eax= page base + page flags |
; ebx= liear address |
189,7 → 150,7 |
align 4 |
commit_pages: |
push edi |
test ecx, ecx |
jz .fail |
210,7 → 171,6 |
jnz @B |
mov [pg_data.pg_mutex],ecx |
.fail: |
pop edi |
ret |
/kernel/trunk/core/peload.inc |
---|
275,7 → 275,6 |
free_kernel_space, 'FreeKernelSpace', \ ; stdcall |
kernel_alloc, 'KernelAlloc', \ ; stdcall |
kernel_free, 'KernelFree', \ ; stdcall |
map_io_mem, 'MapIoMem', \ ; stdcall |
pci_api, 'PciApi', \ |
pci_read32, 'PciRead32', \ ; stdcall |
reg_service, 'RegService', \ |
/kernel/trunk/core/exports.inc |
---|
33,7 → 33,6 |
szGetPgAddr db 'GetPgAddr',0 |
szMapPage db 'MapPage',0 |
szMapSpace db 'MapSpace',0 |
szMapIoMem db 'MapIoMem',0 |
szCommitPages db 'CommitPages',0 |
szReleasePages db 'ReleasePages',0 |
102,7 → 101,6 |
dd szFreePage , free_page |
dd szMapPage , map_page ;stdcall |
dd szMapSpace , map_space |
dd szMapIoMem , map_io_mem ;stdcall |
dd szGetPgAddr , get_pg_addr |
dd szCommitPages , commit_pages ;not implemented |
dd szReleasePages , release_pages |
/kernel/trunk/drivers/ati2d.asm |
---|
344,14 → 344,27 |
align 4 |
proc init_r200 |
stdcall PciRead32, [bus], [devfn], dword 0x18 |
stdcall MapIoMem,eax,0x10000,(PG_SW+PG_NOCACHE) |
stdcall AllocKernelSpace, dword 0x10000 |
test eax, eax |
jz .fail |
mov [ati_io], eax |
mov edi, eax |
stdcall PciRead32, [bus], [devfn], dword 0x18 |
and eax, 0xFFFF0000 |
mov esi, eax |
mov edi, [ati_io] |
mov edx, 16 |
@@: |
stdcall MapPage,edi,esi,PG_SW+PG_NOCACHE |
add edi, 0x1000 |
add esi, 0x1000 |
dec edx |
jnz @B |
mov edi, [ati_io] |
mov dword [edi+RD_RB3D_CNTL], 0 |
call engRestore |
384,13 → 397,25 |
align 4 |
proc init_r500 |
stdcall PciRead32, [bus], [devfn], dword 0x18 |
stdcall MapIoMem,eax,0x10000,(PG_SW+PG_NOCACHE) |
stdcall AllocKernelSpace, dword 0x10000 |
test eax, eax |
jz .fail |
mov [ati_io], eax |
stdcall PciRead32, [bus], [devfn], dword 0x18 |
and eax, 0xFFFF0000 |
mov esi, eax |
mov edi, [ati_io] |
mov edx, 16 |
@@: |
stdcall MapPage,edi,esi,PG_SW+PG_NOCACHE |
add edi, 0x1000 |
add esi, 0x1000 |
dec edx |
jnz @B |
mov [fnSelect], r500_SelectCursor |
mov [fnSet], r500_SetCursor |
/kernel/trunk/drivers/imports.inc |
---|
35,7 → 35,6 |
FreePage,\ |
MapPage,\ |
MapSpace,\ |
MapIoMem,\ |
GetPgAddr,\ |
CommitPages,\ |
ReleasePages,\ |
/kernel/trunk/drivers/sound.asm |
---|
802,13 → 802,25 |
align 4 |
proc set_ICH4 |
stdcall AllocKernelSpace, dword 0x2000 |
mov edi, eax |
mov ebx, [ctrl.codec_mem_base] |
and ebx, -4096 |
stdcall MapPage, edi,ebx,PG_SW+PG_NOCACHE |
mov ebx, [ctrl.codec_mem_base] |
and ebx, 4095 |
add ebx, edi |
mov [ctrl.codec_mem_base], ebx |
add edi, 0x1000 |
stdcall MapIoMem,[ctrl.codec_mem_base],0x1000,PG_SW+PG_NOCACHE |
mov [ctrl.codec_mem_base], eax |
mov ebx, [ctrl.ctrl_mem_base] |
and ebx, -4096 |
stdcall MapPage, edi, ebx,PG_SW+PG_NOCACHE |
mov ebx, [ctrl.ctrl_mem_base] |
and ebx, 4095 |
add ebx, edi |
mov [ctrl.ctrl_mem_base], ebx |
stdcall MapIoMem,[ctrl.ctrl_mem_base],0x1000,PG_SW+PG_NOCACHE |
mov [ctrl.ctrl_mem_base], eax |
mov [ctrl.codec_read16], codec_mem_r16 ;virtual |
mov [ctrl.codec_write16], codec_mem_w16 ;virtual |