Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sh: Fix the offset from P1SEG/P2SEG where we map RAM

We need to map the gap between 0x00000000 and __MEMORY_START in the PMB,
as well as RAM.

With this change my 7785LCR board can switch to 32bit MMU mode at
runtime.

Signed-off-by: Matt Fleming <matt@console-pimps.org>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>

authored by

Matt Fleming and committed by
Paul Mundt
ef269b32 31051219

+7 -6
+7 -6
arch/sh/mm/pmb.c
··· 275 275 int __uses_jump_to_uncached pmb_init(void) 276 276 { 277 277 unsigned int i; 278 - long size; 278 + long size, ret; 279 279 280 280 jump_to_uncached(); 281 281 ··· 287 287 * P1 - provides a cached window onto physical memory 288 288 * P2 - provides an uncached window onto physical memory 289 289 */ 290 - size = pmb_remap(P2SEG, __MEMORY_START, __MEMORY_SIZE, 291 - PMB_WT | PMB_UB); 292 - BUG_ON(size != __MEMORY_SIZE); 290 + size = __MEMORY_START + __MEMORY_SIZE; 293 291 294 - size = pmb_remap(P1SEG, __MEMORY_START, __MEMORY_SIZE, PMB_C); 295 - BUG_ON(size != __MEMORY_SIZE); 292 + ret = pmb_remap(P1SEG, 0x00000000, size, PMB_C); 293 + BUG_ON(ret != size); 294 + 295 + ret = pmb_remap(P2SEG, 0x00000000, size, PMB_WT | PMB_UB); 296 + BUG_ON(ret != size); 296 297 297 298 ctrl_outl(0, PMB_IRMCR); 298 299