www.pudn.com > vxworks0108.rar > mmu603Lib.h


#ifndef _INCmmu603Libh
#define _INCmmu603Libh

#ifdef __cplusplus
extern "C" {
#endif


#define PAGE_SIZE       4096                    /* pages are 4K bytes        */

#define _MMU_NUM_IBAT   4                       /* 4 instr BAT registers     */
#define _MMU_NUM_DBAT   4                       /* 4 data BAT registers      */

#define _MMU_NUM_EXTRA_IBAT   4                       /* 4 instr BAT registers     */
#define _MMU_NUM_EXTRA_DBAT   4                       /* 4 data BAT registers      */


/* _MMU_UBAT                     Upper BAT Registers                         */

#define _MMU_UBAT_BEPI_MASK     0xfffe0000      /* effective pg index        */
#define _MMU_UBAT_BEPI_SHIFT    17

#define _MMU_UBAT_BL_MASK       0x00001ffc      /* block size                */
#define _MMU_UBAT_BL_SHIFT      2
#define _MMU_UBAT_BL_128K       0x00000000      /* block size 128K           */
#define _MMU_UBAT_BL_256K       0x00000004      /* block size 256K           */
#define _MMU_UBAT_BL_512K       0x0000000c      /* block size 512K           */
#define _MMU_UBAT_BL_1M         0x0000001c      /* block size 1M             */
#define _MMU_UBAT_BL_2M         0x0000003c      /* block size 2M             */
#define _MMU_UBAT_BL_4M         0x0000007c      /* block size 4M             */
#define _MMU_UBAT_BL_8M         0x000000fc      /* block size 8M             */
#define _MMU_UBAT_BL_16M        0x000001fc      /* block size 16M            */
#define _MMU_UBAT_BL_32M        0x000003fc      /* block size 32M            */
#define _MMU_UBAT_BL_64M        0x000007fc      /* block size 64M            */
#define _MMU_UBAT_BL_128M       0x00000ffc      /* block size 128M           */
#define _MMU_UBAT_BL_256M       0x00001ffc      /* block size 256M           */

#define _MMU_UBAT_BL_512M       0x00003ffc      /* block size 512M           */
#define _MMU_UBAT_BL_1G         0x00007ffc      /* block size 1G             */
#define _MMU_UBAT_BL_2G         0x0000fffc      /* block size 2G             */
#define _MMU_UBAT_BL_4G         0x0001fffc      /* block size 4G             */

#define _MMU_UBAT_VS            0x00000002      /* supervisor mode valid bit */

#define _MMU_UBAT_VP            0x00000001      /* user mode valid bit       */

/* _MMU_LBAT                     Lower BAT Registers                         */

#define _MMU_LBAT_BRPN_MASK     0xfffe0000      /* physical block number     */
#define _MMU_LBAT_BRPN_SHIFT    17

#define _MMU_LBAT_WIMG_MASK     0x00000078      /* memory/cache access mode  */
#define _MMU_LBAT_WIMG_SHIFT    3
#define _MMU_LBAT_WRITE_THROUGH 0x00000040      /* W - write-through         */
#define _MMU_LBAT_CACHE_INHIBIT 0x00000020      /* I - caching-inhibited     */
#define _MMU_LBAT_MEM_COHERENT  0x00000010      /* M - memory coherence      */
#define _MMU_LBAT_GUARDED       0x00000008      /* G - guarded (DBAT only)   */

#define _MMU_LBAT_PP_MASK       0x00000003      /* protection bits           */
#define _MMU_LBAT_PP_SHIFT      0
#define _MMU_LBAT_PP_NOACC      0x00000000      /* no access                 */
#define _MMU_LBAT_PP_RONLY      0x00000001      /* read (b30 is don't-care)  */
#define _MMU_LBAT_PP_RW         0x00000002      /* read/write                */
#define _MMU_LBAT_PP_SHIFT      0
#define _MMU_LBAT_PP_NOACC      0x00000000      /* no access                 */

#define _MMU_LBAT_BXPN_MASK     0x00000e00 /* Block Extended Physical Page num*/
                                           /* Bits 0-2 of the physical address*/
#define _MMU_LBAT_BX_MASK       0x00000004 /* Block Extended Physical Page num*/
                                           /* Bit 3 of the physical address*/
#define _MMU_LBAT_BXPN_SHIFT    9        
#define _MMU_LBAT_BX_SHIFT      2       


/* _MMU_SEG                      Segment Descriptors                         */

#define _MMU_SEG_T              0x80000000      /* T=0 for page, T=1 for I/O */

#define _MMU_SEG_KS             0x40000000      /* sup-state protect   (T=0) */

#define _MMU_SEG_KP             0x20000000      /* user-state protect  (T=0) */

#define _MMU_SEG_N              0x10000000      /* no-execute protect  (T=0) */

#define _MMU_SEG_VSID_MASK      0x00ffffff      /* virtual segment ID  (T=0) */
#define _MMU_SEG_VSID_SHIFT     0


/* _MMU_PTE                      Page Table Entries                          */

#define _MMU_PTE0_V             0x80000000      /* entry valid (v=1)         */

#define _MMU_PTE0_VSID_MASK     0x7fffff80      /* virtual segment ID        */
#define _MMU_PTE0_VSID_SHIFT    7

#define _MMU_PTE0_H             0x00000040      /* hash function identifier  */

#define _MMU_PTE0_API_MASK      0x00000003      /* abbreviated page index    */
#define _MMU_PTE0_API_SHIFT     0

#define _MMU_PTE1_RPN_MASK      0xfffff000      /* physical page number      */
#define _MMU_PTE1_RPN_SHIFT     12

#define _MMU_PTE1_R             0x00000100      /* referenced                */

#define _MMU_PTE1_C             0x00000080      /* changed                   */

#define _MMU_PTE1_WIMG_MASK     0x00000078      /* memory/cache access mode  */
#define _MMU_PTE1_WIMG_SHIFT    3
#define _MMU_PTE1_WRITE_THROUGH 0x00000040      /* W - write-through         */
#define _MMU_PTE1_CACHE_INHIBIT 0x00000020      /* I - caching-inhibited     */
#define _MMU_PTE1_MEM_COHERENT  0x00000010      /* M - memory coherence      */
#define _MMU_PTE1_GUARDED       0x00000008      /* G - guarded               */

#define _MMU_PTE1_PP_MASK       0x00000003      /* page protection           */
#define _MMU_PTE1_PP_SHIFT      0
#define _MMU_PTE1_PP_00         0x00000000      /* PP bits = 00              */
#define _MMU_PTE1_PP_01         0x00000001      /* PP bits = 01              */
#define _MMU_PTE1_PP_10         0x00000002      /* PP bits = 10              */
#define _MMU_PTE1_PP_11         0x00000003      /* PP bits = 11              */


#ifndef _ASMLANGUAGE

/* function declarations */

#if defined(__STDC__) || defined(__cplusplus)

extern STATUS mmu603LibInit (int pageSize);

#else   /* __STDC__ */

extern STATUS mmu603LibInit ();

#endif  /* __STDC__ */

#endif  /* _ASMLANGUAGE */

#ifdef __cplusplus
}
#endif

#endif /* _INCmmu603Libh */