X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fbiosvar.h;h=2b755e3f419c8a8f3ae9b0e5fc772c073a73db27;hb=3bbd11f0053cc813ce11101147cf66d36b376f96;hp=2e43f8b122e4b1558725c4a0e1ded1115b5143d0;hpb=6f702dd6987b22e9bce472fe61910392af17416a;p=seabios.git diff --git a/src/biosvar.h b/src/biosvar.h index 2e43f8b..2b755e3 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 @@ -123,33 +129,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 +166,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; @@ -215,6 +194,17 @@ struct fdpt_s { u8 checksum; } PACKED; +struct usbkeyinfo { + union { + struct { + u8 modifiers; + u8 repeatcount; + u8 keys[6]; + }; + u64 data; + }; +}; + struct extended_bios_data_area_s { u8 size; u8 reserved1[0x21]; @@ -232,6 +222,9 @@ struct extended_bios_data_area_s { u8 other2[0xC4]; // 0x121 - Begin custom storage. + u8 ps2ctr; + struct usbkeyinfo usbkey_last; + int RTCusers; // El Torito Emulation data @@ -247,8 +240,6 @@ struct extended_bios_data_area_s { // 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 @@ -316,10 +307,12 @@ static inline u16 get_global_seg(void) { (var) = (val); \ } while (0) #if MODESEGMENT -#define ADJUST_GLOBAL_PTR(var) (var) +#define GLOBALFLAT2GLOBAL(var) ((typeof(var))((void*)(var) - BUILD_BIOS_ADDR)) #else -#define ADJUST_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))) /****************************************************************