1 /* $NetBSD: bootxxx.c,v 1.1.1.1 2001/10/13 20:06:57 leo Exp $ */ 2 3 /* 4 * Copyright (c) 2001 Leo Weppelman. 5 * Copyright (c) 1995 Waldi Ravens. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 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 the 15 * documentation and/or other materials provided with the distribution. 16 * 3. All advertising materials mentioning features or use of this software 17 * must display the following acknowledgement: 18 * This product includes software developed by Waldi Ravens. 19 * 4. The name of the author may not be used to endorse or promote products 20 * derived from this software without specific prior written permission 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 27 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 31 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 #define boot_BSD bsd_startup 35 36 #include <stand.h> 37 #include <atari_stand.h> 38 #include <string.h> 39 #include <libkern.h> 40 #include <sys/boot_flag.h> 41 #include <sys/reboot.h> 42 #include <machine/cpu.h> 43 #include <kparamb.h> 44 #include <libtos.h> 45 #include <tosdefs.h> 46 47 void boot_BSD __P((struct kparamb *)__attribute__((noreturn))); 48 49 int 50 bootxxx(readsector, disklabel, od) 51 void *readsector, 52 *disklabel; 53 osdsc_t *od; 54 { 55 int fd; 56 char *errmsg; 57 extern char end[], edata[]; 58 59 bzero(edata, end - edata); 60 61 /* XXX: Limit should be 16MB */ 62 setheap(end, (void*)0x1000000); 63 printf("\033v\nNetBSD/Atari tertiary bootloader " 64 "($Revision: 1.1.1.1 $)\n\n"); 65 66 if (init_dskio(readsector, disklabel, od->rootfs)) 67 return(-1); 68 69 sys_info(od); 70 if (!(od->cputype & ATARI_ANYCPU)) { 71 printf("Unknown CPU-type.\n"); 72 return(-2); 73 } 74 75 if ((fd = open(od->osname, 0)) < 0) { 76 printf("Cannot open kernel '%s'\n", od->osname); 77 return (-3); 78 } 79 80 #ifndef __ELF__ /* a.out */ 81 if (aout_load(fd, od, &errmsg, 1) != 0) 82 #else 83 if (elf_load(fd, od, &errmsg, 1) != 0) 84 #endif 85 return(-4); 86 87 boot_BSD(&od->kp); 88 return(-5); 89 90 /* NOTREACHED */ 91 } 92 93 void 94 _rtt() 95 { 96 printf("Halting...\n"); 97 for(;;) 98 ; 99 } 100