Improve smp detection code.
[seabios.git] / src / biosvar.h
index 9668f31617283ac5ae0f8298c10e18492dae8132..3d03cecd64332dce31a7cecad4733be7b2823397 100644 (file)
@@ -7,7 +7,7 @@
 #define __BIOSVAR_H
 
 #include "types.h" // u8
-#include "farptr.h" // SET_SEG
+#include "farptr.h" // GET_FARVAR
 #include "config.h" // CONFIG_*
 
 
@@ -48,11 +48,11 @@ struct bios_data_area_s {
     u8 floppy_motor_counter;
     u8 floppy_last_status;
     u8 floppy_return_status[7];
-    u8 other1[0x7];
+    u8 other_49[0x7];
     // 40:50
-    u8 other2[0x10];
+    u8 other_50[0x10];
     // 40:60
-    u8 other3[0x7];
+    u8 other_60[0x7];
     u32 jump_cs_ip;
     u8 dummy;
     u32 timer_counter;
@@ -69,7 +69,7 @@ struct bios_data_area_s {
     // 40:80
     u16 kbd_buf_start_offset;
     u16 kbd_buf_end_offset;
-    u8 other5[7];
+    u8 other_84[7];
     u8 floppy_last_data_rate;
     u8 disk_status_controller;
     u8 disk_error_controller;
@@ -258,8 +258,13 @@ struct extended_bios_data_area_s {
     // 0x5d
     u8 other2[0xC4];
 
+    u8 ps2ctr;
+
     // Physical memory available.
     u32 ram_size;
+    u16 e820_count;
+    u32 e820_loc;
+    u32 pir_loc;
 
     // ATA Driver data
     struct ata_s   ata;
@@ -271,6 +276,9 @@ struct extended_bios_data_area_s {
     struct ipl_s ipl;
 } 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)
@@ -278,43 +286,6 @@ struct extended_bios_data_area_s {
     SET_FARVAR(SEG_EBDA, ((struct extended_bios_data_area_s *)0)->var, (val))
 
 
-/****************************************************************
- * Registers saved/restored in romlayout.S
- ****************************************************************/
-
-#define UREG(ER, R, RH, RL) union { u32 ER; struct { u16 R; u16 R ## _hi; }; struct { u8 RL; u8 RH; u8 R ## _hilo; u8 R ## _hihi; }; }
-
-// Layout of registers passed in to irq handlers.  Note that this
-// layout corresponds to code in romlayout.S - don't change it here
-// without also updating the assembler code.
-struct bregs {
-    u16 ds;
-    u16 es;
-    UREG(edi, di, di_hi, di_lo);
-    UREG(esi, si, si_hi, si_lo);
-    UREG(ebx, bx, bh, bl);
-    UREG(edx, dx, dh, dl);
-    UREG(ecx, cx, ch, cl);
-    UREG(eax, ax, ah, al);
-    u16 ip;
-    u16 cs;
-    u16 flags;
-} PACKED;
-
-// bregs flags bitdefs
-#define F_ZF (1<<6)
-#define F_CF (1<<0)
-
-static inline void
-set_cf(struct bregs *regs, int cond)
-{
-    if (cond)
-        regs->flags |= F_CF;
-    else
-        regs->flags &= ~F_CF;
-}
-
-
 /****************************************************************
  * Bios Config Table
  ****************************************************************/
@@ -329,16 +300,4 @@ struct bios_config_table_s {
 
 extern struct bios_config_table_s BIOS_CONFIG_TABLE;
 
-
-/****************************************************************
- * Memory layout info
- ****************************************************************/
-
-#define SEG_BIOS     0xf000
-#define SEG_EBDA     0x9fc0
-#define SEG_BDA      0x0000
-
-#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