1*02cdf4d2Sdsl /*	$NetBSD: pbsdboot.h,v 1.12 2009/03/14 14:45:59 dsl 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")
461a710b98Stakemura #define LOGNAME TEXT("pbsdboot.log")
47db2b0adeStakemura #define PATHBUFLEN 200
48db2b0adeStakemura 
49db2b0adeStakemura 
50db2b0adeStakemura /*
51db2b0adeStakemura  *  For some reason, we can't include Windows' header files.
52db2b0adeStakemura  *  So we must declare here.
53db2b0adeStakemura  */
54db2b0adeStakemura double wcstod(const wchar_t *, wchar_t **);
55db2b0adeStakemura long wcstol(const wchar_t *, wchar_t **, int);
56db2b0adeStakemura unsigned long wcstoul(const wchar_t *, wchar_t **, int);
57db2b0adeStakemura BOOL VirtualCopy(LPVOID, LPVOID, DWORD, DWORD);
58db2b0adeStakemura 
59db2b0adeStakemura /*
60db2b0adeStakemura  *  structure declarations
61db2b0adeStakemura  */
62db2b0adeStakemura struct map_s {
6353524e44Schristos 	void *entry;
6453524e44Schristos 	void *base;
65db2b0adeStakemura 	int pagesize;
66db2b0adeStakemura 	int leafsize;
67db2b0adeStakemura 	int nleaves;
6853524e44Schristos 	void *arg0;
6953524e44Schristos 	void *arg1;
7053524e44Schristos 	void *arg2;
7153524e44Schristos 	void *arg3;
7253524e44Schristos 	void **leaf[32];
73db2b0adeStakemura };
74db2b0adeStakemura 
75db2b0adeStakemura struct preference_s {
76db2b0adeStakemura 	int setting_idx;
77db2b0adeStakemura 	int fb_type;
78db2b0adeStakemura 	int fb_width, fb_height, fb_linebytes;
79212b3fa9Stakemura 	int boot_time;
80db2b0adeStakemura 	long fb_addr;
81db2b0adeStakemura 	unsigned long platid_cpu, platid_machine;
82db2b0adeStakemura 	TCHAR setting_name[PATHBUFLEN];
83db2b0adeStakemura 	TCHAR kernel_name[PATHBUFLEN];
84db2b0adeStakemura 	TCHAR options[PATHBUFLEN];
85db2b0adeStakemura 	BOOL check_last_chance;
86db2b0adeStakemura 	BOOL load_debug_info;
87db2b0adeStakemura 	BOOL serial_port;
88dbbc9025Stakemura 	BOOL reverse_video;
89212b3fa9Stakemura 	BOOL autoboot;
90db2b0adeStakemura };
919759fc21Stakemura 
92dae2c19eStakemura struct path_s {
93dae2c19eStakemura 	TCHAR* name;
94dae2c19eStakemura 	LANGID	langid;
95dae2c19eStakemura 	unsigned long flags;
96dae2c19eStakemura #define PATH_SAVE	1
97dae2c19eStakemura };
98dae2c19eStakemura 
999759fc21Stakemura /*
1009759fc21Stakemura  * Machine dependent information
1019759fc21Stakemura  */
1029759fc21Stakemura struct system_info {
1039759fc21Stakemura 	unsigned int si_dramstart;
1049759fc21Stakemura 	unsigned int si_drammaxsize;
1059759fc21Stakemura 	DWORD si_pagesize;
1069759fc21Stakemura 	unsigned char *si_asmcode;
1079759fc21Stakemura 	int si_asmcodelen;
108*02cdf4d2Sdsl 	int (*si_boot)(void *);
109943a3259Such 	int si_intrvec;
1109759fc21Stakemura };
1119759fc21Stakemura extern struct system_info system_info;
1129759fc21Stakemura 
113db2b0adeStakemura extern struct preference_s pref;
114db2b0adeStakemura extern TCHAR* where_pref_load_from;
115db2b0adeStakemura 
116db2b0adeStakemura /*
117db2b0adeStakemura  *  main.c
118db2b0adeStakemura  */
119db2b0adeStakemura BOOL CheckCancel(int progress);
120212b3fa9Stakemura extern HWND hDlgMain;
121db2b0adeStakemura 
122db2b0adeStakemura /*
123db2b0adeStakemura  *  layout.c
124db2b0adeStakemura  */
125db2b0adeStakemura int CreateMainWindow(HINSTANCE hInstance, HWND hWnd, LPCTSTR name, int cmdbar_height);
126db2b0adeStakemura 
127db2b0adeStakemura /*
128db2b0adeStakemura  *  vmem.c
129db2b0adeStakemura  */
13053524e44Schristos int vmem_exec(void *entry, int argc, char *argv[], struct bootinfo *bi);
13153524e44Schristos void *vmem_get(void *phys_addr, int *length);
13253524e44Schristos int vmem_init(void *start, void *end);
133db2b0adeStakemura void vmem_dump_map(void);
13453524e44Schristos void *vtophysaddr(void *page);
135db2b0adeStakemura void vmem_free(void);
13653524e44Schristos void *vmem_alloc(void);
137db2b0adeStakemura 
138db2b0adeStakemura /*
139db2b0adeStakemura  *  elf.c
140db2b0adeStakemura  */
14153524e44Schristos int getinfo(int fd, void **start, void **end);
14253524e44Schristos int loadfile(int fd, void **entry);
143db2b0adeStakemura 
144db2b0adeStakemura /*
1459759fc21Stakemura  *  mips.c
146db2b0adeStakemura  */
14753524e44Schristos int mips_boot(void *map);
148db2b0adeStakemura 
149db2b0adeStakemura /*
150db2b0adeStakemura  *  pbsdboot.c
151db2b0adeStakemura  */
152db2b0adeStakemura int pbsdboot(TCHAR*, int argc, char *argv[], struct bootinfo *bi);
153db2b0adeStakemura 
154db2b0adeStakemura /*
155db2b0adeStakemura  *  print.c
156db2b0adeStakemura  */
157db2b0adeStakemura int debug_printf(LPWSTR lpszFmt, ...);
158db2b0adeStakemura int msg_printf(UINT type, LPWSTR caption, LPWSTR lpszFmt, ...);
1591a710b98Stakemura int stat_printf(LPWSTR lpszFmt, ...);
1601a710b98Stakemura int set_debug_log(TCHAR* path);
1611a710b98Stakemura void close_debug_log(void);
1621a710b98Stakemura 
163db2b0adeStakemura 
164db2b0adeStakemura #define	MSG_ERROR	(MB_OK | MB_ICONERROR)
165db2b0adeStakemura #define MSG_INFO	(MB_OK | MB_ICONINFORMATION)
166db2b0adeStakemura 
167db2b0adeStakemura /*
168db2b0adeStakemura  *  disptest.c
169db2b0adeStakemura  */
170db2b0adeStakemura void hardware_test(void);
171db2b0adeStakemura 
172db2b0adeStakemura 
173db2b0adeStakemura /*
174db2b0adeStakemura  *  preference.c
175db2b0adeStakemura  */
176db2b0adeStakemura void pref_init(struct preference_s* pref);
177db2b0adeStakemura void pref_dump(struct preference_s* pref);
178db2b0adeStakemura int pref_read(TCHAR* filename, struct preference_s* pref);
179dae2c19eStakemura int pref_load(struct path_s load_path[], int pathlen);
180dae2c19eStakemura int pref_save(struct path_s load_path[], int pathlen);
181db2b0adeStakemura int pref_write(TCHAR* filename, struct preference_s* buf);
1829759fc21Stakemura 
1839759fc21Stakemura 
1849759fc21Stakemura /*
1859759fc21Stakemura  *  systeminfo.c
1869759fc21Stakemura  */
187de467400Stakemura int set_system_info(platid_t* platid);
1889759fc21Stakemura 
1899759fc21Stakemura 
1909759fc21Stakemura /*
191dae2c19eStakemura  *  palette.c
192dae2c19eStakemura  */
193dae2c19eStakemura enum palette_status { PAL_ERROR, PAL_NOERROR, PAL_SUCCEEDED };
194dae2c19eStakemura extern enum palette_status palette_succeeded;
195dae2c19eStakemura void palette_init(HWND hWnd);
196dae2c19eStakemura void palette_set(HWND hWnd);
197dae2c19eStakemura void palette_check(HWND hWnd);
198dae2c19eStakemura 
199dae2c19eStakemura /*
2009759fc21Stakemura  *  vr41xx.c
2019759fc21Stakemura  */
2029759fc21Stakemura void vr41xx_init(SYSTEM_INFO *info);
2039759fc21Stakemura 
2049759fc21Stakemura 
2059759fc21Stakemura /*
2069759fc21Stakemura  *  tx39xx.c
2079759fc21Stakemura  */
2089759fc21Stakemura void tx39xx_init(SYSTEM_INFO *info);
209