aboutsummaryrefslogtreecommitdiff
path: root/src/biosvar.h
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2013-09-15 00:14:28 -0400
committerKevin O'Connor <kevin@koconnor.net>2013-09-18 20:48:34 -0400
commit392d2aacb6065319be3d31fdb37fef393e0149a9 (patch)
tree9fd7ca3ae26cc49262bb59598f11711a5c63bbd0 /src/biosvar.h
parent135f3f676de1416f0cd0fa7f0c886cf1b72222cb (diff)
downloadseabios-hppa-392d2aacb6065319be3d31fdb37fef393e0149a9.zip
seabios-hppa-392d2aacb6065319be3d31fdb37fef393e0149a9.tar.gz
seabios-hppa-392d2aacb6065319be3d31fdb37fef393e0149a9.tar.bz2
Move standard bda type info from biosvar.h to std/bda.h.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/biosvar.h')
-rw-r--r--src/biosvar.h161
1 files changed, 4 insertions, 157 deletions
diff --git a/src/biosvar.h b/src/biosvar.h
index e49a10a..051cd1e 100644
--- a/src/biosvar.h
+++ b/src/biosvar.h
@@ -1,24 +1,20 @@
-// Variable layouts of bios.
+// Memory access to BIOS variables.
//
-// Copyright (C) 2008-2010 Kevin O'Connor <kevin@koconnor.net>
+// Copyright (C) 2008-2013 Kevin O'Connor <kevin@koconnor.net>
//
// This file may be distributed under the terms of the GNU LGPLv3 license.
#ifndef __BIOSVAR_H
#define __BIOSVAR_H
-#include "types.h" // u8
-#include "farptr.h" // GET_FARVAR
#include "config.h" // SEG_BDA
+#include "farptr.h" // GET_FARVAR
+#include "std/bda.h" // struct bios_data_area_s
/****************************************************************
* Interupt vector table
****************************************************************/
-struct rmode_IVT {
- struct segoff_s ivec[256];
-};
-
#define GET_IVT(vector) \
GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
#define SET_IVT(vector, segoff) \
@@ -35,106 +31,6 @@ struct rmode_IVT {
* Bios Data Area (BDA)
****************************************************************/
-struct bios_data_area_s {
- // 40:00
- u16 port_com[4];
- u16 port_lpt[3];
- u16 ebda_seg;
- // 40:10
- u16 equipment_list_flags;
- u8 pad1;
- u16 mem_size_kb;
- u8 pad2;
- u8 ps2_ctrl_flag;
- u8 kbd_flag0;
- u8 kbd_flag1;
- u8 alt_keypad;
- u16 kbd_buf_head;
- u16 kbd_buf_tail;
- // 40:1e
- u8 kbd_buf[32];
- u8 floppy_recalibration_status;
- u8 floppy_motor_status;
- // 40:40
- u8 floppy_motor_counter;
- u8 floppy_last_status;
- u8 floppy_return_status[7];
- u8 video_mode;
- u16 video_cols;
- u16 video_pagesize;
- u16 video_pagestart;
- // 40:50
- u16 cursor_pos[8];
- // 40:60
- u16 cursor_type;
- u8 video_page;
- u16 crtc_address;
- u8 video_msr;
- u8 video_pal;
- struct segoff_s jump;
- u8 other_6b;
- u32 timer_counter;
- // 40:70
- u8 timer_rollover;
- u8 break_flag;
- u16 soft_reset_flag;
- u8 disk_last_status;
- u8 hdcount;
- u8 disk_control_byte;
- u8 port_disk;
- u8 lpt_timeout[4];
- u8 com_timeout[4];
- // 40:80
- u16 kbd_buf_start_offset;
- u16 kbd_buf_end_offset;
- u8 video_rows;
- u16 char_height;
- u8 video_ctl;
- u8 video_switches;
- u8 modeset_ctl;
- u8 dcc_index;
- u8 floppy_last_data_rate;
- u8 disk_status_controller;
- u8 disk_error_controller;
- u8 disk_interrupt_flag;
- u8 floppy_harddisk_info;
- // 40:90
- u8 floppy_media_state[4];
- u8 floppy_track[2];
- u8 kbd_flag2;
- u8 kbd_led;
- struct segoff_s user_wait_complete_flag;
- u32 user_wait_timeout;
- // 40:A0
- u8 rtc_wait_flag;
- u8 other_a1[7];
- struct segoff_s video_savetable;
- u8 other_ac[4];
- // 40:B0
- u8 other_b0[9];
- u8 vbe_flag;
- u16 vbe_mode;
- u8 other_bc[4];
- // 40:C0
- u8 other_c0[4*16];
-} PACKED;
-
-// BDA floppy_recalibration_status bitdefs
-#define FRS_IRQ (1<<7)
-
-// BDA rtc_wait_flag bitdefs
-#define RWS_WAIT_PENDING (1<<0)
-#define RWS_WAIT_ELAPSED (1<<7)
-
-// BDA floppy_media_state bitdefs
-#define FMS_DRIVE_STATE_MASK (0x07)
-#define FMS_MEDIA_DRIVE_ESTABLISHED (1<<4)
-#define FMS_DOUBLE_STEPPING (1<<5)
-#define FMS_DATA_RATE_MASK (0xc0)
-
-// Limit of BDA timer_counter field
-#define TICKS_PER_DAY 1573040
-
// Accessor functions
#define GET_BDA(var) \
GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
@@ -152,40 +48,6 @@ static inline void set_equipment_flags(u16 clear, u16 set) {
* Extended Bios Data Area (EBDA)
****************************************************************/
-struct fdpt_s {
- u16 cylinders;
- u8 heads;
- u8 a0h_signature;
- u8 phys_sectors;
- u16 precompensation;
- u8 reserved;
- u8 drive_control_byte;
- u16 phys_cylinders;
- u8 phys_heads;
- u16 landing_zone;
- u8 sectors;
- u8 checksum;
-} PACKED;
-
-struct extended_bios_data_area_s {
- u8 size;
- u8 reserved1[0x21];
- struct segoff_s far_call_pointer;
- u8 mouse_flag1;
- u8 mouse_flag2;
- u8 mouse_data[0x08];
- // 0x30
- u8 other1[0x0d];
-
- // 0x3d
- struct fdpt_s fdpt[2];
-
- // 0x5d
- u8 other2[0xC4];
-
- // 0x121 - Begin custom storage.
-} PACKED;
-
// The initial size and location of EBDA
#define EBDA_SIZE_START \
DIV_ROUND_UP(sizeof(struct extended_bios_data_area_s), 1024)
@@ -269,19 +131,4 @@ extern u8 _zonelow_seg, zonelow_base[];
#define GET_LOWFLAT(var) GET_LOW(*LOWFLAT2LOW(&(var)))
#define SET_LOWFLAT(var, val) SET_LOW(*LOWFLAT2LOW(&(var)), (val))
-
-/****************************************************************
- * Bios Config Table
- ****************************************************************/
-
-struct bios_config_table_s {
- u16 size;
- u8 model;
- u8 submodel;
- u8 biosrev;
- u8 feature1, feature2, feature3, feature4, feature5;
-} PACKED;
-
-extern struct bios_config_table_s BIOS_CONFIG_TABLE __aligned(1);
-
#endif // __BIOSVAR_H