From d03ef619fc6846c1e9eb354e5f1b76893d071212 Mon Sep 17 00:00:00 2001 From: "Evgeny Grechnikov (Diamond)" Date: Thu, 4 Jun 2009 20:04:51 +0000 Subject: [PATCH] added biosmem.inc referenced in previous revision git-svn-id: svn://kolibrios.org@1104 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/trunk/detect/biosmem.inc | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 kernel/trunk/detect/biosmem.inc diff --git a/kernel/trunk/detect/biosmem.inc b/kernel/trunk/detect/biosmem.inc new file mode 100644 index 0000000000..7b66cd4b66 --- /dev/null +++ b/kernel/trunk/detect/biosmem.inc @@ -0,0 +1,43 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ;; +;; Copyright (C) KolibriOS team 2009. All rights reserved. ;; +;; Distributed under terms of the GNU General Public License ;; +;; ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; Query physical memory map from BIOS. +; diamond, 2009 + + push ds +; first call to fn E820 + mov eax, 0xE820 + xor ebx, ebx + mov es, bx + mov ds, bx + mov di, 0x9104 + mov [di-4], ebx ; no blocks yet + mov ecx, 20 + mov edx, 0x534D4150 + int 15h + jc no_E820 + cmp eax, 0x534D4150 + jnz no_E820 +e820_mem_loop: + cmp byte [di+16], 1 ; ignore non-free areas + jnz e820_mem_next + inc byte [0x9100] + add di, 20 +e820_mem_next: +; consequent calls to fn E820 + test ebx, ebx + jz e820_test_done + cmp byte [0x9100], 32 + jae e820_test_done + mov eax, 0xE820 + int 15h + jc e820_test_done + jmp e820_mem_loop +no_E820: +; let's hope for mem_test from init.inc +e820_test_done: + pop ds