|
#define | BAT_RPN (~0x1ffff) /* physical block start */ |
|
#define | BAT_XPN 0x00000e00 /* eXtended physical page number (0-2) */ |
|
#define | BAT_W 0x00000040 /* 1 = write-through, 0 = write-back */ |
|
#define | BAT_I 0x00000020 /* cache inhibit */ |
|
#define | BAT_M 0x00000010 /* memory coherency enable */ |
|
#define | BAT_G 0x00000008 /* guarded region (not on 601) */ |
|
#define | BAT_X 0x00000004 /* eXtended physical page number (3) */ |
|
#define | BAT_PP 0x00000003 /* PP mask */ |
|
#define | BAT_PP_NONE 0x00000000 /* no access permission */ |
|
#define | BAT_PP_RO_S 0x00000001 /* read-only (soft) */ |
|
#define | BAT_PP_RW 0x00000002 /* read/write */ |
|
#define | BAT_PP_RO 0x00000003 /* read-only */ |
|
#define | BAT_EPI (~0x1ffffL) /* effective block start */ |
|
#define | BAT_BL 0x00001ffc /* block length */ |
|
#define | BAT_Vs 0x00000002 /* valid in supervisor mode */ |
|
#define | BAT_Vu 0x00000001 /* valid in user mode */ |
|
#define | BAT_XBL 0x0001e000 /* eXtended Block Length (*) */ |
|
#define | BAT_XBL_512M 0x00002000 /* XBL for 512MB */ |
|
#define | BAT_XBL_1G 0x00006000 /* XBL for 1GB */ |
|
#define | BAT_XBL_2G 0x0000e000 /* XBL for 2GB */ |
|
#define | BAT_XBL_4G 0x0001e000 /* XBL for 4GB */ |
|
#define | BAT_V (BAT_Vs|BAT_Vu) |
|
#define | BAT_BL_128K 0x00000000 |
|
#define | BAT_BL_256K 0x00000004 |
|
#define | BAT_BL_512K 0x0000000c |
|
#define | BAT_BL_1M 0x0000001c |
|
#define | BAT_BL_2M 0x0000003c |
|
#define | BAT_BL_4M 0x0000007c |
|
#define | BAT_BL_8M 0x000000fc |
|
#define | BAT_BL_16M 0x000001fc |
|
#define | BAT_BL_32M 0x000003fc |
|
#define | BAT_BL_64M 0x000007fc |
|
#define | BAT_BL_128M 0x00000ffc |
|
#define | BAT_BL_256M 0x00001ffc |
|
#define | BATU(va, len, v) (((va) & BAT_EPI) | ((len) & BAT_BL) | ((v) & BAT_V)) |
|
#define | BATL(pa, wimg, pp) (((pa) & BAT_RPN) | (wimg) | (pp)) |
|
#define | BAT_VA_MATCH_P(batu, va) (((~(((batu)&BAT_BL)<<15))&(va)&BAT_EPI)==((batu)&BAT_EPI)) |
|
#define | BAT_PA_MATCH_P(batu, batl, pa) (((~(((batu)&BAT_BL)<<15))&(pa)&BAT_RPN)==((batl)&BAT_RPN)) |
|
#define | BAT_VALID_P(batu, msr) (((msr)&PSL_PR)?(((batu)&BAT_Vu)==BAT_Vu):(((batu)&BAT_Vs)==BAT_Vs)) |
|
#define | BAT601_PBN 0xfffe0000 /* physical block number */ |
|
#define | BAT601_V 0x00000040 /* valid */ |
|
#define | BAT601_BSM 0x0000003f /* block size mask */ |
|
#define | BAT601_BLPI 0xfffe0000 /* block logical page index */ |
|
#define | BAT601_W 0x00000040 /* 1 = write-through, 0 = write-back */ |
|
#define | BAT601_I 0x00000020 /* cache inhibit */ |
|
#define | BAT601_M 0x00000010 /* memory coherency enable */ |
|
#define | BAT601_Ks 0x00000008 /* key-supervisor */ |
|
#define | BAT601_Ku 0x00000004 /* key-user */ |
|
#define | BAT601_PP 0x00000003 |
|
#define | BAT601_PP_NONE 0x00000000 /* no access permission */ |
|
#define | BAT601_PP_RO_S 0x00000001 /* read-only (soft) */ |
|
#define | BAT601_PP_RW 0x00000002 /* read/write */ |
|
#define | BAT601_PP_RO 0x00000003 /* read-only */ |
|
#define | BAT601_BSM_128K 0x00000000 |
|
#define | BAT601_BSM_256K 0x00000001 |
|
#define | BAT601_BSM_512K 0x00000003 |
|
#define | BAT601_BSM_1M 0x00000007 |
|
#define | BAT601_BSM_2M 0x0000000f |
|
#define | BAT601_BSM_4M 0x0000001f |
|
#define | BAT601_BSM_8M 0x0000003f |
|
#define | BATU601(va, wim, key, pp) (((va) & BAT601_BLPI) | (wim) | (key) | (pp)) |
|
#define | BATL601(pa, size, v) (((pa) & BAT601_PBN) | (v) | (size)) |
|
#define | BAT601_VA_MATCH_P(batu, batl, va) (((~(((batl)&BAT601_BSM)<<17))&(va)&BAT601_BLPI)==((batu)&BAT601_BLPI)) |
|
#define | BAT601_VALID_P(batl) ((batl) & BAT601_V) |
|