home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-arm / pgtable-hwdef.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.5 KB  |  90 lines

  1. /*
  2.  *  linux/include/asm-arm/pgtable-hwdef.h
  3.  *
  4.  *  Copyright (C) 1995-2002 Russell King
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  */
  10. #ifndef _ASMARM_PGTABLE_HWDEF_H
  11. #define _ASMARM_PGTABLE_HWDEF_H
  12.  
  13. /*
  14.  * Hardware page table definitions.
  15.  *
  16.  * + Level 1 descriptor (PMD)
  17.  *   - common
  18.  */
  19. #define PMD_TYPE_MASK        (3 << 0)
  20. #define PMD_TYPE_FAULT        (0 << 0)
  21. #define PMD_TYPE_TABLE        (1 << 0)
  22. #define PMD_TYPE_SECT        (2 << 0)
  23. #define PMD_BIT4        (1 << 4)
  24. #define PMD_DOMAIN(x)        ((x) << 5)
  25. #define PMD_PROTECTION        (1 << 9)    /* v5 */
  26. /*
  27.  *   - section
  28.  */
  29. #define PMD_SECT_BUFFERABLE    (1 << 2)
  30. #define PMD_SECT_CACHEABLE    (1 << 3)
  31. #define PMD_SECT_AP_WRITE    (1 << 10)
  32. #define PMD_SECT_AP_READ    (1 << 11)
  33. #define PMD_SECT_TEX(x)        ((x) << 12)    /* v5 */
  34. #define PMD_SECT_APX        (1 << 15)    /* v6 */
  35. #define PMD_SECT_S        (1 << 16)    /* v6 */
  36. #define PMD_SECT_nG        (1 << 17)    /* v6 */
  37. #define PMD_SECT_SUPER        (1 << 18)    /* v6 */
  38.  
  39. #define PMD_SECT_UNCACHED    (0)
  40. #define PMD_SECT_BUFFERED    (PMD_SECT_BUFFERABLE)
  41. #define PMD_SECT_WT        (PMD_SECT_CACHEABLE)
  42. #define PMD_SECT_WB        (PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
  43. #define PMD_SECT_MINICACHE    (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE)
  44. #define PMD_SECT_WBWA        (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
  45. #define PMD_SECT_NONSHARED_DEV    (PMD_SECT_TEX(2))
  46.  
  47. /*
  48.  *   - coarse table (not used)
  49.  */
  50.  
  51. /*
  52.  * + Level 2 descriptor (PTE)
  53.  *   - common
  54.  */
  55. #define PTE_TYPE_MASK        (3 << 0)
  56. #define PTE_TYPE_FAULT        (0 << 0)
  57. #define PTE_TYPE_LARGE        (1 << 0)
  58. #define PTE_TYPE_SMALL        (2 << 0)
  59. #define PTE_TYPE_EXT        (3 << 0)    /* v5 */
  60. #define PTE_BUFFERABLE        (1 << 2)
  61. #define PTE_CACHEABLE        (1 << 3)
  62.  
  63. /*
  64.  *   - extended small page/tiny page
  65.  */
  66. #define PTE_EXT_XN        (1 << 0)    /* v6 */
  67. #define PTE_EXT_AP_MASK        (3 << 4)
  68. #define PTE_EXT_AP0        (1 << 4)
  69. #define PTE_EXT_AP1        (2 << 4)
  70. #define PTE_EXT_AP_UNO_SRO    (0 << 4)
  71. #define PTE_EXT_AP_UNO_SRW    (PTE_EXT_AP0)
  72. #define PTE_EXT_AP_URO_SRW    (PTE_EXT_AP1)
  73. #define PTE_EXT_AP_URW_SRW    (PTE_EXT_AP1|PTE_EXT_AP0)
  74. #define PTE_EXT_TEX(x)        ((x) << 6)    /* v5 */
  75. #define PTE_EXT_APX        (1 << 9)    /* v6 */
  76. #define PTE_EXT_COHERENT    (1 << 9)    /* XScale3 */
  77. #define PTE_EXT_SHARED        (1 << 10)    /* v6 */
  78. #define PTE_EXT_NG        (1 << 11)    /* v6 */
  79.  
  80. /*
  81.  *   - small page
  82.  */
  83. #define PTE_SMALL_AP_MASK    (0xff << 4)
  84. #define PTE_SMALL_AP_UNO_SRO    (0x00 << 4)
  85. #define PTE_SMALL_AP_UNO_SRW    (0x55 << 4)
  86. #define PTE_SMALL_AP_URO_SRW    (0xaa << 4)
  87. #define PTE_SMALL_AP_URW_SRW    (0xff << 4)
  88.  
  89. #endif
  90.