- remove trailing white space, trailing empty lines, C++ comments, etc.
- split cmd_boot.c (separate cmd_bdinfo.c and cmd_load.c)
* Patches by Kenneth Johansson, 25 Jun 2003:
- major rework of command structure
(work done mostly by Michal Cendrowski and Joakim Kristiansen)
215 lines
5.4 KiB
C
215 lines
5.4 KiB
C
/*
|
|
* Copyright 1999 Egbert Eich
|
|
*
|
|
* 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.
|
|
*/
|
|
#ifndef V86_BIOS_H
|
|
#define V86_BIOS_H
|
|
|
|
#if defined (__i386__) || defined (__i486__) || defined (__i586__) || defined (__i686__) || defined (__k6__)
|
|
# ifndef __ia32__
|
|
# define __ia32__
|
|
# endif
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
|
|
#define p_printf(f,a...) do {if (Config.PrintPort) lprintf(f,##a);} \
|
|
while(0)
|
|
#define i_printf(f,a...) do {if (Config.PrintIrq) lprintf(f,##a);} \
|
|
while(0)
|
|
#define P_printf(f,a...) do {if (Config.PrintPci) lprintf(f,##a);} \
|
|
while(0)
|
|
|
|
typedef unsigned char CARD8;
|
|
typedef unsigned short CARD16;
|
|
typedef unsigned int CARD32;
|
|
#if defined (__alpha__) || defined (__ia64__)
|
|
typedef unsigned long memType;
|
|
#else
|
|
typedef unsigned int memType;
|
|
#endif
|
|
|
|
typedef int Bool;
|
|
|
|
#define FALSE 0
|
|
#define TRUE 1
|
|
|
|
struct config {
|
|
Bool PrintPort;
|
|
Bool IoStatistics;
|
|
Bool PrintIrq;
|
|
Bool PrintPci;
|
|
Bool ShowAllDev;
|
|
Bool PrintIp;
|
|
Bool SaveBios;
|
|
Bool Trace;
|
|
Bool ConfigActiveOnly;
|
|
Bool ConfigActiveDevice;
|
|
Bool MapSysBios;
|
|
Bool Resort;
|
|
Bool FixRom;
|
|
Bool NoConsole;
|
|
Bool BootOnly;
|
|
int Verbose;
|
|
};
|
|
|
|
struct pio {
|
|
CARD8 (*inb)(CARD16);
|
|
CARD16 (*inw)(CARD16);
|
|
CARD32 (*inl)(CARD16);
|
|
void (*outb)(CARD16,CARD8);
|
|
void (*outw)(CARD16,CARD16);
|
|
void (*outl)(CARD16,CARD32);
|
|
};
|
|
|
|
struct regs86 {
|
|
long ebx;
|
|
long ecx;
|
|
long edx;
|
|
long esi;
|
|
long edi;
|
|
long ebp;
|
|
long eax;
|
|
long eip;
|
|
long esp;
|
|
unsigned short cs;
|
|
unsigned short ss;
|
|
unsigned short es;
|
|
unsigned short ds;
|
|
unsigned short fs;
|
|
unsigned short gs;
|
|
long eflags;
|
|
};
|
|
|
|
typedef struct {
|
|
CARD32 ax;
|
|
CARD32 bx;
|
|
CARD32 cx;
|
|
CARD32 dx;
|
|
CARD32 cs;
|
|
CARD32 es;
|
|
CARD32 ds;
|
|
CARD32 si;
|
|
CARD32 di;
|
|
} i86biosRegs, *i86biosRegsPtr;
|
|
|
|
typedef struct {
|
|
int fd;
|
|
int vt;
|
|
} console;
|
|
|
|
typedef struct {
|
|
void* address;
|
|
CARD8 orgval;
|
|
} haltpoints;
|
|
|
|
enum dev_type { NONE, ISA, PCI };
|
|
struct device {
|
|
Bool booted;
|
|
enum dev_type type;
|
|
union {
|
|
int none;
|
|
struct pci {
|
|
int bus;
|
|
int dev;
|
|
int func;
|
|
} pci;
|
|
} loc;
|
|
};
|
|
|
|
extern struct device Device;
|
|
|
|
#ifdef __alpha__
|
|
unsigned long _bus_base(void);
|
|
extern void* vram_map;
|
|
extern int sparse_shift;
|
|
#endif
|
|
|
|
extern struct pio P;
|
|
extern struct config Config;
|
|
#define IOPERM_BITS 1024
|
|
extern int ioperm_list[IOPERM_BITS];
|
|
|
|
extern void setup_io(void);
|
|
extern void do_x86(unsigned long bios_start,i86biosRegsPtr regs);
|
|
extern int run_bios_int(int num, struct regs86 *regs);
|
|
extern CARD32 getIntVect(int num);
|
|
CARD32 getIP(void);
|
|
|
|
extern void call_boot(struct device *dev);
|
|
extern void runINT(int num,i86biosRegsPtr Regs);
|
|
extern void add_hlt(unsigned long addr);
|
|
extern void del_hlt(int addr);
|
|
extern void list_hlt();
|
|
|
|
extern int port_rep_inb(CARD16 port, CARD8 *base, int d_f, CARD32 count);
|
|
extern int port_rep_inw(CARD16 port, CARD16 *base, int d_f, CARD32 count);
|
|
extern int port_rep_inl(CARD16 port, CARD32 *base, int d_f, CARD32 count);
|
|
extern int port_rep_outb(CARD16 port, CARD8 *base, int d_f, CARD32 count);
|
|
extern int port_rep_outw(CARD16 port, CARD16 *base, int d_f, CARD32 count);
|
|
extern int port_rep_outl(CARD16 port, CARD32 *base, int d_f, CARD32 count);
|
|
extern CARD8 p_inb(CARD16 port);
|
|
extern CARD16 p_inw(CARD16 port);
|
|
extern CARD32 p_inl(CARD16 port);
|
|
extern void p_outb(CARD16 port, CARD8 val);
|
|
extern void p_outw(CARD16 port, CARD16 val);
|
|
extern void p_outl(CARD16 port, CARD32 val);
|
|
#ifdef __alpha__
|
|
extern CARD8 a_inb(CARD16 port);
|
|
extern CARD16 a_inw(CARD16 port);
|
|
extern void a_outb(CARD16 port, CARD8 val);
|
|
extern void a_outw(CARD16 port, CARD16 val);
|
|
#endif
|
|
#ifdef __alpha__
|
|
CARD8 mem_rb(CARD32 addr);
|
|
CARD16 mem_rw(CARD32 addr);
|
|
CARD32 mem_rl(CARD32 addr);
|
|
void mem_wb(CARD32 addr, CARD8 val);
|
|
void mem_ww(CARD32 addr, CARD16 val);
|
|
void mem_wl(CARD32 addr, CARD32 val);
|
|
#endif
|
|
extern void io_statistics(void);
|
|
extern void clear_stat(void);
|
|
extern int int_handler(int num, struct regs86 *regs);
|
|
|
|
extern console open_console(void);
|
|
extern void close_console(console);
|
|
|
|
extern void dprint(unsigned long start, unsigned long size);
|
|
|
|
extern Bool logging;
|
|
extern Bool nostdout;
|
|
extern char* logfile;
|
|
extern void logon(void* ptr);
|
|
extern void logoff();
|
|
extern void lprintf(const char *f, ...);
|
|
|
|
#define MEM_FILE "/dev/mem"
|
|
#define DEFAULT_V_BIOS 0xc0000
|
|
#ifndef V_BIOS
|
|
#define V_BIOS DEFAULT_V_BIOS
|
|
#endif
|
|
|
|
#ifdef __alpha__
|
|
#define NEED_PCI_IO
|
|
#endif
|
|
|
|
#endif
|