From owner-p4-projects@FreeBSD.ORG Sun Nov 28 04:12:23 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1761C16A4CF; Sun, 28 Nov 2004 04:12:22 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AFC4916A4CF for ; Sun, 28 Nov 2004 04:12:21 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8CF9D43D4C for ; Sun, 28 Nov 2004 04:12:21 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id iAS4CLnk072232 for ; Sun, 28 Nov 2004 04:12:21 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id iAS4CLR1072229 for perforce@freebsd.org; Sun, 28 Nov 2004 04:12:21 GMT (envelope-from marcel@freebsd.org) Date: Sun, 28 Nov 2004 04:12:21 GMT Message-Id: <200411280412.iAS4CLR1072229@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 65964 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Nov 2004 04:12:23 -0000 http://perforce.freebsd.org/chv.cgi?CH=65964 Change 65964 by marcel@marcel_nfs on 2004/11/28 04:12:11 Load kernels linked at IA64_KERNELBASE. We don't need any fancy VA to PA mapping here, but we do need to build the page table that we need to pass on to the kernel. Affected files ... .. //depot/projects/ia64/sys/boot/ia64/ski/copy.c#2 edit Differences ... ==== //depot/projects/ia64/sys/boot/ia64/ski/copy.c#2 (text+ko) ==== @@ -1,58 +1,87 @@ -/*- - * Copyright (c) 1998 Michael Smith +/* + * Copyright (c) 2004 Marcel Moolenaar * 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. * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. + * 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 -__FBSDID("$FreeBSD: src/sys/boot/ia64/ski/copy.c,v 1.4 2004/09/24 03:53:50 marcel Exp $"); +__FBSDID("$FreeBSD$"); -/* - * MD primitives supporting placement of module data - * - * XXX should check load address/size against memory top. - */ #include -#include #include +#define PHYS_START (4L*1024*1024*1024) +#define PHYS_SIZE (64L*1024*1024 - 4L*1024) + +uint64_t *pgtbl = (uint64_t *)(PHYS_START + PHYS_SIZE); + +static void * +va2pa(uint64_t va) +{ + void *pa; + + /* Backward compatibility. */ + if (va > IA64_RR_BASE(7)) + return ((void *)IA64_RR_MASK(va)); + + if (va < IA64_KERNELBASE) { + printf("\n%s: %lx: invalid loader virtual address\n", + __func__, va); + exit(1); + } + + if (va >= IA64_KERNELBASE + PHYS_SIZE) { + printf("\n%s: %lx: loader virtual address out of bounds\n", + __func__, va); + exit(1); + } + + va -= IA64_KERNELBASE; + pa = (void *)(va + PHYS_START); + pgtbl[va >> 20] = (va & ~((1 << 20) - 1)) + PHYS_START; + return (pa); +} + int -ski_copyin(void *src, vm_offset_t dest, size_t len) +ski_copyin(void *src, vm_offset_t va, size_t len) { - bcopy(src, (void*) IA64_RR_MASK(dest), len); + + bcopy(src, va2pa(va), len); return (len); } int -ski_copyout(vm_offset_t src, void *dest, size_t len) +ski_copyout(vm_offset_t va, void *dst, size_t len) { - bcopy((void*) IA64_RR_MASK(src), dest, len); + + bcopy(va2pa(va), dst, len); return (len); } int -ski_readin(int fd, vm_offset_t dest, size_t len) +ski_readin(int fd, vm_offset_t va, size_t len) { - return (read(fd, (void*) IA64_RR_MASK(dest), len)); + + return (read(fd, va2pa(va), len)); }