Commit 14e609d6 authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

powerpc/mm/32: add base address to mmu_mapin_ram()

At the time being, mmu_mapin_ram() always maps RAM from the beginning.
But some platforms like the WII have to map a second block of RAM.

This patch adds to mmu_mapin_ram() the base address of the block.
At the moment, only base address 0 is supported.
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 6d183ca8
...@@ -93,7 +93,7 @@ void __init MMU_init_hw(void) ...@@ -93,7 +93,7 @@ void __init MMU_init_hw(void)
#define LARGE_PAGE_SIZE_16M (1<<24) #define LARGE_PAGE_SIZE_16M (1<<24)
#define LARGE_PAGE_SIZE_4M (1<<22) #define LARGE_PAGE_SIZE_4M (1<<22)
unsigned long __init mmu_mapin_ram(unsigned long top) unsigned long __init mmu_mapin_ram(unsigned long base, unsigned long top)
{ {
unsigned long v, s, mapped; unsigned long v, s, mapped;
phys_addr_t p; phys_addr_t p;
......
...@@ -170,7 +170,7 @@ void __init MMU_init_hw(void) ...@@ -170,7 +170,7 @@ void __init MMU_init_hw(void)
flush_instruction_cache(); flush_instruction_cache();
} }
unsigned long __init mmu_mapin_ram(unsigned long top) unsigned long __init mmu_mapin_ram(unsigned long base, unsigned long top)
{ {
unsigned long addr; unsigned long addr;
unsigned long memstart = memstart_addr & ~(PPC_PIN_SIZE - 1); unsigned long memstart = memstart_addr & ~(PPC_PIN_SIZE - 1);
......
...@@ -99,7 +99,7 @@ static void __init mmu_patch_cmp_limit(s32 *site, unsigned long mapped) ...@@ -99,7 +99,7 @@ static void __init mmu_patch_cmp_limit(s32 *site, unsigned long mapped)
modify_instruction_site(site, 0xffff, (unsigned long)__va(mapped) >> 16); modify_instruction_site(site, 0xffff, (unsigned long)__va(mapped) >> 16);
} }
unsigned long __init mmu_mapin_ram(unsigned long top) unsigned long __init mmu_mapin_ram(unsigned long base, unsigned long top)
{ {
unsigned long mapped; unsigned long mapped;
......
...@@ -221,7 +221,7 @@ unsigned long map_mem_in_cams(unsigned long ram, int max_cam_idx, bool dryrun) ...@@ -221,7 +221,7 @@ unsigned long map_mem_in_cams(unsigned long ram, int max_cam_idx, bool dryrun)
#error "LOWMEM_CAM_NUM must be less than NUM_TLBCAMS" #error "LOWMEM_CAM_NUM must be less than NUM_TLBCAMS"
#endif #endif
unsigned long __init mmu_mapin_ram(unsigned long top) unsigned long __init mmu_mapin_ram(unsigned long base, unsigned long top)
{ {
return tlbcam_addrs[tlbcam_index - 1].limit - PAGE_OFFSET + 1; return tlbcam_addrs[tlbcam_index - 1].limit - PAGE_OFFSET + 1;
} }
......
...@@ -130,7 +130,7 @@ extern void wii_memory_fixups(void); ...@@ -130,7 +130,7 @@ extern void wii_memory_fixups(void);
*/ */
#ifdef CONFIG_PPC32 #ifdef CONFIG_PPC32
extern void MMU_init_hw(void); extern void MMU_init_hw(void);
extern unsigned long mmu_mapin_ram(unsigned long top); unsigned long mmu_mapin_ram(unsigned long base, unsigned long top);
#endif #endif
#ifdef CONFIG_PPC_FSL_BOOK3E #ifdef CONFIG_PPC_FSL_BOOK3E
......
...@@ -258,15 +258,15 @@ void __init mapin_ram(void) ...@@ -258,15 +258,15 @@ void __init mapin_ram(void)
#ifndef CONFIG_WII #ifndef CONFIG_WII
top = total_lowmem; top = total_lowmem;
s = mmu_mapin_ram(top); s = mmu_mapin_ram(0, top);
__mapin_ram_chunk(s, top); __mapin_ram_chunk(s, top);
#else #else
if (!wii_hole_size) { if (!wii_hole_size) {
s = mmu_mapin_ram(total_lowmem); s = mmu_mapin_ram(0, total_lowmem);
__mapin_ram_chunk(s, total_lowmem); __mapin_ram_chunk(s, total_lowmem);
} else { } else {
top = wii_hole_start; top = wii_hole_start;
s = mmu_mapin_ram(top); s = mmu_mapin_ram(0, top);
__mapin_ram_chunk(s, top); __mapin_ram_chunk(s, top);
top = memblock_end_of_DRAM(); top = memblock_end_of_DRAM();
......
...@@ -73,7 +73,7 @@ unsigned long p_block_mapped(phys_addr_t pa) ...@@ -73,7 +73,7 @@ unsigned long p_block_mapped(phys_addr_t pa)
return 0; return 0;
} }
unsigned long __init mmu_mapin_ram(unsigned long top) unsigned long __init mmu_mapin_ram(unsigned long base, unsigned long top)
{ {
unsigned long tot, bl, done; unsigned long tot, bl, done;
unsigned long max_size = (256<<20); unsigned long max_size = (256<<20);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment