📄 biosemui.h
字号:
/****************************************************************************** BIOS emulator and interface* to Realmode X86 Emulator Library** Copyright (C) 2007 Freescale Semiconductor, Inc. All rights reserved.* Jason Jin <Jason.jin@freescale.com>** Copyright (C) 1996-1999 SciTech Software, Inc.** ========================================================================** Permission to use, copy, modify, distribute, and sell this software and* its documentation for any purpose is hereby granted without fee,* provided that the above copyright notice appear in all copies and that* both that copyright notice and this permission notice appear in* supporting documentation, and that the name of the authors not be used* in advertising or publicity pertaining to distribution of the software* without specific, written prior permission. The authors makes no* representations about the suitability of this software for any purpose.* It is provided "as is" without express or implied warranty.** THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO* EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR* PERFORMANCE OF THIS SOFTWARE.** ========================================================================** Language: ANSI C* Environment: Any* Developer: Kendall Bennett** Description: Internal header file for the BIOS emulator library.** Jason ported this file to u-boot, Added some architecture* related Macro.*****************************************************************************/#ifndef __BIOSEMUI_H#define __BIOSEMUI_H#include "biosemu.h"#include <asm/io.h>/*---------------------- Macros and type definitions ----------------------*/#ifdef DEBUG#define DB(x) x#else#define DB(x) do{}while(0);#endif#define BIOS_SEG 0xfff0extern X86EMU_sysEnv _X86EMU_env;#define M _X86EMU_env/* Macros to read and write values to x86 emulator memory. Memory is always * considered to be little endian, so we use macros to do endian swapping * where necessary. */#ifdef __BIG_ENDIAN__#define readb_le(base) *((u8*)(base))#define readw_le(base) ((u16)readb_le(base) | ((u16)readb_le((base) + 1) << 8))#define readl_le(base) ((u32)readb_le((base) + 0) | ((u32)readb_le((base) + 1) << 8) | \ ((u32)readb_le((base) + 2) << 16) | ((u32)readb_le((base) + 3) << 24))#define writeb_le(base, v) *((u8*)(base)) = (v)#define writew_le(base, v) writeb_le(base + 0, (v >> 0) & 0xff), \ writeb_le(base + 1, (v >> 8) & 0xff)#define writel_le(base, v) writeb_le(base + 0, (v >> 0) & 0xff), \ writeb_le(base + 1, (v >> 8) & 0xff), \ writeb_le(base + 2, (v >> 16) & 0xff), \ writeb_le(base + 3, (v >> 24) & 0xff)#else#define readb_le(base) *((u8*)(base))#define readw_le(base) *((u16*)(base))#define readl_le(base) *((u32*)(base))#define writeb_le(base, v) *((u8*)(base)) = (v)#define writew_le(base, v) *((u16*)(base)) = (v)#define writel_le(base, v) *((u32*)(base)) = (v)#endif/****************************************************************************REMARKS:Function codes passed to the emulated I/O port functions to determine thetype of operation to perform.****************************************************************************/typedef enum { REG_READ_BYTE = 0, REG_READ_WORD = 1, REG_READ_DWORD = 2, REG_WRITE_BYTE = 3, REG_WRITE_WORD = 4, REG_WRITE_DWORD = 5} RegisterFlags;/****************************************************************************REMARKS:Function codes passed to the emulated I/O port functions to determine thetype of operation to perform.****************************************************************************/typedef enum { PORT_BYTE = 1, PORT_WORD = 2, PORT_DWORD = 3,} PortInfoFlags;/****************************************************************************REMARKS:Data structure used to describe the details for the BIOS emulator systemenvironment as used by the X86 emulator library.HEADER:biosemu.hMEMBERS:type - Type of port access (1 = byte, 2 = word, 3 = dword)defVal - Default power on valuefinalVal - Final value****************************************************************************/typedef struct { u8 type; u32 defVal; u32 finalVal;} BE_portInfo;#define PM_inpb(port) inb(port+VIDEO_IO_OFFSET)#define PM_inpw(port) inw(port+VIDEO_IO_OFFSET)#define PM_inpd(port) inl(port+VIDEO_IO_OFFSET)#define PM_outpb(port,val) outb(val,port+VIDEO_IO_OFFSET)#define PM_outpw(port,val) outw(val,port+VIDEO_IO_OFFSET)#define PM_outpd(port,val) outl(val,port+VIDEO_IO_OFFSET)#define LOG_inpb(port) PM_inpb(port)#define LOG_inpw(port) PM_inpw(port)#define LOG_inpd(port) PM_inpd(port)#define LOG_outpb(port,val) PM_outpb(port,val)#define LOG_outpw(port,val) PM_outpw(port,val)#define LOG_outpd(port,val) PM_outpd(port,val)/*-------------------------- Function Prototypes --------------------------*//* bios.c */void _BE_bios_init(u32 * intrTab);void _BE_setup_funcs(void);/* besys.c */#define DEBUG_IO() (M.x86.debug & DEBUG_IO_TRACE_F)u8 X86API BE_rdb(u32 addr);u16 X86API BE_rdw(u32 addr);u32 X86API BE_rdl(u32 addr);void X86API BE_wrb(u32 addr, u8 val);void X86API BE_wrw(u32 addr, u16 val);void X86API BE_wrl(u32 addr, u32 val);u8 X86API BE_inb(X86EMU_pioAddr port);u16 X86API BE_inw(X86EMU_pioAddr port);u32 X86API BE_inl(X86EMU_pioAddr port);void X86API BE_outb(X86EMU_pioAddr port, u8 val);void X86API BE_outw(X86EMU_pioAddr port, u16 val);void X86API BE_outl(X86EMU_pioAddr port, u32 val);#endif/* __BIOSEMUI_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -