337,41 → 337,36 |
|
align 4 |
proc init_LFB |
locals |
pg_count dd ? |
endl |
|
cmp dword [LFBAddress], -1 |
jne @f |
mov [BOOT_VAR+0x901c],byte 2 |
stdcall alloc_pages, (0x280000 / 4096) |
|
push eax |
call alloc_page |
stdcall map_page_table, LFB_BASE, eax |
pop eax |
or eax, PG_UW |
mov ebx, LFB_BASE |
mov ecx, 0x280000 / 4096 |
call commit_pages |
mov [LFBAddress], dword LFB_BASE |
ret |
@@: |
test [SCR_MODE],word 0100000000000000b |
jnz @f |
mov [BOOT_VAR+0x901c],byte 2 |
ret |
@@: |
; cmp dword [LFBAddress], -1 |
; jne @f |
; |
; mov esi, boot_framebuf |
; call boot_log |
; |
; mov [BOOT_VAR+0x901c],byte 2 |
; stdcall alloc_pages, (0x280000 / 4096) |
; |
; push eax |
; call alloc_page |
; stdcall map_page_table, LFB_BASE, eax |
; pop eax |
; or eax, PG_UW |
; mov ebx, LFB_BASE |
; mov ecx, 0x280000 / 4096 |
; call commit_pages |
; mov [LFBAddress], dword LFB_BASE |
; ret |
;@@: |
call init_mtrr |
|
mov edx, LFB_BASE |
mov esi, [LFBAddress] |
mov edi, 0x00C00000 |
mov edi, 0x00C00000 ; 12Mb |
mov dword [exp_lfb+4], edx |
|
shr edi, 12 |
mov [pg_count], edi |
shr edi, 10 |
shr edi, 12 ; C00 |
; mov [pg_count], edi |
shr edi, 10 ; 3 |
|
or esi, PG_GLOBAL+PG_LARGE+PG_UW |
mov edx, sys_pgdir+(LFB_BASE shr 20) |
389,16 → 384,11 |
endp |
|
align 4 |
proc init_userDMA |
init_userDMA: |
stdcall alloc_pages, 4096 ; 16M <<<<<<<<<<+++++++++++++++++++++++++++++++++ |
add eax, 0x007FFFF0 |
add eax, 0x007FFFF0 ; terrible mess, sorry ... |
and eax, 0xFF800000 ; align at 8M boundary |
mov [UserDMAaddr], eax |
; or eax, PG_UW + PG_NOCACHE |
; mov ebx, USER_DMA_BUFFER |
; mov ecx, 2048 ; 8M, to be sure |
; call commit_pages |
; mov eax, [UserDMAaddr] |
or eax, PG_LARGE + PG_UW + PG_NOCACHE |
mov ebx, sys_pgdir + (USER_DMA_BUFFER shr 20) |
mov [ebx], eax |
405,8 → 395,9 |
add ebx, 4 |
add eax, 0x00400000 |
mov [ebx], eax |
mov eax, cr3 ;flush TLB |
mov cr3, eax |
ret |
endp |
|
align 4 |
proc new_mem_resize stdcall, new_size:dword |