Subversion Repositories Kolibri OS

Rev

Rev 2465 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1104 diamond 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
5201 serge 3
;; Copyright (C) KolibriOS team 2009-2014. All rights reserved. ;;
1104 diamond 4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
5201 serge 8
$Revision: 4850 $
9
 
10
 
1104 diamond 11
; Query physical memory map from BIOS.
12
; diamond, 2009
13
 
14
        push    ds
15
; first call to fn E820
16
        mov     eax, 0xE820
17
        xor     ebx, ebx
18
        mov     es, bx
19
        mov     ds, bx
20
        mov     di, 0x9104
21
        mov     [di-4], ebx ; no blocks yet
22
        mov     ecx, 20
23
        mov     edx, 0x534D4150
24
        int     15h
25
        jc      no_E820
26
        cmp     eax, 0x534D4150
27
        jnz     no_E820
28
e820_mem_loop:
2442 Serge 29
;        cmp     byte [di+16], 1 ; ignore non-free areas
30
;        jnz     e820_mem_next
1104 diamond 31
        inc     byte [0x9100]
32
        add     di, 20
33
e820_mem_next:
34
; consequent calls to fn E820
35
        test    ebx, ebx
36
        jz      e820_test_done
37
        cmp     byte [0x9100], 32
38
        jae     e820_test_done
39
        mov     eax, 0xE820
40
        int     15h
41
        jc      e820_test_done
42
        jmp     e820_mem_loop
43
no_E820:
44
; let's hope for mem_test from init.inc
45
e820_test_done:
46
        pop     ds