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