Move pir table offset from ebda to a global variable.
[seabios.git] / src / biosvar.h
index 646bd51180189c23dea0293e11816e1096a1e90e..bac978c28071d1e4c209aa2d9a9c5515fcc97e71 100644 (file)
@@ -255,8 +255,6 @@ struct fdpt_s {
     u8 checksum;
 } PACKED;
 
-struct pir_header;
-
 struct extended_bios_data_area_s {
     u8 size;
     u8 reserved1[0x21];
@@ -279,7 +277,6 @@ struct extended_bios_data_area_s {
     // Physical memory available.
     u32 ram_size;        // Amount of continuous ram under 4Gig
     u64 ram_size_over4G; // Amount of continuous ram >4Gig
-    struct pir_header *pir_loc;
 
     // ATA Driver data
     struct ata_s ata;
@@ -294,14 +291,35 @@ struct extended_bios_data_area_s {
     u8 resume_stack[128] __aligned(8);
 } PACKED;
 
-#define EBDA_SIZE DIV_ROUND_UP(sizeof(struct extended_bios_data_area_s), 1024)
-#define BASE_MEM_IN_K (640 - EBDA_SIZE)
-
 // Accessor functions
 #define GET_EBDA(var) \
-    GET_FARVAR(SEG_EBDA, ((struct extended_bios_data_area_s *)0)->var)
+    GET_FARVAR(GET_BDA(ebda_seg), ((struct extended_bios_data_area_s *)0)->var)
 #define SET_EBDA(var, val) \
-    SET_FARVAR(SEG_EBDA, ((struct extended_bios_data_area_s *)0)->var, (val))
+    SET_FARVAR(GET_BDA(ebda_seg), ((struct extended_bios_data_area_s *)0)->var, (val))
+static inline struct extended_bios_data_area_s *
+get_ebda_ptr()
+{
+    extern void *__force_link_error__get_ebda_ptr_only_in_32bit();
+    if (MODE16)
+        return __force_link_error__get_ebda_ptr_only_in_32bit();
+    return (void*)MAKE_FARPTR(GET_BDA(ebda_seg), 0);
+}
+
+
+/****************************************************************
+ * Global variables
+ ****************************************************************/
+
+#define GET_GLOBAL(var) \
+    GET_VAR(CS, (var))
+#if MODE16
+extern void __force_link_error__set_global_only_in_32bit();
+#define SET_GLOBAL(var, val)                            \
+    __force_link_error__set_global_only_in_32bit()
+#else
+#define SET_GLOBAL(var, val)                    \
+    do { (var) = (val); } while (0)
+#endif
 
 
 /****************************************************************