Subversion Repositories Kolibri OS

Rev

Rev 1508 | Rev 1687 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1508 Rev 1599
Line 3... Line 3...
3
;; Copyright (C) KolibriOS team 2004-2009. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2009. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
$Revision: 1508 $
8
$Revision: 1599 $
9
 
9
 
Line 335... Line 335...
335
           ret
335
	   ret
336
endp
336
endp
Line 337... Line 337...
337
 
337
 
338
align 4
338
align 4
339
proc init_LFB
-
 
340
           locals
339
proc init_LFB
341
             pg_count dd ?
340
;           cmp dword [LFBAddress], -1
342
           endl
341
;           jne @f
343
 
342
;
344
           cmp dword [LFBAddress], -1
343
;        mov     esi, boot_framebuf
-
 
344
;        call    boot_log
345
           jne @f
345
;
346
           mov [BOOT_VAR+0x901c],byte 2
346
;           mov [BOOT_VAR+0x901c],byte 2
347
           stdcall alloc_pages, (0x280000 / 4096)
347
;           stdcall alloc_pages, (0x280000 / 4096)
348
 
348
;
349
           push eax
349
;           push eax
350
           call alloc_page
350
;           call alloc_page
351
           stdcall map_page_table, LFB_BASE, eax
351
;           stdcall map_page_table, LFB_BASE, eax
352
           pop eax
352
;           pop eax
353
           or eax, PG_UW
353
;           or eax, PG_UW
354
           mov ebx, LFB_BASE
354
;           mov ebx, LFB_BASE
355
           mov ecx, 0x280000 / 4096
355
;           mov ecx, 0x280000 / 4096
356
           call commit_pages
356
;           call commit_pages
357
           mov [LFBAddress], dword LFB_BASE
357
;           mov [LFBAddress], dword LFB_BASE
358
           ret
-
 
359
@@:
-
 
360
           test [SCR_MODE],word 0100000000000000b
-
 
361
           jnz @f
-
 
362
           mov [BOOT_VAR+0x901c],byte 2
-
 
363
           ret
358
;           ret
364
@@:
359
;@@:
Line 365... Line 360...
365
           call init_mtrr
360
	   call init_mtrr
366
 
361
 
367
           mov edx, LFB_BASE
362
	   mov edx, LFB_BASE
368
           mov esi, [LFBAddress]
363
	   mov esi, [LFBAddress]
Line 369... Line 364...
369
           mov edi, 0x00C00000
364
	   mov edi, 0x00C00000		     ; 12Mb
370
           mov dword [exp_lfb+4], edx
365
	   mov dword [exp_lfb+4], edx
371
 
366
 
Line 372... Line 367...
372
           shr edi, 12
367
	   shr edi, 12			     ; C00
373
           mov [pg_count], edi
368
;           mov [pg_count], edi
374
           shr edi, 10
369
	   shr edi, 10			     ; 3
375
 
370
 
Line 387... Line 382...
387
           mov cr3, eax
382
	   mov cr3, eax
388
           ret
383
	   ret
389
endp
384
endp
Line 390... Line 385...
390
 
385
 
391
align 4
386
align 4
392
proc init_userDMA
387
init_userDMA:
393
           stdcall alloc_pages, 4096 	; 16M <<<<<<<<<<+++++++++++++++++++++++++++++++++
388
	   stdcall alloc_pages, 4096	; 16M <<<<<<<<<<+++++++++++++++++++++++++++++++++
394
           add eax, 0x007FFFF0
389
	   add eax, 0x007FFFF0		; terrible mess, sorry ...
395
	   and eax, 0xFF800000		; align at 8M boundary
390
	   and eax, 0xFF800000		; align at 8M boundary
396
	   mov [UserDMAaddr], eax
-
 
397
;           or  eax, PG_UW + PG_NOCACHE
-
 
398
;           mov ebx, USER_DMA_BUFFER
-
 
399
;	   mov ecx, 2048		; 8M, to be sure
-
 
400
;           call commit_pages
-
 
401
;           mov eax, [UserDMAaddr]
391
	   mov [UserDMAaddr], eax
402
           or  eax, PG_LARGE + PG_UW + PG_NOCACHE
392
	   or  eax, PG_LARGE + PG_UW + PG_NOCACHE
403
           mov ebx, sys_pgdir + (USER_DMA_BUFFER shr 20)
393
	   mov ebx, sys_pgdir + (USER_DMA_BUFFER shr 20)
404
           mov [ebx], eax
394
	   mov [ebx], eax
405
	   add ebx, 4
395
	   add ebx, 4
406
           add eax, 0x00400000
396
	   add eax, 0x00400000
-
 
397
	   mov [ebx], eax
-
 
398
	   mov eax, cr3       ;flush TLB
407
           mov [ebx], eax
399
	   mov cr3, eax
408
           ret
-
 
Line 409... Line 400...
409
endp
400
	   ret
410
 
401
 
Line 411... Line 402...
411
align 4
402
align 4