--- qemu/roms/seabios/src/biosvar.h 2018/04/24 17:51:51 1.1.1.2 +++ qemu/roms/seabios/src/biosvar.h 2018/04/24 18:36:34 1.1.1.4 @@ -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) @@ -160,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; @@ -188,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]; @@ -206,6 +223,8 @@ struct extended_bios_data_area_s { // 0x121 - Begin custom storage. u8 ps2ctr; + struct usbkeyinfo usbkey_last; + int RTCusers; // El Torito Emulation data @@ -221,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 @@ -290,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))) /****************************************************************