u8 checksum;
} PACKED;
-struct pir_header;
-
struct extended_bios_data_area_s {
u8 size;
u8 reserved1[0x21];
// 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;
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
/****************************************************************