Diff for /np2/i386c/ia32/paging.h between versions 1.22 and 1.26

version 1.22, 2008/03/22 04:03:07 version 1.26, 2011/12/21 18:07:57
Line 1 Line 1
 /*      $Id$    */  
   
 /*  /*
  * Copyright (c) 2003 NONAKA Kimihiro   * Copyright (c) 2003 NONAKA Kimihiro
  * All rights reserved.   * All rights reserved.
Line 33  extern "C" { Line 31  extern "C" {
 #endif  #endif
   
 /*  /*
  * ¥Ú¡¼¥¸¡¦¥Ç¥£¥ì¥¯¥È¥ê¡¦¥¨¥ó¥È¥ê (4K ¥Ð¥¤¥È¥Ú¡¼¥¸»ÈÍÑ»þ)   * ¥Ú¡¼¥¸¡¦¥Ç¥£¥ì¥¯¥È¥ê¡¦¥¨¥ó¥È¥ê (4K ¥Ð¥¤¥È¥Ú¡¼¥¸»ÈÍÑ»þ)
  *   *
  *  31                                    12 11   9 8  7 6 5  4   3   2   1  0    *  31                                    12 11   9 8  7 6 5  4   3   2   1  0 
  * +----------------------------------------+------+-+--+-+-+---+---+---+---+-+   * +----------------------------------------+------+-+--+-+-+---+---+---+---+-+
  * |   ¡¦¥ì¡£¥·¡¦¥¯¡£¥ò¡¦¥Ë¡£¥·¡¦¥è¡¦ö¦¥Û¡¦¥ë¡£¥·¡¦¥±¡£¥ò¡¦¡Ö¡¦¥Î¡¦ø§¥±   |¥µ¥Í¥Ø¥à¥¤¥È|G|PS|-|A|PCD|PWT|U/S|R/W|P|   * |   åãÔ妾å⥯å㥵åã¬å¦¾åãÌ妭åá¥çåãÒ妾å⥱å㥵åâ¡Öåã²å¦®å⥱   |è¿¥½íô¥£éï¥Ã|G|PS|-|A|PCD|PWT|U/S|R/W|P|
  * +----------------------------------------+------+-+--+-+-+---+---+---+---+-+   * +----------------------------------------+------+-+--+-+-+---+---+---+---+-+
  *                                              |   |  | | |  |   |   |   |  |   *                                              |   |  | | |  |   |   |   |  |
  * 9-11: ¡¦¥­¡¦¥±¡¦¥Ë¡¦à£¥ò¡¦¥é¡¦ú§¡¼¡¦ò§¡«¡¢¥ã¥µ¥Í¥Ø¥à¥¤¥È¥Ì¥¹ --------+   |  | | |  |   |   |   |  |   * 9-11: ¥·¥¹¥Æ¥à¡¦¥×¥í¥°¥é¥Þ¤¬»ÈÍѲÄǽ --------+   |  | | |  |   |   |   |  |
  *    8: ¡¦¡¼¡¦ú£¥·¡¦¥ß¡¦ö£¥ò¡¦¥ì¡£¥·¡¦¥¯(¥Õ¥ª¥µö¦¥ª¡¢ø¦ ------------+  | | |  |   |   |   |  |   *    8: ¥°¥í¡¼¥Ð¥ë¡¦¥Ú¡¼¥¸(̵»ë¤µ¤ì¤ë) ------------+  | | |  |   |   |   |  |
  *    7: ¥Ú¡¼¥¸¡¦¥µ¥¤¥º (0 = 4k ¥Ð¥¤¥È¥Ú¡¼¥¸) ---------+ | |  |   |   |   |  |   *    7: ¥Ú¡¼¥¸¡¦¥µ¥¤¥º (0 = 4k ¥Ð¥¤¥È¥Ú¡¼¥¸) ---------+ | |  |   |   |   |  |
  *    6: ͽÌó (-) ---------------------------------------+ |  |   |   |   |  |   *    6: ͽÌó (-) ---------------------------------------+ |  |   |   |   |  |
  *    5: ¥¢¥¯¥»¥¹ -----------------------------------------+  |   |   |   |  |   *    5: ¥¢¥¯¥»¥¹ -----------------------------------------+  |   |   |   |  |
  *    4: ¥­¥ã¥Ã¥·¥å̵¸ú --------------------------------------+   |   |   |  |   *    4: ¥­¥ã¥Ã¥·¥å̵¸ú --------------------------------------+   |   |   |  |
  *    3: ¥é¥¤¥È¥¹¥ë¡¼ --------------------------------------------+   |   |  |   *    3: ¥é¥¤¥È¥¹¥ë¡¼ --------------------------------------------+   |   |  |
  *    2: ¥æ¡¼¥¶¡¿¥¹¡¼¥Ñ¥Ð¥¤¥¶ (0 = ¥¹¡¼¥Ñ¥Ð¥¤¥¶) ---------------------+   |  |   *    2: ¥æ¡¼¥¶¡¿¥¹¡¼¥Ñ¥Ð¥¤¥¶ (0 = ¥¹¡¼¥Ñ¥Ð¥¤¥¶) ---------------------+   |  |
  *    1: ÆÉ¤ß¼è¤ê¡¿½ñ¤­¹þ¤ß (0 = ÆÉ¤ß¼è¤ê¤Î¤ß) ---------------------------+  |   *    1: ÆÉ¤ß¼è¤ê¡¿½ñ¤­¹þ¤ß (0 = ÆÉ¤ß¼è¤ê¤Î¤ß) ---------------------------+  |
  *    0: ¥Ú¡¼¥¸Â¸ºß ---------------------------------------------------------+   *    0: ¥Ú¡¼¥¸Â¸ºß ---------------------------------------------------------+
  */   */
 #define CPU_PDE_BASEADDR_MASK   0xfffff000  #define CPU_PDE_BASEADDR_MASK   0xfffff000
 #define CPU_PDE_GLOBAL_PAGE     (1 << 8)  #define CPU_PDE_GLOBAL_PAGE     (1 << 8)
