diff options
author | Becky Bruce <beckyb@kernel.crashing.org> | 2009-02-03 18:10:52 -0600 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2009-02-10 00:29:49 +0100 |
commit | c9315e6b4f244981de0b2eaaa29a7838a165b494 (patch) | |
tree | a27fab62224cf8b5e7f831f4c1c64ad6ba258d5d /include/asm-ppc | |
parent | d35ae5a938679bd7e18167faf79d0fb3c6639b51 (diff) | |
download | u-boot-imx-c9315e6b4f244981de0b2eaaa29a7838a165b494.zip u-boot-imx-c9315e6b4f244981de0b2eaaa29a7838a165b494.tar.gz u-boot-imx-c9315e6b4f244981de0b2eaaa29a7838a165b494.tar.bz2 |
mpc86xx: Add support to populate addr map based on BATs
If CONFIG_ADDR_MAP is enabled, update the address map
whenever we write a bat.
Signed-off-by: Becky Bruce <beckyb@kernel.crashing.org>
Diffstat (limited to 'include/asm-ppc')
-rw-r--r-- | include/asm-ppc/mmu.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/include/asm-ppc/mmu.h b/include/asm-ppc/mmu.h index ce04e62..fa92b90 100644 --- a/include/asm-ppc/mmu.h +++ b/include/asm-ppc/mmu.h @@ -138,6 +138,10 @@ typedef struct _MMU_context { extern void _tlbie(unsigned long va); /* invalidate a TLB entry */ extern void _tlbia(void); /* invalidate all TLB entries */ +#ifdef CONFIG_ADDR_MAP +extern void init_addr_map(void); +#endif + typedef enum { IBAT0 = 0, IBAT1, IBAT2, IBAT3, DBAT0, DBAT1, DBAT2, DBAT3, @@ -203,6 +207,14 @@ extern void print_bats(void); #define BPP_RX 0x01 /* Read only */ #define BPP_RW 0x02 /* Read/write */ +/* Macros to get values from BATs, once data is in the BAT register format */ +#define BATU_VALID(x) (x & 0x3) +#define BATU_VADDR(x) (x & 0xfffe0000) +#define BATL_PADDR(x) ((phys_addr_t)((x & 0xfffe0000) \ + | ((x & 0x0e00ULL) << 24) \ + | ((x & 0x04ULL) << 30))) +#define BATU_SIZE(x) (1UL << (fls((x & BATU_BL_MAX) >> 2) + 17)) + /* Used to set up SDR1 register */ #define HASH_TABLE_SIZE_64K 0x00010000 #define HASH_TABLE_SIZE_128K 0x00020000 @@ -462,9 +474,7 @@ extern void set_tlb(u8 tlb, u32 epn, u64 rpn, extern void disable_tlb(u8 esel); extern void invalidate_tlb(u8 tlb); extern void init_tlbs(void); -#ifdef CONFIG_ADDR_MAP -extern void init_addr_map(void); -#endif + extern unsigned int setup_ddr_tlbs(unsigned int memsize_in_meg); #define SET_TLB_ENTRY(_tlb, _epn, _rpn, _perms, _wimge, _ts, _esel, _sz, _iprot) \ |