From owner-p4-projects@FreeBSD.ORG Sun Apr 6 14:00:57 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DCCBB37B401; Sun, 6 Apr 2003 14:00:56 -0700 (PDT) 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 7833037B404 for ; Sun, 6 Apr 2003 14:00:56 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C5F8343FD7 for ; Sun, 6 Apr 2003 14:00:51 -0700 (PDT) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h36L0p0U075818 for ; Sun, 6 Apr 2003 14:00:51 -0700 (PDT) (envelope-from peter@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h36L0oBK075812 for perforce@freebsd.org; Sun, 6 Apr 2003 14:00:50 -0700 (PDT) Date: Sun, 6 Apr 2003 14:00:50 -0700 (PDT) Message-Id: <200304062100.h36L0oBK075812@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to peter@freebsd.org using -f From: Peter Wemm To: Perforce Change Reviews Subject: PERFORCE change 28356 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, 06 Apr 2003 21:00:57 -0000 http://perforce.freebsd.org/chv.cgi?CH=28356 Change 28356 by peter@peter_overcee on 2003/04/06 13:59:50 argh. I hate this VTOP stuff. fix some other silly bogons. actually set the entry points. Affected files ... .. //depot/projects/hammer/sys/boot/i386/libi386/elf64_freebsd.c#5 edit Differences ... ==== //depot/projects/hammer/sys/boot/i386/libi386/elf64_freebsd.c#5 (text+ko) ==== @@ -65,7 +65,7 @@ { struct file_metadata *md; Elf_Ehdr *ehdr; - vm_offset_t entry, bootinfop, modulep; + vm_offset_t bootinfop, modulep; int boothowto, err, bootdev; struct bootinfo *bi; vm_offset_t ssym, esym; @@ -77,7 +77,6 @@ if ((err = bi_load(fp->f_args, &boothowto, &bootdev, &bootinfop, &modulep)) != 0) return(err); - entry = ehdr->e_entry & 0xffffff; ssym = esym = 0; if ((md = file_findmetadata(fp, MODINFOMD_SSYM)) != NULL) @@ -100,12 +99,12 @@ bzero(PT2, PAGE_SIZE); /* single PML4 entry */ - PT4[0] = (p4_entry_t)(uintptr_t)&PT3[0]; + PT4[0] = (p4_entry_t)VTOP((uintptr_t)&PT3[0]); PT4[0] |= PG_V | PG_RW | PG_U; /* four PDP entries, 1G each */ for (i = 0; i < 4; i++) { - PT3[i] = (p3_entry_t)(uintptr_t)&PT2[i * 512]; + PT3[i] = (p3_entry_t)VTOP((uintptr_t)&PT2[i * 512]); PT3[i] |= PG_V | PG_RW | PG_U; } @@ -115,12 +114,14 @@ PT2[i] |= PG_V | PG_RW | PG_PS | PG_U; } + entry_lo = ehdr->e_entry & 0xffffffff; + entry_hi = (ehdr->e_entry >> 32) & 0xffffffff; printf("entry_hi: %#x \n", entry_hi); printf("entry_lo: %#x \n", entry_lo); - printf("Start @ %#llx ...\n", entry); + printf("Start @ %#llx ...\n", ehdr->e_entry); dev_cleanup(); - __exec((void *)x86_64_tramp, boothowto, bootdev, 0, 0, 0, bootinfop, modulep, bi->bi_kernend); + __exec((void *)VTOP(x86_64_tramp), boothowto, bootdev, 0, 0, 0, bootinfop, modulep, bi->bi_kernend); panic("exec returned"); }