85xx: properly document MPC85xx_PORDEVSR2_SEC_CFG
[oweals/u-boot.git] / include / asm-ppc / mmu.h
index fed4fd64a727343bec67a551fa777799b08e9d92..8975e6c90a8586e708f2770be77fa48bcf15a525 100644 (file)
@@ -140,11 +140,16 @@ extern void _tlbia(void);         /* invalidate all TLB entries */
 
 typedef enum {
        IBAT0 = 0, IBAT1, IBAT2, IBAT3,
-       DBAT0, DBAT1, DBAT2, DBAT3
+       DBAT0, DBAT1, DBAT2, DBAT3,
+#ifdef CONFIG_HIGH_BATS
+       IBAT4, IBAT5, IBAT6, IBAT7,
+       DBAT4, DBAT5, DBAT6, DBAT7
+#endif
 } ppc_bat_t;
 
 extern int read_bat(ppc_bat_t bat, unsigned long *upper, unsigned long *lower);
 extern int write_bat(ppc_bat_t bat, unsigned long upper, unsigned long lower);
+extern void print_bats(void);
 
 #endif /* __ASSEMBLY__ */
 
@@ -343,7 +348,7 @@ extern int write_bat(ppc_bat_t bat, unsigned long upper, unsigned long lower);
 #define MAS0_ESEL(x)   ((x << 16) & 0x0FFF0000)
 #define MAS0_NV(x)     ((x) & 0x00000FFF)
 
-#define MAS1_VALID     0x80000000
+#define MAS1_VALID     0x80000000
 #define MAS1_IPROT     0x40000000
 #define MAS1_TID(x)    ((x << 16) & 0x3FFF0000)
 #define MAS1_TS                0x00001000
@@ -388,6 +393,19 @@ extern int write_bat(ppc_bat_t bat, unsigned long upper, unsigned long lower);
 
 #define MAS7_RPN       0xFFFFFFFF
 
+#define FSL_BOOKE_MAS0(tlbsel,esel,nv) \
+               (MAS0_TLBSEL(tlbsel) | MAS0_ESEL(esel) | MAS0_NV(nv))
+#define FSL_BOOKE_MAS1(v,iprot,tid,ts,tsize) \
+               ((((v) << 31) & MAS1_VALID)             |\
+               (((iprot) << 30) & MAS1_IPROT)          |\
+               (MAS1_TID(tid))                         |\
+               (((ts) << 12) & MAS1_TS)                |\
+               (MAS1_TSIZE(tsize)))
+#define FSL_BOOKE_MAS2(epn, wimge) \
+               (((epn) & MAS3_RPN) | (wimge))
+#define FSL_BOOKE_MAS3(rpn, user, perms) \
+               (((rpn) & MAS3_RPN) | (user) | (perms))
+
 #define BOOKE_PAGESZ_1K         0
 #define BOOKE_PAGESZ_4K         1
 #define BOOKE_PAGESZ_16K        2
@@ -405,6 +423,37 @@ extern int write_bat(ppc_bat_t bat, unsigned long upper, unsigned long lower);
 #define BOOKE_PAGESZ_256GB     14
 #define BOOKE_PAGESZ_1TB       15
 
+#ifdef CONFIG_E500
+#ifndef __ASSEMBLY__
+extern void set_tlb(u8 tlb, u32 epn, u64 rpn,
+                   u8 perms, u8 wimge,
+                   u8 ts, u8 esel, u8 tsize, u8 iprot);
+extern void disable_tlb(u8 esel);
+extern void invalidate_tlb(u8 tlb);
+extern void init_tlbs(void);
+extern unsigned int setup_ddr_tlbs(unsigned int memsize_in_meg);
+
+#define SET_TLB_ENTRY(_tlb, _epn, _rpn, _perms, _wimge, _ts, _esel, _sz, _iprot) \
+       { .tlb = _tlb, .epn = _epn, .rpn = _rpn, .perms = _perms, \
+         .wimge = _wimge, .ts = _ts, .esel = _esel, .tsize = _sz, .iprot = _iprot }
+
+struct fsl_e_tlb_entry {
+       u8      tlb;
+       u32     epn;
+       u64     rpn;
+       u8      perms;
+       u8      wimge;
+       u8      ts;
+       u8      esel;
+       u8      tsize;
+       u8      iprot;
+};
+
+extern struct fsl_e_tlb_entry tlb_table[];
+extern int num_tlb_entries;
+#endif
+#endif
+
 #if defined(CONFIG_MPC86xx)
 #define LAWBAR_BASE_ADDR       0x00FFFFFF
 #define LAWAR_TRGT_IF          0x01F00000
@@ -506,14 +555,14 @@ extern int write_bat(ppc_bat_t bat, unsigned long upper, unsigned long lower);
 /*----------------------------------------------------------------------------+
 | TLB specific defines.
 +----------------------------------------------------------------------------*/
-#define TLB_256MB_ALIGN_MASK 0xF0000000
-#define TLB_16MB_ALIGN_MASK  0xFF000000
-#define TLB_1MB_ALIGN_MASK   0xFFF00000
-#define TLB_256KB_ALIGN_MASK 0xFFFC0000
-#define TLB_64KB_ALIGN_MASK  0xFFFF0000
-#define TLB_16KB_ALIGN_MASK  0xFFFFC000
-#define TLB_4KB_ALIGN_MASK   0xFFFFF000
-#define TLB_1KB_ALIGN_MASK   0xFFFFFC00
+#define TLB_256MB_ALIGN_MASK 0xFF0000000ULL
+#define TLB_16MB_ALIGN_MASK  0xFFF000000ULL
+#define TLB_1MB_ALIGN_MASK   0xFFFF00000ULL
+#define TLB_256KB_ALIGN_MASK 0xFFFFC0000ULL
+#define TLB_64KB_ALIGN_MASK  0xFFFFF0000ULL
+#define TLB_16KB_ALIGN_MASK  0xFFFFFC000ULL
+#define TLB_4KB_ALIGN_MASK   0xFFFFFF000ULL
+#define TLB_1KB_ALIGN_MASK   0xFFFFFFC00ULL
 #define TLB_256MB_SIZE       0x10000000
 #define TLB_16MB_SIZE        0x01000000
 #define TLB_1MB_SIZE         0x00100000
@@ -642,7 +691,7 @@ extern int write_bat(ppc_bat_t bat, unsigned long upper, unsigned long lower);
 #define MSYNC                          .long 0x7c000000|\
                                        (598<<1)
 
-#define MBAR_INST                              .long 0x7c000000|\
+#define MBAR_INST                              .long 0x7c000000|\
                                        (854<<1)
 
 #ifndef __ASSEMBLY__
@@ -654,7 +703,7 @@ unsigned long mftlb1(unsigned long index);
 unsigned long mftlb2(unsigned long index);
 unsigned long mftlb3(unsigned long index);
 
-void program_tlb(u32 phys_addr, u32 virt_addr, u32 size, u32 tlb_word2_i_value);
+void program_tlb(u64 phys_addr, u32 virt_addr, u32 size, u32 tlb_word2_i_value);
 void remove_tlb(u32 vaddr, u32 size);
 void change_tlb(u32 vaddr, u32 size, u32 tlb_word2_i_value);
 #endif /* __ASSEMBLY__ */