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