Set-but-not-used variable ifdef'ed. * grub-core/lib/legacy_parse.c (grub_legacy_parse): Likewise. * grub-core/bus/usb/ohci.c (grub_ohci_pci_iter): Set-but-not-used variable removed. * grub-core/disk/lvm.c (grub_lvm_scan_device): Likewise. * grub-core/fs/jfs.c (grub_jfs_find_file): Likewise. * grub-core/fs/minix.c (grub_minix_dir): Likewise. * grub-core/fs/sfs.c (grub_sfs_read_extent): Likewise. * grub-core/fs/ufs.c (grub_ufs_dir): Likewise. * grub-core/gfxmenu/gui_list.c (grub_gui_list_new): Likewise. * grub-core/gfxmenu/view.c (redraw_menu_visit): Likewise. * grub-core/gfxmenu/widget-box.c (draw): Likewise. * grub-core/lib/relocator.c (malloc_in_range): Likewise. * grub-core/loader/i386/bsdXX.c (grub_netbsd_load_elf_meta): Likewise. * grub-core/loader/i386/bsd_pagetable.c (fill_bsd64_pagetable): Likewise.
		
			
				
	
	
		
			92 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  *  GRUB  --  GRand Unified Bootloader
 | |
|  *  Copyright (c) 1998  Michael Smith <msmith@freebsd.org>
 | |
|  *  Copyright (C) 2009  Free Software Foundation, Inc.
 | |
|  *
 | |
|  *  GRUB is free software: you can redistribute it and/or modify
 | |
|  *  it under the terms of the GNU General Public License as published by
 | |
|  *  the Free Software Foundation, either version 3 of the License, or
 | |
|  *  (at your option) any later version.
 | |
|  *
 | |
|  *  GRUB is distributed in the hope that it will be useful,
 | |
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  *  GNU General Public License for more details.
 | |
|  *
 | |
|  *  You should have received a copy of the GNU General Public License
 | |
|  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| 
 | |
| /* Based on the code from FreeBSD originally distributed under the
 | |
|    following terms: */
 | |
| 
 | |
| /*-
 | |
|  * Copyright (c) 1998  Michael Smith <msmith@freebsd.org>
 | |
|  * 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.
 | |
|  *
 | |
|  * $FreeBSD$
 | |
|  */
 | |
| 
 | |
| 
 | |
| static void
 | |
| fill_bsd64_pagetable (grub_uint8_t *src, grub_addr_t target)
 | |
| {
 | |
|   grub_uint64_t *pt2, *pt3, *pt4;
 | |
|   grub_addr_t pt2t, pt3t;
 | |
|   int i;
 | |
| 
 | |
| #define PG_V		0x001
 | |
| #define PG_RW		0x002
 | |
| #define PG_U		0x004
 | |
| #define PG_PS		0x080
 | |
| 
 | |
|   pt4 = (grub_uint64_t *) src;
 | |
|   pt3 = (grub_uint64_t *) (src + 4096);
 | |
|   pt2 = (grub_uint64_t *) (src + 8192);
 | |
| 
 | |
|   pt3t = target + 4096;
 | |
|   pt2t = target + 8192;
 | |
| 
 | |
|   grub_memset (src, 0, 4096 * 3);
 | |
| 
 | |
|   /*
 | |
|    * This is kinda brutal, but every single 1GB VM memory segment points to
 | |
|    * the same first 1GB of physical memory.  But it is how BSD expects
 | |
|    * it to be.
 | |
|    */
 | |
|   for (i = 0; i < 512; i++)
 | |
|     {
 | |
|       /* Each slot of the level 4 pages points to the same level 3 page */
 | |
|       pt4[i] = (grub_addr_t) pt3t;
 | |
|       pt4[i] |= PG_V | PG_RW | PG_U;
 | |
| 
 | |
|       /* Each slot of the level 3 pages points to the same level 2 page */
 | |
|       pt3[i] = (grub_addr_t) pt2t;
 | |
|       pt3[i] |= PG_V | PG_RW | PG_U;
 | |
| 
 | |
|       /* The level 2 page slots are mapped with 2MB pages for 1GB. */
 | |
|       pt2[i] = i * (2 * 1024 * 1024);
 | |
|       pt2[i] |= PG_V | PG_RW | PG_PS | PG_U;
 | |
|     }
 | |
| }
 |