summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mainboard/via/vt8454c/Options.lb10
-rw-r--r--src/mainboard/via/vt8454c/mainboard.c15
-rw-r--r--src/northbridge/via/cx700/northbridge.c12
3 files changed, 37 insertions, 0 deletions
diff --git a/src/mainboard/via/vt8454c/Options.lb b/src/mainboard/via/vt8454c/Options.lb
index 8efc519ce5..a8dfd0b6a6 100644
--- a/src/mainboard/via/vt8454c/Options.lb
+++ b/src/mainboard/via/vt8454c/Options.lb
@@ -25,6 +25,9 @@ uses IRQ_SLOT_COUNT
uses HAVE_ACPI_TABLES
uses HAVE_OPTION_TABLE
uses USE_OPTION_TABLE
+uses HAVE_LOW_TABLES
+uses HAVE_HIGH_TABLES
+uses HAVE_MAINBOARD_RESOURCES
uses USE_FALLBACK_IMAGE
uses HAVE_FALLBACK_BOOT
@@ -139,6 +142,13 @@ default HAVE_ACPI_TABLES=1
##
default HAVE_OPTION_TABLE=1
+##
+## Build code to fill in tables both in low and high memory
+##
+default HAVE_LOW_TABLES=1
+default HAVE_HIGH_TABLES=1
+default HAVE_MAINBOARD_RESOURCES=1
+
##
## Build code to setup a generic IOAPIC
diff --git a/src/mainboard/via/vt8454c/mainboard.c b/src/mainboard/via/vt8454c/mainboard.c
index e931ccdafb..359fa30c4c 100644
--- a/src/mainboard/via/vt8454c/mainboard.c
+++ b/src/mainboard/via/vt8454c/mainboard.c
@@ -20,8 +20,23 @@
*/
#include <device/device.h>
+#include <boot/tables.h>
+#include <console/console.h>
#include "chip.h"
+/* in arch/i386/boot/tables.c */
+extern uint64_t high_tables_base, high_tables_size;
+
+int add_mainboard_resources(struct lb_memory *mem)
+{
+#if HAVE_HIGH_TABLES == 1
+ printk_debug("Adding high table area\n");
+ lb_add_memory_range(mem, LB_MEM_TABLE,
+ high_tables_base, high_tables_size);
+#endif
+ return 0;
+}
+
struct chip_operations mainboard_ops = {
CHIP_NAME("VIA VT8454c Mainboard")
};
diff --git a/src/northbridge/via/cx700/northbridge.c b/src/northbridge/via/cx700/northbridge.c
index dc0c667d10..11c98da2ca 100644
--- a/src/northbridge/via/cx700/northbridge.c
+++ b/src/northbridge/via/cx700/northbridge.c
@@ -87,6 +87,12 @@ static u32 find_pci_tolm(struct bus *bus)
return tolm;
}
+#if HAVE_HIGH_TABLES==1
+/* maximum size of high tables in KB */
+#define HIGH_TABLES_SIZE 64
+extern uint64_t high_tables_base, high_tables_size;
+#endif
+
static void pci_domain_set_resources(device_t dev)
{
device_t mc_dev;
@@ -117,6 +123,12 @@ static void pci_domain_set_resources(device_t dev)
else
tomk = (((rambits << 6) - (4 << reg) - 1) * 1024);
+#if HAVE_HIGH_TABLES == 1
+ high_tables_base = (tomk - HIGH_TABLES_SIZE) * 1024;
+ high_tables_size = HIGH_TABLES_SIZE* 1024;
+ printk_debug("tom: %lx, high_tables_base: %llx, high_tables_size: %llx\n", tomk*1024, high_tables_base, high_tables_size);
+#endif
+
/* Compute the top of Low memory */
tolmk = pci_tolm >> 10;
if (tolmk >= tomk) {