Line 63  extern "C" { Line 61  extern "C" {
 #define CPU_PDE_PRESENT         (1 << 0)  #define CPU_PDE_PRESENT         (1 << 0)
   
 /*  /*
  * ¥Ú¡¼¥¸¡¦¥Ç¥£¥ì¥¯¥È¥ê¡¦¥¨¥ó¥È¥ê (4M ¥Ð¥¤¥È¥Ú¡¼¥¸»ÈÍÑ»þ)   * ¥Ú¡¼¥¸¡¦¥Ç¥£¥ì¥¯¥È¥ê¡¦¥¨¥ó¥È¥ê (4M ¥Ð¥¤¥È¥Ú¡¼¥¸»ÈÍÑ»þ)
  *    * 
  *  31                        22 21       12 11   9 8  7 6 5  4   3   2   1  0    *  31                        22 21       12 11   9 8  7 6 5  4   3   2   1  0 
  * +----------------------------+-----------+------+-+--+-+-+---+---+---+---+-+   * +----------------------------+-----------+------+-+--+-+-+---+---+---+---+-+
  * |¥Ú¡¼¥¸¥Æ¡¼¥Ö¥ë¤ÎʪÍý¥¢¥É¥ì¥¹|  Í½ÌóºÑ¤ß |»ÈÍѲÄ|G|PS|D|A|PCD|PWT|U/S|R/W|P|   * |åãÔ妾å⥯åã¬å¦¾åãÌ妭åá¥çí饥íð¬å¤¤åã²å¦®å⥱|  è¼°é¥¨¨è¥¯°å¢Á |è¿¥½íô¥£éï¥Ã|G|PS|D|A|PCD|PWT|U/S|R/W|P|
  * +----------------------------+-----------+------+-+--+-+-+---+---+---+---+-+   * +----------------------------+-----------+------+-+--+-+-+---+---+---+---+-+
  *                                              |   |  | | |  |   |   |   |  |   *                                              |   |  | | |  |   |   |   |  |
  * 9-11: ¡¦¥­¡¦¥±¡¦¥Ë¡¦à£¥ò¡¦¥é¡¦ú§¡¼¡¦ò§¡«¡¢¥ã¥µ¥Í¥Ø¥à¥¤¥È¥Ì¥¹ --------+   |  | | |  |   |   |   |  |   * 9-11: ¥·¥¹¥Æ¥à¡¦¥×¥í¥°¥é¥Þ¤¬»ÈÍѲÄǽ --------+   |  | | |  |   |   |   |  |
  *    8: ¡¦¡¼¡¦ú£¥·¡¦¥ß¡¦ö£¥ò¡¦¥ì¡£¥·¡¦¥¯ ------------------------+  | | |  |   |   |   |  |   *    8: ¥°¥í¡¼¥Ð¥ë¡¦¥Ú¡¼¥¸ ------------------------+  | | |  |   |   |   |  |
  *    7: ¡¦¥ì¡£¥·¡¦¥¯¡£¥ò¡¦¥ª¡¦¡¢¡¦¥³ (1 = 4M ¡¦¥ß¡¦¡¢¡¦¥Í¡¦¥ì¡£¥·¡¦¥¯) ---------+ | |  |   |   |   |  |   *    7: ¥Ú¡¼¥¸¡¦¥µ¥¤¥º (1 = 4M ¥Ð¥¤¥È¥Ú¡¼¥¸) ---------+ | |  |   |   |   |  |
  *    6: ¡¦¥¿¡£¥·¡¦¥Ë¡¦¡× ---------------------------------------+ |  |   |   |   |  |   *    6: ¥À¡¼¥Æ¥£ ---------------------------------------+ |  |   |   |   |  |
  *    5: ¡¦¡Ö¡¦¥Ã¡¦¥µ¡¦¥± -----------------------------------------+  |   |   |   |  |   *    5: ¥¢¥¯¥»¥¹ -----------------------------------------+  |   |   |   |  |
  *    4: ¡¦¥å¡¦æ§¥Æ¡¦¥­¡¦êÎ¥ª¥¯--------------------------------------+   |   |   |  |   *    4: ¥­¥ã¥Ã¥·¥å̵¸ú --------------------------------------+   |   |   |  |
  *    3: ¡¦ò§¡¢¡¦¥Í¡¦¥±¡¦ö£¥· --------------------------------------------+   |   |  |   *    3: ¥é¥¤¥È¥¹¥ë¡¼ --------------------------------------------+   |   |  |
  *    2: ¡¦ì£¥·¡¦¥«¡£¥½¡¦¥±¡£¥·¡¦¥à¡¦¥ß¡¦¡¢¡¦¥« (0 = ¡¦¥±¡£¥·¡¦¥à¡¦¥ß¡¦¡¢¡¦¥«) ---------------------+   |  |   *    2: ¥æ¡¼¥¶¡¿¥¹¡¼¥Ñ¥Ð¥¤¥¶ (0 = ¥¹¡¼¥Ñ¥Ð¥¤¥¶) ---------------------+   |  |
  *    1: ¥Ë¥Î¡¢¡¬¥·ð¦ô£¥½¥¹ñ¤­¹þ¤(0 = ÆÉ¤ß¼è¤ê¤Î¤ß) ---------------------------+  |   *    1: ÆÉ¤ß¼è¤ê¡¿½ñ¤­¹þ¤ß (0 = ÆÉ¤ß¼è¤ê¤Î¤ß) ---------------------------+  |
  *    0: ¥Ú¡¼¥¸Â¸ºß ---------------------------------------------------------+   *    0: ¥Ú¡¼¥¸Â¸ºß ---------------------------------------------------------+
  */   */
 #define CPU_PDE_4M_BASEADDR_MASK        0xffc00000  #define CPU_PDE_4M_BASEADDR_MASK        0xffc00000
 #define CPU_PDE_4M_GLOBAL_PAGE          (1 << 8)  #define CPU_PDE_4M_GLOBAL_PAGE          (1 << 8)
Line 93  extern "C" { Line 91  extern "C" {
 #define CPU_PDE_4M_PRESENT              (1 << 0)  #define CPU_PDE_4M_PRESENT              (1 << 0)
   
 /*  /*
  * ¥Ú¡¼¥¸¡¦¥Æ¡¼¥Ö¥ë¡¦¥¨¥ó¥È¥ê (4k ¥Ð¥¤¥È¡¦¥Ú¡¼¥¸)   * åãÔ妾å⥯å㥵åã¬å¦¾åãÌ妭å㥵å⥣å㥦åã°å¦¬ (4k åãÀ夦åã°å¦½åãÔ妾å⥯)
  *   *
  *  31                                    12 11   9 8 7 6 5  4   3   2   1  0    *  31                                    12 11   9 8 7 6 5  4   3   2   1  0 
  * +----------------------------------------+------+-+-+-+-+---+---+---+---+-+   * +----------------------------------------+------+-+-+-+-+---+---+---+---+-+
  * |        ¡¦¥ì¡£¥·¡¦¥¯¡¢¥Û¡¦¥ë¡£¥·¡¦¥±¡£¥ò¡¦¡Ö¡¦¥Î¡¦ø§¥±        |¥µ¥Í¥Ø¥à¥¤¥È|G|-|D|A|PCD|PWT|U/S|R/W|P|   * |        åãÔ妾å⥯åá¥çåãÒ妾å⥱å㥵åâ¡Öåã²å¦®å⥱        |è¿¥½íô¥£éï¥Ã|G|-|D|A|PCD|PWT|U/S|R/W|P|
  * +----------------------------------------+------+-+-+-+-+---+---+---+---+-+   * +----------------------------------------+------+-+-+-+-+---+---+---+---+-+
  *                                              |   | | | |  |   |   |   |  |   *                                              |   | | | |  |   |   |   |  |
  *  9-11: ¡¦¥­¡¦¥±¡¦¥Ë¡¦à£¥ò¡¦¥é¡¦ú§¡¼¡¦ò§¡«¡¢¥ã¥µ¥Í¥Ø¥à¥¤¥È¥Ì¥¹ -------+   | | | |  |   |   |   |  |   *  9-11: ¥·¥¹¥Æ¥à¡¦¥×¥í¥°¥é¥Þ¤¬»ÈÍѲÄǽ -------+   | | | |  |   |   |   |  |
  *     8: ¡¦¡¼¡¦ú£¥·¡¦¥ß¡¦ö£¥ò¡¦¥ì¡£¥·¡¦¥¯ -----------------------+ | | |  |   |   |   |  |   *     8: ¥°¥í¡¼¥Ð¥ë¡¦¥Ú¡¼¥¸ -----------------------+ | | |  |   |   |   |  |
  *     7: ¥Ø¥¹¥Õ(-) -----------------------------------+ | |  |   |   |   |  |   *     7: ͽÌó (-) -----------------------------------+ | |  |   |   |   |  |
  *     6: ¥À¡¼¥Æ¥£ -------------------------------------+ |  |   |   |   |  |   *     6: ¥À¡¼¥Æ¥£ -------------------------------------+ |  |   |   |   |  |
  *     5: ¥¢¥¯¥»¥¹ ---------------------------------------+  |   |   |   |  |   *     5: ¥¢¥¯¥»¥¹ ---------------------------------------+  |   |   |   |  |
  *     4: ¥­¥ã¥Ã¥·¥å̵¸ú ------------------------------------+   |   |   |  |   *     4: ¥­¥ã¥Ã¥·¥å̵¸ú ------------------------------------+   |   |   |  |
  *     3: ¥é¥¤¥È¥¹¥ë¡¼ ------------------------------------------+   |   |  |   *     3: ¥é¥¤¥È¥¹¥ë¡¼ ------------------------------------------+   |   |  |
  *     2: ¥æ¡¼¥¶¡¿¥¹¡¼¥Ñ¥Ð¥¤¥¶ (0 = ¥¹¡¼¥Ñ¥Ð¥¤¥¶) -------------------+   |  |   *     2: ¥æ¡¼¥¶¡¿¥¹¡¼¥Ñ¥Ð¥¤¥¶ (0 = ¥¹¡¼¥Ñ¥Ð¥¤¥¶) -------------------+   |  |
  *     1: ÆÉ¤ß¼è¤ê¡¿½ñ¤­¹þ¤ß (0 = ÆÉ¤ß¼è¤ê¤Î¤ß) -------------------------+  |   *     1: ÆÉ¤ß¼è¤ê¡¿½ñ¤­¹þ¤ß (0 = ÆÉ¤ß¼è¤ê¤Î¤ß) -------------------------+  |
  *     0: ¥Ú¡¼¥¸Â¸ºß -------------------------------------------------------+   *     0: ¥Ú¡¼¥¸Â¸ºß -------------------------------------------------------+
  */   */
 #define CPU_PTE_BASEADDR_MASK   0xfffff000  #define CPU_PTE_BASEADDR_MASK   0xfffff000
 #define CPU_PTE_GLOBAL_PAGE     (1 << 8)  #define CPU_PTE_GLOBAL_PAGE     (1 << 8)
Line 215  typedef struct { Line 213  typedef struct {
         UINT8   *memp;  /* shortcut for pre-fetch queue */          UINT8   *memp;  /* shortcut for pre-fetch queue */
 } TLB_ENTRY_T;  } TLB_ENTRY_T;
   
   
 #if defined(IA32_SUPPORT_TLB)  
 void tlb_init(void);  void tlb_init(void);
 void MEMCALL tlb_flush(BOOL allflush);  void MEMCALL tlb_flush(BOOL allflush);
 void MEMCALL tlb_flush_page(UINT32 laddr);  void MEMCALL tlb_flush_page(UINT32 laddr);
 TLB_ENTRY_T* MEMCALL tlb_lookup(const UINT32 laddr, const int ucrw);  TLB_ENTRY_T* MEMCALL tlb_lookup(const UINT32 laddr, const int ucrw);
 #else  
 #define tlb_init()  
 #define tlb_flush(allflush)     (void)(allflush)  
 #define tlb_flush_page(la)      (void)(la)  
 #define tlb_lookup(la, ucrw)    NULL  
 #endif  
   
 #ifdef __cplusplus  #ifdef __cplusplus
 }  }

Removed from v.1.22  
changed lines
  Added in v.1.26


RetroPC.NET-CVS <cvs@retropc.net>