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