Auto detect EBDA_SIZE from size of data structure.
authorKevin O'Connor <kevin@koconnor.net>
Sun, 18 May 2008 04:03:32 +0000 (00:03 -0400)
committerKevin O'Connor <kevin@koconnor.net>
Sun, 18 May 2008 04:03:32 +0000 (00:03 -0400)
src/biosvar.h
src/types.h

index 0c68a2e0af3ad1ea598fb06e5babd2db13a494e6..d2d7b9fdbde86ffab9894542c9e36f8fcc440c0b 100644 (file)
@@ -337,7 +337,7 @@ extern struct bios_config_table_s BIOS_CONFIG_TABLE;
 #define SEG_EBDA     0x9fc0
 #define SEG_BDA      0x0000
 
-#define EBDA_SIZE          1              // In KiB
-#define BASE_MEM_IN_K   (640 - EBDA_SIZE)
+#define EBDA_SIZE DIV_ROUND_UP(sizeof(struct extended_bios_data_area_s), 1024)
+#define BASE_MEM_IN_K (640 - EBDA_SIZE)
 
 #endif // __BIOSVAR_H
index d356451c182a635dd8b89a3f333a6f66f056a56b..0f25df8791a689723a7493d03531cbce1957ba11 100644 (file)
@@ -35,6 +35,7 @@ union u64_u32_u {
 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
 #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
+#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
 
 #define NULL ((void *)0)