1*dbbc9025Stakemura /*	$NetBSD: pbsdboot.h,v 1.7 2000/01/31 12:45:29 takemura Exp $	*/
2db2b0adeStakemura 
3db2b0adeStakemura /*-
4db2b0adeStakemura  * Copyright (c) 1999 Shin Takemura.
5db2b0adeStakemura  * All rights reserved.
6db2b0adeStakemura  *
7db2b0adeStakemura  * This software is part of the PocketBSD.
8db2b0adeStakemura  *
9db2b0adeStakemura  * Redistribution and use in source and binary forms, with or without
10db2b0adeStakemura  * modification, are permitted provided that the following conditions
11db2b0adeStakemura  * are met:
12db2b0adeStakemura  * 1. Redistributions of source code must retain the above copyright
13db2b0adeStakemura  *    notice, this list of conditions and the following disclaimer.
14db2b0adeStakemura  * 2. Redistributions in binary form must reproduce the above copyright
15db2b0adeStakemura  *    notice, this list of conditions and the following disclaimer in the
16db2b0adeStakemura  *    documentation and/or other materials provided with the distribution.
17db2b0adeStakemura  * 3. All advertising materials mentioning features or use of this software
18db2b0adeStakemura  *    must display the following acknowledgement:
19db2b0adeStakemura  *	This product includes software developed by the PocketBSD project
20db2b0adeStakemura  *	and its contributors.
21db2b0adeStakemura  * 4. Neither the name of the project nor the names of its contributors
22db2b0adeStakemura  *    may be used to endorse or promote products derived from this software
23db2b0adeStakemura  *    without specific prior written permission.
24db2b0adeStakemura  *
25db2b0adeStakemura  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26db2b0adeStakemura  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27db2b0adeStakemura  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28db2b0adeStakemura  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29db2b0adeStakemura  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30db2b0adeStakemura  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31db2b0adeStakemura  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32db2b0adeStakemura  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33db2b0adeStakemura  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34db2b0adeStakemura  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35db2b0adeStakemura  * SUCH DAMAGE.
36db2b0adeStakemura  *
37db2b0adeStakemura  */
38db2b0adeStakemura #define STANDALONE_WINDOWS_SIDE
39db2b0adeStakemura #include <stand.h>
40db2b0adeStakemura #include <machine/bootinfo.h>
41db2b0adeStakemura #include <machine/platid.h>
42db2b0adeStakemura 
43db2b0adeStakemura extern TCHAR szAppName[ ];
44db2b0adeStakemura #define whoami szAppName
45db2b0adeStakemura #define PREFNAME TEXT("pbsdboot.ini")
46db2b0adeStakemura #define PATHBUFLEN 200
47db2b0adeStakemura 
48db2b0adeStakemura 
49db2b0adeStakemura /*
50db2b0adeStakemura  *  For some reason, we can't include Windows' header files.
51db2b0adeStakemura  *  So we must declare here.
52db2b0adeStakemura  */
53db2b0adeStakemura double wcstod(const wchar_t *, wchar_t **);
54db2b0adeStakemura long wcstol(const wchar_t *, wchar_t **, int);
55db2b0adeStakemura unsigned long wcstoul(const wchar_t *, wchar_t **, int);
56db2b0adeStakemura BOOL VirtualCopy(LPVOID, LPVOID, DWORD, DWORD);
57db2b0adeStakemura 
58db2b0adeStakemura /*
59db2b0adeStakemura  *  structure declarations
60db2b0adeStakemura  */
61db2b0adeStakemura struct map_s {
62db2b0adeStakemura 	caddr_t entry;
63db2b0adeStakemura 	caddr_t base;
64db2b0adeStakemura 	int pagesize;
65db2b0adeStakemura 	int leafsize;
66db2b0adeStakemura 	int nleaves;
67db2b0adeStakemura 	caddr_t arg0;
68db2b0adeStakemura 	caddr_t arg1;
69db2b0adeStakemura 	caddr_t arg2;
70db2b0adeStakemura 	caddr_t arg3;
71db2b0adeStakemura 	caddr_t *leaf[32];
72db2b0adeStakemura };
73db2b0adeStakemura 
74db2b0adeStakemura struct preference_s {
75db2b0adeStakemura 	int setting_idx;
76db2b0adeStakemura 	int fb_type;
77db2b0adeStakemura 	int fb_width, fb_height, fb_linebytes;
78db2b0adeStakemura 	long fb_addr;
79db2b0adeStakemura 	unsigned long platid_cpu, platid_machine;
80db2b0adeStakemura 	TCHAR setting_name[PATHBUFLEN];
81db2b0adeStakemura 	TCHAR kernel_name[PATHBUFLEN];
82db2b0adeStakemura 	TCHAR options[PATHBUFLEN];
83db2b0adeStakemura 	BOOL check_last_chance;
84db2b0adeStakemura 	BOOL load_debug_info;
85db2b0adeStakemura 	BOOL serial_port;
86*dbbc9025Stakemura 	BOOL reverse_video;
87db2b0adeStakemura };
889759fc21Stakemura 
899759fc21Stakemura /*
909759fc21Stakemura  * Machine dependent information
919759fc21Stakemura  */
929759fc21Stakemura struct system_info {
939759fc21Stakemura 	unsigned int si_dramstart;
949759fc21Stakemura 	unsigned int si_drammaxsize;
959759fc21Stakemura 	DWORD si_pagesize;
969759fc21Stakemura 	unsigned char *si_asmcode;
979759fc21Stakemura 	int si_asmcodelen;
989759fc21Stakemura 	int (*si_boot) __P((caddr_t));
99943a3259Such 	int si_intrvec;
1009759fc21Stakemura };
1019759fc21Stakemura extern struct system_info system_info;
1029759fc21Stakemura 
103db2b0adeStakemura extern struct preference_s pref;
104db2b0adeStakemura extern TCHAR* where_pref_load_from;
105db2b0adeStakemura 
106db2b0adeStakemura /*
107db2b0adeStakemura  *  main.c
108db2b0adeStakemura  */
109db2b0adeStakemura BOOL CheckCancel(int progress);
110db2b0adeStakemura extern HWND hWndMain;
111db2b0adeStakemura 
112db2b0adeStakemura /*
113db2b0adeStakemura  *  layout.c
114db2b0adeStakemura  */
115db2b0adeStakemura int CreateMainWindow(HINSTANCE hInstance, HWND hWnd, LPCTSTR name, int cmdbar_height);
116db2b0adeStakemura 
117db2b0adeStakemura /*
118db2b0adeStakemura  *  vmem.c
119db2b0adeStakemura  */
120db2b0adeStakemura int vmem_exec(caddr_t entry, int argc, char *argv[], struct bootinfo *bi);
121db2b0adeStakemura caddr_t vmem_get(caddr_t phys_addr, int *length);
122db2b0adeStakemura int vmem_init(caddr_t start, caddr_t end);
123db2b0adeStakemura void vmem_dump_map(void);
124db2b0adeStakemura caddr_t vtophysaddr(caddr_t page);
125db2b0adeStakemura void vmem_free(void);
126db2b0adeStakemura caddr_t vmem_alloc(void);
127db2b0adeStakemura 
128db2b0adeStakemura /*
129db2b0adeStakemura  *  elf.c
130db2b0adeStakemura  */
131db2b0adeStakemura int getinfo(int fd, caddr_t *start, caddr_t *end);
132db2b0adeStakemura int loadfile(int fd, caddr_t *entry);
133db2b0adeStakemura 
134db2b0adeStakemura /*
1359759fc21Stakemura  *  mips.c
136db2b0adeStakemura  */
1379759fc21Stakemura int mips_boot(caddr_t map);
138db2b0adeStakemura 
139db2b0adeStakemura /*
140db2b0adeStakemura  *  pbsdboot.c
141db2b0adeStakemura  */
142db2b0adeStakemura int pbsdboot(TCHAR*, int argc, char *argv[], struct bootinfo *bi);
143db2b0adeStakemura 
144db2b0adeStakemura /*
145db2b0adeStakemura  *  print.c
146db2b0adeStakemura  */
147db2b0adeStakemura int debug_printf(LPWSTR lpszFmt, ...);
148db2b0adeStakemura int msg_printf(UINT type, LPWSTR caption, LPWSTR lpszFmt, ...);
149db2b0adeStakemura 
150db2b0adeStakemura #define	MSG_ERROR	(MB_OK | MB_ICONERROR)
151db2b0adeStakemura #define MSG_INFO	(MB_OK | MB_ICONINFORMATION)
152db2b0adeStakemura 
153db2b0adeStakemura /*
154db2b0adeStakemura  *  disptest.c
155db2b0adeStakemura  */
156db2b0adeStakemura void hardware_test(void);
157db2b0adeStakemura 
158db2b0adeStakemura 
159db2b0adeStakemura /*
160db2b0adeStakemura  *  preference.c
161db2b0adeStakemura  */
162db2b0adeStakemura void pref_init(struct preference_s* pref);
163db2b0adeStakemura void pref_dump(struct preference_s* pref);
164db2b0adeStakemura int pref_read(TCHAR* filename, struct preference_s* pref);
165db2b0adeStakemura int pref_load(TCHAR* load_path[], int pathlen);
166db2b0adeStakemura int pref_write(TCHAR* filename, struct preference_s* buf);
1679759fc21Stakemura 
1689759fc21Stakemura 
1699759fc21Stakemura /*
1709759fc21Stakemura  *  systeminfo.c
1719759fc21Stakemura  */
172de467400Stakemura int set_system_info(platid_t* platid);
1739759fc21Stakemura 
1749759fc21Stakemura 
1759759fc21Stakemura /*
1769759fc21Stakemura  *  vr41xx.c
1779759fc21Stakemura  */
1789759fc21Stakemura void vr41xx_init(SYSTEM_INFO *info);
1799759fc21Stakemura 
1809759fc21Stakemura 
1819759fc21Stakemura /*
1829759fc21Stakemura  *  tx39xx.c
1839759fc21Stakemura  */
1849759fc21Stakemura void tx39xx_init(SYSTEM_INFO *info);
185