xref: /minix3/sys/arch/i386/stand/lib/libi386.h (revision 84d9c625bfea59e274550651111ae9edfdc40fbd)
1*84d9c625SLionel Sambuc /*	$NetBSD: libi386.h,v 1.40 2013/11/24 17:20:00 jakllsch Exp $	*/
258a2b000SEvgeniy Ivanov 
358a2b000SEvgeniy Ivanov /*
458a2b000SEvgeniy Ivanov  * Copyright (c) 1996
558a2b000SEvgeniy Ivanov  *	Matthias Drochner.  All rights reserved.
658a2b000SEvgeniy Ivanov  *
758a2b000SEvgeniy Ivanov  * Redistribution and use in source and binary forms, with or without
858a2b000SEvgeniy Ivanov  * modification, are permitted provided that the following conditions
958a2b000SEvgeniy Ivanov  * are met:
1058a2b000SEvgeniy Ivanov  * 1. Redistributions of source code must retain the above copyright
1158a2b000SEvgeniy Ivanov  *    notice, this list of conditions and the following disclaimer.
1258a2b000SEvgeniy Ivanov  * 2. Redistributions in binary form must reproduce the above copyright
1358a2b000SEvgeniy Ivanov  *    notice, this list of conditions and the following disclaimer in the
1458a2b000SEvgeniy Ivanov  *    documentation and/or other materials provided with the distribution.
1558a2b000SEvgeniy Ivanov  *
1658a2b000SEvgeniy Ivanov  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1758a2b000SEvgeniy Ivanov  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1858a2b000SEvgeniy Ivanov  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1958a2b000SEvgeniy Ivanov  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
2058a2b000SEvgeniy Ivanov  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2158a2b000SEvgeniy Ivanov  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2258a2b000SEvgeniy Ivanov  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2358a2b000SEvgeniy Ivanov  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2458a2b000SEvgeniy Ivanov  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2558a2b000SEvgeniy Ivanov  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2658a2b000SEvgeniy Ivanov  *
2758a2b000SEvgeniy Ivanov  */
2858a2b000SEvgeniy Ivanov 
2958a2b000SEvgeniy Ivanov typedef unsigned long physaddr_t;
3058a2b000SEvgeniy Ivanov 
3158a2b000SEvgeniy Ivanov /* this is in startup code */
3258a2b000SEvgeniy Ivanov void vpbcopy(const void *, void *, size_t);
3358a2b000SEvgeniy Ivanov void pvbcopy(const void *, void *, size_t);
3458a2b000SEvgeniy Ivanov void pbzero(void *, size_t);
3558a2b000SEvgeniy Ivanov physaddr_t vtophys(void *);
3658a2b000SEvgeniy Ivanov 
3758a2b000SEvgeniy Ivanov ssize_t pread(int, void *, size_t);
38*84d9c625SLionel Sambuc void startprog(physaddr_t, uint32_t, uint32_t *, physaddr_t);
3958a2b000SEvgeniy Ivanov void multiboot(physaddr_t, physaddr_t, physaddr_t);
4058a2b000SEvgeniy Ivanov 
4158a2b000SEvgeniy Ivanov int exec_netbsd(const char *, physaddr_t, int, int, void (*)(void));
4258a2b000SEvgeniy Ivanov int exec_multiboot(const char *, char *);
4358a2b000SEvgeniy Ivanov 
4458a2b000SEvgeniy Ivanov void delay(int);
4558a2b000SEvgeniy Ivanov int getbasemem(void);
4658a2b000SEvgeniy Ivanov int getextmemx(void);
4758a2b000SEvgeniy Ivanov int getextmem1(void);
4858a2b000SEvgeniy Ivanov int biosvideomode(void);
4958a2b000SEvgeniy Ivanov #ifdef CONSERVATIVE_MEMDETECT
5058a2b000SEvgeniy Ivanov #define getextmem() getextmem1()
5158a2b000SEvgeniy Ivanov #else
5258a2b000SEvgeniy Ivanov #define getextmem() getextmemx()
5358a2b000SEvgeniy Ivanov #endif
5458a2b000SEvgeniy Ivanov void printmemlist(void);
5558a2b000SEvgeniy Ivanov void reboot(void);
5658a2b000SEvgeniy Ivanov void gateA20(void);
5758a2b000SEvgeniy Ivanov 
5858a2b000SEvgeniy Ivanov void clear_pc_screen(void);
5958a2b000SEvgeniy Ivanov void initio(int);
6058a2b000SEvgeniy Ivanov #define CONSDEV_PC 0
6158a2b000SEvgeniy Ivanov #define CONSDEV_COM0 1
6258a2b000SEvgeniy Ivanov #define CONSDEV_COM1 2
6358a2b000SEvgeniy Ivanov #define CONSDEV_COM2 3
6458a2b000SEvgeniy Ivanov #define CONSDEV_COM3 4
6558a2b000SEvgeniy Ivanov #define CONSDEV_COM0KBD 5
6658a2b000SEvgeniy Ivanov #define CONSDEV_COM1KBD 6
6758a2b000SEvgeniy Ivanov #define CONSDEV_COM2KBD 7
6858a2b000SEvgeniy Ivanov #define CONSDEV_COM3KBD 8
6958a2b000SEvgeniy Ivanov #define CONSDEV_AUTO (-1)
7058a2b000SEvgeniy Ivanov int iskey(int);
7158a2b000SEvgeniy Ivanov char awaitkey(int, int);
7258a2b000SEvgeniy Ivanov void wait_sec(int);
7358a2b000SEvgeniy Ivanov 
7458a2b000SEvgeniy Ivanov /* this is in "user code"! */
7558a2b000SEvgeniy Ivanov int parsebootfile(const char *, char **, char **, int *, int *, const char **);
7658a2b000SEvgeniy Ivanov 
7758a2b000SEvgeniy Ivanov #ifdef XMS
7858a2b000SEvgeniy Ivanov physaddr_t ppbcopy(physaddr_t, physaddr_t, int);
7958a2b000SEvgeniy Ivanov int checkxms(void);
8058a2b000SEvgeniy Ivanov physaddr_t xmsalloc(int);
8158a2b000SEvgeniy Ivanov #endif
8258a2b000SEvgeniy Ivanov 
8358a2b000SEvgeniy Ivanov /* parseutils.c */
8458a2b000SEvgeniy Ivanov char *gettrailer(char *);
8558a2b000SEvgeniy Ivanov int parseopts(const char *, int *);
8658a2b000SEvgeniy Ivanov int parseboot(char *, char **, int *);
8758a2b000SEvgeniy Ivanov 
8858a2b000SEvgeniy Ivanov /* menuutils.c */
8958a2b000SEvgeniy Ivanov struct bootblk_command {
9058a2b000SEvgeniy Ivanov 	const char *c_name;
9158a2b000SEvgeniy Ivanov 	void (*c_fn)(char *);
9258a2b000SEvgeniy Ivanov };
9358a2b000SEvgeniy Ivanov void bootmenu(void);
9458a2b000SEvgeniy Ivanov void docommand(char *);
95f14fb602SLionel Sambuc #if defined(__minix)
969733fcdbSDavid van Moolenbroek void editline(char *, size_t, char *);
97f14fb602SLionel Sambuc void prompt(int);
98*84d9c625SLionel Sambuc #endif /* defined(__minix) */
9958a2b000SEvgeniy Ivanov 
10058a2b000SEvgeniy Ivanov /* in "user code": */
10158a2b000SEvgeniy Ivanov void command_help(char *);
10258a2b000SEvgeniy Ivanov extern const struct bootblk_command commands[];
10358a2b000SEvgeniy Ivanov 
10458a2b000SEvgeniy Ivanov /* asm bios/dos calls */
10558a2b000SEvgeniy Ivanov __compactcall int biosdisk_extread(int, void *);
10658a2b000SEvgeniy Ivanov int biosdisk_read(int, int, int, int, int, void *);
10758a2b000SEvgeniy Ivanov __compactcall int biosdisk_reset(int);
10858a2b000SEvgeniy Ivanov 
10958a2b000SEvgeniy Ivanov __compactcall int biosgetrtc(u_long *);
11058a2b000SEvgeniy Ivanov int biosgetsystime(void);
11158a2b000SEvgeniy Ivanov int comgetc(int);
11258a2b000SEvgeniy Ivanov void cominit(int);
11358a2b000SEvgeniy Ivanov __compactcall int computc(int, int);
11458a2b000SEvgeniy Ivanov int comstatus(int);
11558a2b000SEvgeniy Ivanov int congetc(void);
11658a2b000SEvgeniy Ivanov int conisshift(void);
11758a2b000SEvgeniy Ivanov int coniskey(void);
11858a2b000SEvgeniy Ivanov __compactcall void conputc(int);
11958a2b000SEvgeniy Ivanov void conclr(void);
12058a2b000SEvgeniy Ivanov 
121f14fb602SLionel Sambuc #if defined(__minix)
1229733fcdbSDavid van Moolenbroek int getchar_ex(void);
123*84d9c625SLionel Sambuc #endif /* defined(__minix) */
1249733fcdbSDavid van Moolenbroek 
12558a2b000SEvgeniy Ivanov int getextmem2(int *);
12658a2b000SEvgeniy Ivanov __compactcall int getextmemps2(void *);
12758a2b000SEvgeniy Ivanov int getmementry(int *, int *);
12858a2b000SEvgeniy Ivanov 
12958a2b000SEvgeniy Ivanov __compactcall int biosdisk_int13ext(int);
13058a2b000SEvgeniy Ivanov __compactcall int biosdisk_getinfo(int);
13158a2b000SEvgeniy Ivanov struct biosdisk_extinfo;
13258a2b000SEvgeniy Ivanov __compactcall int biosdisk_getextinfo(int, struct biosdisk_extinfo *);
13358a2b000SEvgeniy Ivanov int get_harddrives(void);
13458a2b000SEvgeniy Ivanov void biosdisk_probe(void);
13558a2b000SEvgeniy Ivanov 
13658a2b000SEvgeniy Ivanov int pcibios_cfgread(unsigned int, int, int *);
13758a2b000SEvgeniy Ivanov int pcibios_cfgwrite(unsigned int, int, int);
13858a2b000SEvgeniy Ivanov int pcibios_finddev(int, int, int, unsigned int *);
13958a2b000SEvgeniy Ivanov int pcibios_present(int *);
14058a2b000SEvgeniy Ivanov 
14158a2b000SEvgeniy Ivanov void dosclose(int);
14258a2b000SEvgeniy Ivanov int dosopen(char *);
14358a2b000SEvgeniy Ivanov int dosread(int, char *, int);
14458a2b000SEvgeniy Ivanov int dosseek(int, int, int);
14558a2b000SEvgeniy Ivanov extern int doserrno;	/* in dos_file.S */
14658a2b000SEvgeniy Ivanov 
14758a2b000SEvgeniy Ivanov void module_add(char *);
14858a2b000SEvgeniy Ivanov void splash_add(char *);
14958a2b000SEvgeniy Ivanov void rnd_add(char *);
150*84d9c625SLionel Sambuc void fs_add(char *);
15158a2b000SEvgeniy Ivanov void userconf_add(char *);
15258a2b000SEvgeniy Ivanov 
15358a2b000SEvgeniy Ivanov struct btinfo_framebuffer;
15458a2b000SEvgeniy Ivanov void framebuffer_configure(struct btinfo_framebuffer *);
155