From: Fredrik Arnerup Date: Tue, 2 Jun 2009 21:27:10 +0000 (-0500) Subject: 85xx: bugfix for reading maximum TLB size on mpc85xx X-Git-Tag: v2009.06-rc3~8 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=90d13b8ac3d515349626d7c8a3dc34ef38c43fa6;p=oweals%2Fu-boot.git 85xx: bugfix for reading maximum TLB size on mpc85xx The MAXSIZE field in the TLB1CFG register is 4 bits, not 8 bits. This made setup_ddr_tlbs() try to set up a TLB larger than the e500 maximum (256 MB) which made u-boot hang in board_init_f() when trying to create a new stack in RAM. I have an mpc8540 with one 1GB dimm. Signed-off-by: Fredrik Arnerup Signed-off-by: Andy Fleming Acked-by: Kumar Gala --- diff --git a/cpu/mpc85xx/tlb.c b/cpu/mpc85xx/tlb.c index c73bf056ec..8304ffe2f4 100644 --- a/cpu/mpc85xx/tlb.c +++ b/cpu/mpc85xx/tlb.c @@ -134,7 +134,7 @@ unsigned int setup_ddr_tlbs(unsigned int memsize_in_meg) unsigned int tlb_size; unsigned int ram_tlb_index = CONFIG_SYS_DDR_TLB_START; unsigned int ram_tlb_address = (unsigned int)CONFIG_SYS_DDR_SDRAM_BASE; - unsigned int max_cam = (mfspr(SPRN_TLB1CFG) >> 16) & 0xff; + unsigned int max_cam = (mfspr(SPRN_TLB1CFG) >> 16) & 0xf; u64 size, memsize = (u64)memsize_in_meg << 20; size = min(memsize, CONFIG_MAX_MEM_MAPPED);