Hi,
the attached patch makes the i440bx emulation read the cmos registers of
the bochs/qemu emulation that carry RAM size information instead of
assuming 128MB.
Regards,
Patrick
Signed-Off-By: Patrick Georgi <[EMAIL PROTECTED]>
Index: northbridge/intel/i440bxemulation/domain
===================================================================
--- northbridge/intel/i440bxemulation/domain (revision 689)
+++ northbridge/intel/i440bxemulation/domain (working copy)
@@ -19,6 +19,5 @@
*/
{
- ramsize = "128";
device_operations = "i440bx_domain";
};
Index: northbridge/intel/i440bxemulation/i440bx.c
===================================================================
--- northbridge/intel/i440bxemulation/i440bx.c (revision 689)
+++ northbridge/intel/i440bxemulation/i440bx.c (working copy)
@@ -37,25 +37,40 @@
* such modified SOFTWARE should be clearly marked, so as not to confuse
* it with the version available from LANL.
*/
+ /* dynamic qemu ram size detection
+ Copyright 2008 Patrick Georgi <[EMAIL PROTECTED]>
+ Licensed under the terms of the GNU General Public License v2 or later
+ */
#include <types.h>
#include <console.h>
#include <device/device.h>
#include <device/pci.h>
#include <string.h>
+#include <io.h>
#include "i440bx.h"
#include "statictree.h"
/* Here are the ops for 440BX as a PCI domain. */
+static int inb_cmos(int port)
+{
+ outb(port, 0x70);
+ return inb(0x71);
+}
+
static void pci_domain_set_resources(struct device *dev)
{
struct device *mc_dev;
u32 tolmk; /* Top of low mem, Kbytes. */
int idx;
- struct northbridge_intel_i440bxemulation_domain_config
*device_configuration =
- dev->device_configuration;
- tolmk = device_configuration->ramsize * 1024;
+ /* read large mem memory descriptor
+ for <16 MB read the more detailed small mem descriptor
+ all values in kbytes */
+ tolmk = ((inb_cmos(0x35)<<8) |inb_cmos(0x34)) * 64;
+ if (tolmk <= 16 * 1024) {
+ tolmk = (inb_cmos(0x31)<<8) |inb_cmos(0x30);
+ }
mc_dev = dev->link[0].children;
if (mc_dev) {
idx = 10;
--
coreboot mailing list
[email protected]
http://www.coreboot.org/mailman/listinfo/coreboot