/* * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * * The contents of this file constitute Original Code as defined in and * are subject to the Apple Public Source License Version 1.1 (the * "License"). You may not use this file except in compliance with the * License. Please obtain a copy of the License at * http://www.apple.com/publicsource and read it before using this file. * * This Original Code and all software distributed under the License are * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the * License for the specific language governing rights and limitations * under the License. * * @APPLE_LICENSE_HEADER_END@ */ /* * @OSF_FREE_COPYRIGHT@ */ /* * HISTORY * * Revision 1.1.1.1 1998/09/22 21:05:38 wsanchez * Import of Mac OS X kernel (~semeria) * * Revision 1.1.1.1 1998/03/07 02:25:39 wsanchez * Import of OSF Mach kernel (~mburg) * * Revision 1.3.11.4 1995/12/15 10:49:49 bernadat * cbus includes moved to busses/cbus * [95/12/15 bernadat] * * Revision 1.3.11.3 1995/08/21 20:33:23 devrcs * ri-osc CR1547: Fix himem buffer translation to cope with non * page-aligned addresses. * [1995/08/08 16:52:06 bolinger] * * Revision 1.3.11.2 1995/01/26 22:14:56 ezf * removed extraneous CMU CR * [1995/01/26 20:24:48 ezf] * * Revision 1.3.9.2 1994/06/08 21:14:27 dswartz * Preemption merge. * [1994/06/08 21:12:31 dswartz] * * Revision 1.3.9.1 1994/05/19 20:30:30 dwm * mk6 CR 80. Add himem_init prototype. * [1994/05/19 20:30:10 dwm] * * Revision 1.3.2.3 1993/08/09 19:37:21 dswartz * Add ANSI prototypes - CR#9523 * [1993/08/06 17:50:06 dswartz] * * Revision 1.3.2.2 1993/06/09 02:25:24 gm * CR9176 - ANSI C violations: trailing tokens on CPP * directives, extra semicolons after decl_ ..., asm keywords * [1993/06/07 18:58:40 jeffc] * * Added to OSF/1 R1.3 from NMK15.0. * [1993/06/02 21:01:57 jeffc] * * Revision 1.3 1993/04/19 16:09:54 devrcs * Use free copyright * [1993/03/03 12:12:12 bernadat] * * Revision 1.2 1992/11/25 01:07:16 robert * integrate changes below for norma_14 * [1992/11/13 19:28:57 robert] * * $EndLog$ */ #ifndef _I386AT_HIMEM_H_ #define _I386AT_HIMEM_H_ /* * support of memory above 16 Megs for DMA limited to memory * below 16 Megs. */ #include <platforms.h> #define HIMEM_STATS 0 #if HIMEM_STATS extern int himem_request; extern int himem_used; #endif /* HIMEM_STATS */ struct himem_link { struct himem_link *next; vm_offset_t high_addr; /* physical address */ vm_offset_t low_page; /* physical page */ vm_offset_t offset; /* offset on page */ vm_size_t length; }; typedef struct himem_link *hil_t; #define HIGH_MEM ((vm_offset_t) 0xf00000) #define _high_mem_page(x) ((vm_offset_t)(x) >= HIGH_MEM) #if HIMEM_STATS #define high_mem_page(x) \ (++himem_request && _high_mem_page(x) && ++himem_used) #else /* HIMEM_STATS */ #define high_mem_page(x) _high_mem_page(x) #endif /* HIMEM_STATS */ extern void himem_init(void); extern void himem_reserve( int npages); extern vm_offset_t himem_convert( vm_offset_t paddr, vm_size_t len, int op, hil_t * hil); extern void himem_revert( hil_t hil); #endif /* _I386AT_HIMEM_H_ */