1*2340cfa5Sderaadt /* $OpenBSD: loadfile_machdep.h,v 1.8 2019/04/10 04:17:35 deraadt Exp $ */ 2fe42373dSdrahn /* $NetBSD: loadfile_machdep.h,v 1.1 1999/04/29 03:17:12 tsubai Exp $ */ 3fe42373dSdrahn 4fe42373dSdrahn /*- 5fe42373dSdrahn * Copyright (c) 1999 The NetBSD Foundation, Inc. 6fe42373dSdrahn * All rights reserved. 7fe42373dSdrahn * 8fe42373dSdrahn * This code is derived from software contributed to The NetBSD Foundation 9fe42373dSdrahn * by Christos Zoulas. 10fe42373dSdrahn * 11fe42373dSdrahn * Redistribution and use in source and binary forms, with or without 12fe42373dSdrahn * modification, are permitted provided that the following conditions 13fe42373dSdrahn * are met: 14fe42373dSdrahn * 1. Redistributions of source code must retain the above copyright 15fe42373dSdrahn * notice, this list of conditions and the following disclaimer. 16fe42373dSdrahn * 2. Redistributions in binary form must reproduce the above copyright 17fe42373dSdrahn * notice, this list of conditions and the following disclaimer in the 18fe42373dSdrahn * documentation and/or other materials provided with the distribution. 19fe42373dSdrahn * 20fe42373dSdrahn * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 21fe42373dSdrahn * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22fe42373dSdrahn * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23fe42373dSdrahn * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 24fe42373dSdrahn * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25fe42373dSdrahn * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26fe42373dSdrahn * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27fe42373dSdrahn * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28fe42373dSdrahn * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29fe42373dSdrahn * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30fe42373dSdrahn * POSSIBILITY OF SUCH DAMAGE. 31fe42373dSdrahn */ 32fe42373dSdrahn 33fe42373dSdrahn #define BOOT_ELF 349197bb1bStom #define BOOT_ELF32 359197bb1bStom #define BOOT_ELF64 369197bb1bStom 379197bb1bStom /* Keep a default ELFSIZE */ 38fe42373dSdrahn #define ELFSIZE 32 39fe42373dSdrahn 404c9c6baaSmiod #define LOAD_KERNEL LOAD_ALL 414c9c6baaSmiod #define COUNT_KERNEL COUNT_ALL 42fe42373dSdrahn 437af97067Stom #define LOADADDR(a) ((((u_long)(a)) + offset)&0xfffffff) 44fe42373dSdrahn #define ALIGNENTRY(a) ((u_long)(a)) 459197bb1bStom #define READ(f, b, c) read((f), (void *)LOADADDR(b), (size_t)(c)) 46fe42373dSdrahn #define BCOPY(s, d, c) memcpy((void *)LOADADDR(d), (void *)(s), (c)) 47fe42373dSdrahn #define BZERO(d, c) memset((void *)LOADADDR(d), 0, (c)) 48fe42373dSdrahn #define WARN(a) (void)(printf a, \ 49fe42373dSdrahn printf((errno ? ": %s\n" : "\n"), \ 50fe42373dSdrahn strerror(errno))) 51fe42373dSdrahn #define PROGRESS(a) (void) printf a 52fe42373dSdrahn #define ALLOC(a) alloc(a) 53fe42373dSdrahn #define FREE(a, b) free(a, b) 54fe42373dSdrahn 55*2340cfa5Sderaadt void run_loadfile(uint64_t *, int); 56