/* $NetBSD: amiga_init.c,v 1.6 2007/01/24 13:08:13 hubertf Exp $ */ /* * Copyright (c) 1994 Michael L. Hitch * Copyright (c) 1993 Markus Wild * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by Markus Wild. * 4. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> __KERNEL_RCSID(0, "$NetBSD: amiga_init.c,v 1.6 2007/01/24 13:08:13 hubertf Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/proc.h> #include <uvm/uvm_extern.h> #include <sys/user.h> #include <sys/ioctl.h> #include <sys/select.h> #include <sys/tty.h> #include <sys/buf.h> #include <sys/msgbuf.h> #include <sys/mbuf.h> #include <sys/protosw.h> #include <sys/domain.h> #include <sys/dkbad.h> #include <sys/reboot.h> #include <sys/exec.h> #include <amiga/amiga/cc.h> u_long boot_fphystart, boot_fphysize, cphysize; vaddr_t z2mem_start; /* XXX */ static vaddr_t z2mem_end; /* XXX */ int use_z2_mem = 1; /* XXX */ void * chipmem_steal(amount) long amount; { /* * steal from top of chipmem, so we don't collide with * the kernel loaded into chipmem in the not-yet-mapped state. */ vaddr_t p = chipmem_end - amount; if (p & 1) p = p - 1; chipmem_end = p; if(chipmem_start > chipmem_end) panic("not enough chip memory"); return((void *)p); } /* * XXX * used by certain drivers currently to allocate zorro II memory * for bounce buffers, if use_z2_mem is NULL, chipmem will be * returned instead. * XXX */ void * alloc_z2mem(amount) long amount; { if (use_z2_mem && z2mem_end && (z2mem_end - amount) >= z2mem_start) { z2mem_end -= amount; return ((void *)z2mem_end); } return (alloc_chipmem(amount)); }