From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=43328 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OvvZz-0007VF-H4 for qemu-devel@nongnu.org; Wed, 15 Sep 2010 13:15:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OvvZy-00009B-DX for qemu-devel@nongnu.org; Wed, 15 Sep 2010 13:15:31 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38178) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OvvZy-000093-61 for qemu-devel@nongnu.org; Wed, 15 Sep 2010 13:15:30 -0400 Date: Wed, 15 Sep 2010 19:15:28 +0200 From: Andrea Arcangeli Message-ID: <20100915171528.GO5981@random.random> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Subject: [Qemu-devel] [PATCH] add 40-48 bit RAM range to seabios List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, seabios@seabios.org Cc: Anthony Liguori Subject: add 40-48 bit RAM range to seabios From: Andrea Arcangeli 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 --- 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);