LparMap.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * LparMap.h
  3.  * Copyright (C) 2001  Mike Corrigan IBM Corporation
  4.  * 
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or
  8.  * (at your option) any later version.
  9.  * 
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  * 
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  18.  */
  19. #ifndef _PPC_TYPES_H
  20. #include <asm/types.h>
  21. #endif
  22. #ifndef _LPARMAP_H
  23. #define _LPARMAP_H
  24. /* The iSeries hypervisor will set up mapping for one or more 
  25.  * ESID/VSID pairs (in SLB/segment registers) and will set up
  26.  * mappings of one or more ranges of pages to VAs.
  27.  * We will have the hypervisor set up the ESID->VSID mapping
  28.  * for the four kernel segments (C-F).  With shared processors,
  29.  * the hypervisor will clear all segment registers and reload
  30.  * these four whenever the processor is switched from one 
  31.  * partition to another.
  32.  */
  33. /* The Vsid and Esid identified below will be used by the hypervisor
  34.  * to set up a memory mapping for part of the load area before giving
  35.  * control to the Linux kernel.  The load area is 64 MB, but this must
  36.  * not attempt to map the whole load area.  The Hashed Page Table may
  37.  * need to be located within the load area (if the total partition size
  38.  * is 64 MB), but cannot be mapped.  Typically, this should specify
  39.  * to map half (32 MB) of the load area.
  40.  * 
  41.  * The hypervisor will set up page table entries for the number of 
  42.  * pages specified.
  43.  *
  44.  * In 32-bit mode, the hypervisor will load all four of the
  45.  * segment registers (identified by the low-order four bits of the 
  46.  * Esid field.  In 64-bit mode, the hypervisor will load one SLB
  47.  * entry to map the Esid to the Vsid.
  48. */
  49. // Hypervisor initially maps 32MB of the load area 
  50. #define HvPagesToMap 8192
  51. struct LparMap
  52. {
  53. u64   xNumberEsids; // Number of ESID/VSID pairs (1)
  54. u64   xNumberRanges; // Number of VA ranges to map (1)
  55. u64   xSegmentTableOffs; // Page number within load area of seg table (0)
  56. u64   xRsvd[5]; // Reserved (0)
  57. u64   xKernelEsid;   // Esid used to map kernel load (0x0C00000000)
  58. u64   xKernelVsid; // Vsid used to map kernel load (0x0C00000000)
  59. u64   xPages; // Number of pages to be mapped (8192)
  60. u64   xOffset; // Offset from start of load area (0)
  61. u64   xVPN; // Virtual Page Number (0x000C000000000000)
  62. };
  63. #endif /* _LPARMAP_H */