]>
Commit | Line | Data |
---|---|---|
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 | ||
40 | typedef unsigned char CARD8; | |
41 | typedef unsigned short CARD16; | |
42 | typedef unsigned int CARD32; | |
43 | #if defined (__alpha__) || defined (__ia64__) | |
44 | typedef unsigned long memType; | |
45 | #else | |
46 | typedef unsigned int memType; | |
47 | #endif | |
48 | ||
49 | typedef int Bool; | |
50 | ||
51 | #define FALSE 0 | |
52 | #define TRUE 1 | |
53 | ||
54 | struct 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 | ||
73 | struct 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 | ||
82 | struct 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 | ||
101 | typedef 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 | ||
113 | typedef struct { | |
114 | int fd; | |
115 | int vt; | |
116 | } console; | |
117 | ||
118 | typedef struct { | |
119 | void* address; | |
120 | CARD8 orgval; | |
121 | } haltpoints; | |
122 | ||
123 | enum dev_type { NONE, ISA, PCI }; | |
124 | struct 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 | ||
137 | extern struct device Device; | |
138 | ||
139 | #ifdef __alpha__ | |
140 | unsigned long _bus_base(void); | |
141 | extern void* vram_map; | |
142 | extern int sparse_shift; | |
143 | #endif | |
144 | ||
145 | extern struct pio P; | |
146 | extern struct config Config; | |
147 | #define IOPERM_BITS 1024 | |
148 | extern int ioperm_list[IOPERM_BITS]; | |
149 | ||
150 | extern void setup_io(void); | |
151 | extern void do_x86(unsigned long bios_start,i86biosRegsPtr regs, int cpuemu); | |
152 | extern int run_bios_int(int num, struct regs86 *regs); | |
153 | extern CARD32 getIntVect(int num); | |
154 | CARD32 getIP(void); | |
155 | ||
156 | extern void call_boot(struct device *dev); | |
157 | extern void runINT(int num,i86biosRegsPtr Regs); | |
158 | extern void add_hlt(unsigned long addr); | |
159 | extern void del_hlt(int addr); | |
160 | extern void list_hlt(); | |
161 | ||
162 | extern int port_rep_inb(CARD16 port, CARD8 *base, int d_f, CARD32 count); | |
163 | extern int port_rep_inw(CARD16 port, CARD16 *base, int d_f, CARD32 count); | |
164 | extern int port_rep_inl(CARD16 port, CARD32 *base, int d_f, CARD32 count); | |
165 | extern int port_rep_outb(CARD16 port, CARD8 *base, int d_f, CARD32 count); | |
166 | extern int port_rep_outw(CARD16 port, CARD16 *base, int d_f, CARD32 count); | |
167 | extern int port_rep_outl(CARD16 port, CARD32 *base, int d_f, CARD32 count); | |
168 | extern CARD8 p_inb(CARD16 port); | |
169 | extern CARD16 p_inw(CARD16 port); | |
170 | extern CARD32 p_inl(CARD16 port); | |
171 | extern void p_outb(CARD16 port, CARD8 val); | |
172 | extern void p_outw(CARD16 port, CARD16 val); | |
173 | extern void p_outl(CARD16 port, CARD32 val); | |
174 | #ifdef __alpha__ | |
175 | extern CARD8 a_inb(CARD16 port); | |
176 | extern CARD16 a_inw(CARD16 port); | |
177 | extern void a_outb(CARD16 port, CARD8 val); | |
178 | extern void a_outw(CARD16 port, CARD16 val); | |
179 | #endif | |
180 | #ifdef __alpha__ | |
181 | CARD8 mem_rb(CARD32 addr); | |
182 | CARD16 mem_rw(CARD32 addr); | |
183 | CARD32 mem_rl(CARD32 addr); | |
184 | void mem_wb(CARD32 addr, CARD8 val); | |
185 | void mem_ww(CARD32 addr, CARD16 val); | |
186 | void mem_wl(CARD32 addr, CARD32 val); | |
187 | #endif | |
188 | extern void io_statistics(void); | |
189 | extern void clear_stat(void); | |
190 | extern int int_handler(int num, struct regs86 *regs); | |
191 | ||
192 | extern console open_console(void); | |
193 | extern void close_console(console); | |
194 | ||
195 | extern void dprint(unsigned long start, unsigned long size); | |
196 | ||
197 | extern Bool logging; | |
198 | extern Bool nostdout; | |
199 | extern char* logfile; | |
200 | extern void logon(void* ptr); | |
201 | extern void logoff(); | |
202 | extern 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 |