Annotation of Gnu-Mach/i386/i386at/biosmem.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 2010-2014 Richard Braun.
                      3:  *
                      4:  * This program is free software: you can redistribute it and/or modify
                      5:  * it under the terms of the GNU General Public License as published by
                      6:  * the Free Software Foundation, either version 2 of the License, or
                      7:  * (at your option) any later version.
                      8:  *
                      9:  * This program is distributed in the hope that it will be useful,
                     10:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
                     11:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     12:  * GNU General Public License for more details.
                     13:  *
                     14:  * You should have received a copy of the GNU General Public License
                     15:  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
                     16:  */
                     17: 
                     18: #ifndef _X86_BIOSMEM_H
                     19: #define _X86_BIOSMEM_H
                     20: 
                     21: #include <mach/machine/vm_types.h>
                     22: #include <mach/machine/multiboot.h>
                     23: 
                     24: /*
                     25:  * Address where the address of the Extended BIOS Data Area segment can be
                     26:  * found.
                     27:  */
                     28: #define BIOSMEM_EBDA_PTR 0x40e
                     29: 
                     30: /*
                     31:  * Significant low memory addresses.
                     32:  *
                     33:  * The first 64 KiB are reserved for various reasons (e.g. to preserve BIOS
                     34:  * data and to work around data corruption on some hardware).
                     35:  */
                     36: #define BIOSMEM_BASE        0x010000
                     37: #define BIOSMEM_BASE_END    0x0a0000
                     38: #define BIOSMEM_EXT_ROM     0x0e0000
                     39: #define BIOSMEM_ROM         0x0f0000
                     40: #define BIOSMEM_END         0x100000
                     41: 
                     42: /*
                     43:  * Early initialization of the biosmem module.
                     44:  *
                     45:  * This function processes the given multiboot data for BIOS-provided
                     46:  * memory information, and sets up a bootstrap physical page allocator.
                     47:  *
                     48:  * It is called before paging is enabled.
                     49:  */
                     50: #ifdef MACH_HYP
                     51: void biosmem_xen_bootstrap(void);
                     52: #else /* MACH_HYP */
                     53: void biosmem_bootstrap(struct multiboot_raw_info *mbi);
                     54: #endif /* MACH_HYP */
                     55: 
                     56: /*
                     57:  * Allocate contiguous physical pages during bootstrap.
                     58:  *
                     59:  * This function is called before paging is enabled. It should only be used
                     60:  * to allocate initial page table pages. Those pages are later loaded into
                     61:  * the VM system (as reserved pages) which means they can be freed like other
                     62:  * regular pages. Users should fix up the type of those pages once the VM
                     63:  * system is initialized.
                     64:  */
                     65: unsigned long biosmem_bootalloc(unsigned int nr_pages);
                     66: 
                     67: /*
                     68:  * Return the amount of physical memory that can be directly mapped.
                     69:  *
                     70:  * This includes the size of both the DMA/DMA32 and DIRECTMAP segments.
                     71:  */
                     72: phys_addr_t biosmem_directmap_size(void);
                     73: 
                     74: /*
                     75:  * Set up physical memory based on the information obtained during bootstrap
                     76:  * and load it in the VM system.
                     77:  */
                     78: void biosmem_setup(void);
                     79: 
                     80: /*
                     81:  * Free all usable memory.
                     82:  *
                     83:  * This includes ranges that weren't part of the bootstrap allocator initial
                     84:  * heap, e.g. because they contained boot data.
                     85:  */
                     86: void biosmem_free_usable(void);
                     87: 
                     88: #endif /* _X86_BIOSMEM_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.