X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fbiosvar.h;h=b6f7174c59dd7b3ffd739c1ff85f45cd172ce91c;hb=refs%2Fheads%2Fcoreboot;hp=c67503cd5ef4a4e34b8812e3950fd832f8c28e45;hpb=d7e998fdd0ea1cacbc83e9add182c49917bf35e6;p=seabios.git diff --git a/src/biosvar.h b/src/biosvar.h index c67503c..b6f7174 100644 --- a/src/biosvar.h +++ b/src/biosvar.h @@ -1,6 +1,6 @@ // Variable layouts of bios. // -// Copyright (C) 2008,2009 Kevin O'Connor +// Copyright (C) 2008-2010 Kevin O'Connor // // This file may be distributed under the terms of the GNU LGPLv3 license. #ifndef __BIOSVAR_H @@ -25,6 +25,12 @@ struct rmode_IVT { #define SET_IVT(vector, segoff) \ SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff) +#define FUNC16(func) ({ \ + ASSERT32FLAT(); \ + extern void func (void); \ + SEGOFF(SEG_BIOS, (u32)func - BUILD_BIOS_ADDR); \ + }) + /**************************************************************** * Bios Data Area (BDA) @@ -97,7 +103,7 @@ struct bios_data_area_s { u8 floppy_media_state[4]; u8 floppy_track[2]; u8 kbd_flag2; - u8 kbd_flag3; + u8 kbd_led; struct segoff_s user_wait_complete_flag; u32 user_wait_timeout; // 40:A0 @@ -106,7 +112,8 @@ struct bios_data_area_s { struct segoff_s video_savetable; u8 other_ac[4]; // 40:B0 - u8 other_b0[10]; + u8 other_b0[9]; + u8 vbe_flag; u16 vbe_mode; } PACKED; @@ -123,33 +130,6 @@ struct bios_data_area_s { #define FMS_DOUBLE_STEPPING (1<<5) #define FMS_DATA_RATE_MASK (0xc0) -// Bit definitions for kbd_flag[0123] -#define KF0_RSHIFT (1<<0) -#define KF0_LSHIFT (1<<1) -#define KF0_CTRLACTIVE (1<<2) -#define KF0_ALTACTIVE (1<<3) -#define KF0_SCROLLACTIVE (1<<4) -#define KF0_NUMACTIVE (1<<5) -#define KF0_CAPSACTIVE (1<<6) - -#define KF1_LCTRL (1<<0) -#define KF1_LALT (1<<1) -#define KF1_PAUSEACTIVE (1<<3) -#define KF1_SCROLL (1<<4) -#define KF1_NUM (1<<5) -#define KF1_CAPS (1<<6) - -#define KF2_LAST_E1 (1<<0) -#define KF2_LAST_E0 (1<<1) -#define KF2_RCTRL (1<<2) -#define KF2_RALT (1<<3) -#define KF2_101KBD (1<<4) - -#define KF3_SCROLL_LED (1<<0) -#define KF3_NUM_LED (1<<1) -#define KF3_CAPS_LED (1<<2) -#define KF3_CMD_PENDING (1<<6) - // Accessor functions #define GET_BDA(var) \ GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var) @@ -187,7 +167,7 @@ struct dpte_s { // ElTorito Device Emulation data struct cdemu_s { - struct drive_s *emulated_drive; + struct drive_s *emulated_drive_gf; u32 ilba; u16 buffer_segment; u16 load_segment; @@ -243,6 +223,7 @@ struct extended_bios_data_area_s { u8 other2[0xC4]; // 0x121 - Begin custom storage. + u8 ps2ctr; struct usbkeyinfo usbkey_last; int RTCusers; @@ -258,10 +239,12 @@ struct extended_bios_data_area_s { u16 boot_sequence; + /* TSC emulation timekeepers */ + u64 tsc_8254; + int last_tsc_8254; + // Stack space available for code that needs it. u8 extra_stack[512] __aligned(8); - - u8 cdemu_buf[2048 * !!CONFIG_CDROM_EMU]; } PACKED; // The initial size and location of EBDA @@ -329,12 +312,12 @@ static inline u16 get_global_seg(void) { (var) = (val); \ } while (0) #if MODESEGMENT -#define STORE_GLOBAL_PTR(var) (var) -#define RETRIEVE_GLOBAL_PTR(var) (var) +#define GLOBALFLAT2GLOBAL(var) ((typeof(var))((void*)(var) - BUILD_BIOS_ADDR)) #else -#define STORE_GLOBAL_PTR(var) ((typeof(var))((void*)var - BUILD_BIOS_ADDR)) -#define RETRIEVE_GLOBAL_PTR(var) ((typeof(var))((void*)var + BUILD_BIOS_ADDR)) +#define GLOBALFLAT2GLOBAL(var) (var) #endif +// Access a "flat" pointer known to point to the f-segment. +#define GET_GLOBALFLAT(var) GET_GLOBAL(*GLOBALFLAT2GLOBAL(&(var))) /****************************************************************