[SeaBIOS] [PATCH] add 40-48 bit RAM range to seabios
Andrea Arcangeli
aarcange at redhat.com
Wed Sep 15 19:15:28 CEST 2010
Subject: add 40-48 bit RAM range to seabios
From: Andrea Arcangeli <aarcange at redhat.com>
Needed to show >1TB RAM to guests.
This uses a new cmos port at 0x5e that shall read zero to be backwards
compatible.
Signed-off-by: Andrea Arcangeli <aarcange at redhat.com>
---
diff --git a/src/cmos.h b/src/cmos.h
index e4b6462..e810534 100644
--- a/src/cmos.h
+++ b/src/cmos.h
@@ -36,9 +36,10 @@
#define CMOS_BIOS_BOOTFLAG1 0x38
#define CMOS_BIOS_DISKTRANSFLAG 0x39
#define CMOS_BIOS_BOOTFLAG2 0x3d
-#define CMOS_MEM_HIGHMEM_LOW 0x5b
-#define CMOS_MEM_HIGHMEM_MID 0x5c
-#define CMOS_MEM_HIGHMEM_HIGH 0x5d
+#define CMOS_MEM_HIGHMEM_16 0x5b
+#define CMOS_MEM_HIGHMEM_24 0x5c
+#define CMOS_MEM_HIGHMEM_32 0x5d
+#define CMOS_MEM_HIGHMEM_40 0x5e
#define CMOS_BIOS_SMP_COUNT 0x5f
// CMOS_FLOPPY_DRIVE_TYPE bitdefs
diff --git a/src/post.c b/src/post.c
index 5d0e2cb..3628ff5 100644
--- a/src/post.c
+++ b/src/post.c
@@ -106,9 +106,10 @@ ram_probe(void)
add_e820(0, rs, E820_RAM);
// Check for memory over 4Gig
- u64 high = ((inb_cmos(CMOS_MEM_HIGHMEM_LOW) << 16)
- | ((u32)inb_cmos(CMOS_MEM_HIGHMEM_MID) << 24)
- | ((u64)inb_cmos(CMOS_MEM_HIGHMEM_HIGH) << 32));
+ u64 high = ((inb_cmos(CMOS_MEM_HIGHMEM_16) << 16)
+ | ((u32)inb_cmos(CMOS_MEM_HIGHMEM_24) << 24)
+ | ((u64)inb_cmos(CMOS_MEM_HIGHMEM_32) << 32)
+ | ((u64)inb_cmos(CMOS_MEM_HIGHMEM_40) << 40));
RamSizeOver4G = high;
add_e820(0x100000000ull, high, E820_RAM);
More information about the SeaBIOS
mailing list