Import upstream u-boot 1.1.4
[u-boot.git] / board / MAI / bios_emulator / scitech / src / v86bios / v86bios.h
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);
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