]> git.ipfire.org Git - ipfire-2.x.git/blame - src/hwinfo/src/int10/v86bios.h
Signierten GPG-Schluessel importiert.
[ipfire-2.x.git] / src / hwinfo / src / int10 / v86bios.h
CommitLineData
93afd047
MT
1/*
2 * Copyright 1999 Egbert Eich
3 *
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation, and that the name of the authors not be used in
9 * advertising or publicity pertaining to distribution of the software without
10 * specific, written prior permission. The authors makes no representations
11 * about the suitability of this software for any purpose. It is provided
12 * "as is" without express or implied warranty.
13 *
14 * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20 * PERFORMANCE OF THIS SOFTWARE.
21 */
22#ifndef V86_BIOS_H
23#define V86_BIOS_H
24
25#if defined (__i386__) || defined (__i486__) || defined (__i586__) || defined (__i686__) || defined (__k6__)
26# ifndef __ia32__
27# define __ia32__
28# endif
29#endif
30
31#include <stdio.h>
32
33#define p_printf(f,a...) do {if (Config.PrintPort) lprintf(f,##a);} \
34 while(0)
35#define i_printf(f,a...) do {if (Config.PrintIrq) lprintf(f,##a);} \
36 while(0)
37#define P_printf(f,a...) do {if (Config.PrintPci) lprintf(f,##a);} \
38 while(0)
39
40typedef unsigned char CARD8;
41typedef unsigned short CARD16;
42typedef unsigned int CARD32;
43#if defined (__alpha__) || defined (__ia64__)
44typedef unsigned long memType;
45#else
46typedef unsigned int memType;
47#endif
48
49typedef int Bool;
50
51#define FALSE 0
52#define TRUE 1
53
54struct config {
55 Bool PrintPort;
56 Bool IoStatistics;
57 Bool PrintIrq;
58 Bool PrintPci;
59 Bool ShowAllDev;
60 Bool PrintIp;
61 Bool SaveBios;
62 Bool Trace;
63 Bool ConfigActiveOnly;
64 Bool ConfigActiveDevice;
65 Bool MapSysBios;
66 Bool Resort;
67 Bool FixRom;
68 Bool NoConsole;
69 Bool BootOnly;
70 int Verbose;
71};
72
73struct pio {
74 CARD8 (*inb)(CARD16);
75 CARD16 (*inw)(CARD16);
76 CARD32 (*inl)(CARD16);
77 void (*outb)(CARD16,CARD8);
78 void (*outw)(CARD16,CARD16);
79 void (*outl)(CARD16,CARD32);
80};
81
82struct regs86 {
83 long ebx;
84 long ecx;
85 long edx;
86 long esi;
87 long edi;
88 long ebp;
89 long eax;
90 long eip;
91 long esp;
92 unsigned short cs;
93 unsigned short ss;
94 unsigned short es;
95 unsigned short ds;
96 unsigned short fs;
97 unsigned short gs;
98 long eflags;
99};
100
101typedef struct {
102 CARD32 ax;
103 CARD32 bx;
104 CARD32 cx;
105 CARD32 dx;
106 CARD32 cs;
107 CARD32 es;
108 CARD32 ds;
109 CARD32 si;
110 CARD32 di;
111} i86biosRegs, *i86biosRegsPtr;
112
113typedef struct {
114 int fd;
115 int vt;
116} console;
117
118typedef struct {
119 void* address;
120 CARD8 orgval;
121} haltpoints;
122
123enum dev_type { NONE, ISA, PCI };
124struct device {
125 Bool booted;
126 enum dev_type type;
127 union {
128 int none;
129 struct pci {
130 int bus;
131 int dev;
132 int func;
133 } pci;
134 } loc;
135};
136
137extern struct device Device;
138
139#ifdef __alpha__
140unsigned long _bus_base(void);
141extern void* vram_map;
142extern int sparse_shift;
143#endif
144
145extern struct pio P;
146extern struct config Config;
147#define IOPERM_BITS 1024
148extern int ioperm_list[IOPERM_BITS];
149
150extern void setup_io(void);
151extern void do_x86(unsigned long bios_start,i86biosRegsPtr regs, int cpuemu);
152extern int run_bios_int(int num, struct regs86 *regs);
153extern CARD32 getIntVect(int num);
154CARD32 getIP(void);
155
156extern void call_boot(struct device *dev);
157extern void runINT(int num,i86biosRegsPtr Regs);
158extern void add_hlt(unsigned long addr);
159extern void del_hlt(int addr);
160extern void list_hlt();
161
162extern int port_rep_inb(CARD16 port, CARD8 *base, int d_f, CARD32 count);
163extern int port_rep_inw(CARD16 port, CARD16 *base, int d_f, CARD32 count);
164extern int port_rep_inl(CARD16 port, CARD32 *base, int d_f, CARD32 count);
165extern int port_rep_outb(CARD16 port, CARD8 *base, int d_f, CARD32 count);
166extern int port_rep_outw(CARD16 port, CARD16 *base, int d_f, CARD32 count);
167extern int port_rep_outl(CARD16 port, CARD32 *base, int d_f, CARD32 count);
168extern CARD8 p_inb(CARD16 port);
169extern CARD16 p_inw(CARD16 port);
170extern CARD32 p_inl(CARD16 port);
171extern void p_outb(CARD16 port, CARD8 val);
172extern void p_outw(CARD16 port, CARD16 val);
173extern void p_outl(CARD16 port, CARD32 val);
174#ifdef __alpha__
175extern CARD8 a_inb(CARD16 port);
176extern CARD16 a_inw(CARD16 port);
177extern void a_outb(CARD16 port, CARD8 val);
178extern void a_outw(CARD16 port, CARD16 val);
179#endif
180#ifdef __alpha__
181CARD8 mem_rb(CARD32 addr);
182CARD16 mem_rw(CARD32 addr);
183CARD32 mem_rl(CARD32 addr);
184void mem_wb(CARD32 addr, CARD8 val);
185void mem_ww(CARD32 addr, CARD16 val);
186void mem_wl(CARD32 addr, CARD32 val);
187#endif
188extern void io_statistics(void);
189extern void clear_stat(void);
190extern int int_handler(int num, struct regs86 *regs);
191
192extern console open_console(void);
193extern void close_console(console);
194
195extern void dprint(unsigned long start, unsigned long size);
196
197extern Bool logging;
198extern Bool nostdout;
199extern char* logfile;
200extern void logon(void* ptr);
201extern void logoff();
202extern void lprintf(const char *f, ...);
203
204#define MEM_FILE "/dev/mem"
205#define DEFAULT_V_BIOS 0xc0000
206#ifndef V_BIOS
207#define V_BIOS DEFAULT_V_BIOS
208#endif
209
210#ifdef __alpha__
211#define NEED_PCI_IO
212#endif
213
214#endif
215