e85e335f8f
MMUv3 comes out of reset with identity vaddr -> paddr mapping in the TLB way 6: Way 6 (512 MB) Vaddr Paddr ASID Attr RWX Cache ---------- ---------- ---- ---- --- ------- 0x00000000 0x00000000 0x01 0x03 RWX Bypass 0x20000000 0x20000000 0x01 0x03 RWX Bypass 0x40000000 0x40000000 0x01 0x03 RWX Bypass 0x60000000 0x60000000 0x01 0x03 RWX Bypass 0x80000000 0x80000000 0x01 0x03 RWX Bypass 0xa0000000 0xa0000000 0x01 0x03 RWX Bypass 0xc0000000 0xc0000000 0x01 0x03 RWX Bypass 0xe0000000 0xe0000000 0x01 0x03 RWX Bypass This patch adds remapping code at the reset vector or at the kernel _start (depending on CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX) that reconfigures MMUv3 as MMUv2: Way 5 (128 MB) Vaddr Paddr ASID Attr RWX Cache ---------- ---------- ---- ---- --- ------- 0xd0000000 0x00000000 0x01 0x07 RWX WB 0xd8000000 0x00000000 0x01 0x03 RWX Bypass Way 6 (256 MB) Vaddr Paddr ASID Attr RWX Cache ---------- ---------- ---- ---- --- ------- 0xe0000000 0xf0000000 0x01 0x07 RWX WB 0xf0000000 0xf0000000 0x01 0x03 RWX Bypass Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Chris Zankel <chris@zankel.net>
54 lines
1.1 KiB
ArmAsm
54 lines
1.1 KiB
ArmAsm
/*
|
|
* linux/arch/xtensa/boot/boot-elf/boot.lds.S
|
|
*
|
|
* Copyright (C) 2008 - 2013 by Tensilica Inc.
|
|
*
|
|
* Chris Zankel <chris@zankel.net>
|
|
* Marc Gauthier <marc@tensilica.com
|
|
* Pete Delaney <piet@tensilica.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#include <asm/vectors.h>
|
|
OUTPUT_ARCH(xtensa)
|
|
ENTRY(_ResetVector)
|
|
|
|
SECTIONS
|
|
{
|
|
.ResetVector.text XCHAL_RESET_VECTOR_VADDR :
|
|
{
|
|
*(.ResetVector.text)
|
|
}
|
|
|
|
.image KERNELOFFSET: AT (LOAD_MEMORY_ADDRESS)
|
|
{
|
|
_image_start = .;
|
|
*(image)
|
|
. = (. + 3) & ~ 3;
|
|
_image_end = . ;
|
|
}
|
|
|
|
.bss ((LOADADDR(.image) + SIZEOF(.image) + 3) & ~ 3):
|
|
{
|
|
__bss_start = .;
|
|
*(.sbss)
|
|
*(.scommon)
|
|
*(.dynbss)
|
|
*(.bss)
|
|
__bss_end = .;
|
|
}
|
|
|
|
/*
|
|
* This is a remapped copy of the Reset Vector Code.
|
|
* It keeps gdb in sync with the PC after switching
|
|
* to the temporary mapping used while setting up
|
|
* the V2 MMU mappings for Linux.
|
|
*/
|
|
.ResetVector.remapped_text 0x46000000 (INFO):
|
|
{
|
|
*(.ResetVector.remapped_text)
|
|
}
|
|
}
|