139092Srnordier/* 239092Srnordier * Copyright (c) 1998 Robert Nordier 339092Srnordier * All rights reserved. 439092Srnordier * 539092Srnordier * Redistribution and use in source and binary forms, with or without 639092Srnordier * modification, are permitted provided that the following conditions 739092Srnordier * are met: 839092Srnordier * 1. Redistributions of source code must retain the above copyright 939092Srnordier * notice, this list of conditions and the following disclaimer. 1039092Srnordier * 2. Redistributions in binary form must reproduce the above copyright 1139092Srnordier * notice, this list of conditions and the following disclaimer in the 1239092Srnordier * documentation and/or other materials provided with the distribution. 1339092Srnordier * 1439092Srnordier * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS``AS IS'' AND 1539092Srnordier * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1639092Srnordier * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1739092Srnordier * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS 1839092Srnordier * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 1939092Srnordier * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 2039092Srnordier * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 2139092Srnordier * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2239092Srnordier * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 2339092Srnordier * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 2439092Srnordier * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2539092Srnordier * 2650479Speter * $FreeBSD$ 2739092Srnordier */ 2839092Srnordier 2939092Srnordier#ifndef _BTX_H_ 3039092Srnordier#define _BTX_H_ 3139092Srnordier 3239092Srnordier#include <sys/types.h> 3339092Srnordier 3439092Srnordier#define BTX_PGSIZE 0x1000 /* Page size */ 3539092Srnordier#define BTX_PGBASE 0x5000 /* Start of page tables */ 3639092Srnordier#define BTX_MAXCWR 0x3bc /* Max. btx_pgctl adjustment */ 3739092Srnordier 3839092Srnordier/* 3939092Srnordier * BTX image header. 4039092Srnordier */ 4139092Srnordierstruct btx_hdr { 4239092Srnordier uint8_t btx_machid; /* Machine ID */ 4339092Srnordier uint8_t btx_hdrsz; /* Header size */ 4439092Srnordier uint8_t btx_magic[3]; /* Magic */ 4539092Srnordier uint8_t btx_majver; /* Major version */ 4639092Srnordier uint8_t btx_minver; /* Minor version */ 4739092Srnordier uint8_t btx_flags; /* Flags */ 4839092Srnordier uint16_t btx_pgctl; /* Paging control */ 4939092Srnordier uint16_t btx_textsz; /* Text size */ 5039092Srnordier uint32_t btx_entry; /* Client entry address */ 5139092Srnordier}; 5239092Srnordier 5339092Srnordier/* btx_machid */ 5439092Srnordier#define BTX_I386 0xeb /* Intel i386 or compatible */ 5539092Srnordier 5639092Srnordier/* btx_magic */ 5739092Srnordier#define BTX_MAG0 'B' 5839092Srnordier#define BTX_MAG1 'T' 5939092Srnordier#define BTX_MAG2 'X' 6039092Srnordier 6139092Srnordier/* btx_flags */ 6239092Srnordier#define BTX_MAPONE 0x80 /* Start mapping at page 1 */ 6339092Srnordier 6439092Srnordier#define BTX_MAPPED(btx) (((btx).btx_pgctl | (BTX_PGSIZE / 4 - 1)) + 1) 6539092Srnordier#define BTX_ORIGIN(btx) (BTX_PGBASE + BTX_MAPPED(btx) * 4) 6639092Srnordier#define BTX_ENTRY(btx) (BTX_ORIGIN(btx) + 2 + (btx).btx_hdrsz) 6739092Srnordier 6839092Srnordier#endif /* !_BTX_H_ */ 69