ad6c918a3362bf9b864115d5836266450f13e942
[dragonfly.git] / sys / boot / i386 / bootasm.h
1 /* 
2  * Copyright (c) 2004 The DragonFly Project.  All rights reserved.
3  * 
4  * This code is derived from software contributed to The DragonFly Project
5  * by Matthew Dillon <dillon@backplane.com>
6  * 
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in
15  *    the documentation and/or other materials provided with the
16  *    distribution.
17  * 3. Neither the name of The DragonFly Project nor the names of its
18  *    contributors may be used to endorse or promote products derived
19  *    from this software without specific, prior written permission.
20  * 
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
25  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
31  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  *
34  * $DragonFly: src/sys/boot/i386/Attic/bootasm.h,v 1.2 2004/07/19 01:24:57 dillon Exp $
35  */
36
37 /*
38  * NOTE: MEM_REL and MEM_ORG also defined in boot2/Makefile
39  */
40 #define NHRDRV          0x475
41 #define BOOT0_ORIGIN    0x600           /* boot0 relocated      */
42 #define FAKE            0x800           /* Fake partition entry */
43 #define LOAD            0x7c00          /* Load address         */
44 #define BOOTINFO_SIZE   0x48            /* bootinfo structure size */
45 #define MEM_ARG_SIZE    0x18
46 #define MEM_PAGE_SIZE   0x1000
47 #define USR_ARGSPACE    0x1000          /* BTX loader / ttl argspace reserved */
48 #define USR_ARGOFFSET   (BOOTINFO_SIZE+MEM_ARG_SIZE)
49
50 #define MEM_REL         0x700           /* Relocation address   */
51 #define MEM_ARG         0x900           /* Arguments            */
52 #define MEM_ORG         0x7c00          /* Origin               */
53
54 #define BDA_BOOT        0x472           /* Boot howto flag      */
55 #define BDA_MEM         0x413           /* Free memory          */
56 #define BDA_KEYFLAGS    0x417           /* Keyboard shift-state flags   */
57 #define BDA_SCR         0x449           /* Video mode           */
58 #define BDA_POS         0x450           /* Cursor position      */
59 #define BDA_KEYBOARD    0x496           /* BDA byte with keyboard bit */
60
61 #define MEM_BTX_ESP     0x1000          /* btxldr top of stack? */
62 #define MEM_BTX_START   0x1000          /* start of BTX memory */
63 #define MEM_BTX_ESP0    0x1800          /* Supervisor stack */
64 #define MEM_BTX_BUF     0x1800          /* Scratch buffer stack */
65 #define MEM_BTX_ESP1    0x1e00          /* Link stack */
66 #define MEM_BTX_IDT     0x1e00          /* IDT */
67 #define MEM_BTX_TSS     0x1f98          /* TSS */
68 #define MEM_BTX_MAP     0x2000          /* I/O bit map */
69 #define MEM_BTX_DIR     0x4000          /* Page directory */
70
71 /*
72  * NOTE: page table location is hardwired in /usr/src/usr.sbin/btxld/btx.h
73  */
74 #define MEM_BTX_TBL     0x5000          /* Page tables */
75
76 /*
77  * NOTE: BOOT2_LOAD_BUF also determines where the btx loader and boot2.bin
78  *       code are loaded, since they are all in the boot2 file.
79  */
80 #define BOOT2_LOAD_BUF  0x8c00          /* boot1 loads boot2    */
81 #define MEM_BTX_ORG     0x9000          /* base of BTX code */
82 #define MEM_BTX_ENTRY   0x9010          /* BTX starts execution here */
83 #define MEM_BTX_USR     0xa000          /* base of BTX client/user memory */
84 #define MEM_BTX_USR_ARG 0xa100
85 #define MEM_BTX_LDR_OFF MEM_PAGE_SIZE   /* offset of btx in the loader */
86