mirror of
https://github.com/torvalds/linux.git
synced 2024-11-08 21:21:47 +00:00
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>
38 lines
1.3 KiB
Makefile
38 lines
1.3 KiB
Makefile
#
|
|
# Makefile for the Linux/Xtensa kernel.
|
|
#
|
|
|
|
extra-y := head.o vmlinux.lds
|
|
|
|
obj-y := align.o entry.o irq.o coprocessor.o process.o ptrace.o \
|
|
setup.o signal.o syscall.o time.o traps.o vectors.o platform.o \
|
|
pci-dma.o
|
|
|
|
obj-$(CONFIG_KGDB) += xtensa-stub.o
|
|
obj-$(CONFIG_PCI) += pci.o
|
|
obj-$(CONFIG_MODULES) += xtensa_ksyms.o module.o
|
|
|
|
AFLAGS_head.o += -mtext-section-literals
|
|
|
|
# In the Xtensa architecture, assembly generates literals which must always
|
|
# precede the L32R instruction with a relative offset less than 256 kB.
|
|
# Therefore, the .text and .literal section must be combined in parenthesis
|
|
# in the linker script, such as: *(.literal .text).
|
|
#
|
|
# We need to post-process the generated vmlinux.lds scripts to convert
|
|
# *(xxx.text) to *(xxx.literal xxx.text) for the following text sections:
|
|
# .text .ref.text .*init.text .*exit.text .text.*
|
|
#
|
|
# Replicate rules in scripts/Makefile.build
|
|
|
|
sed-y = -e 's/\*(\(\.[a-z]*it\|\.ref\|\)\.text)/*(\1.literal \1.text)/g' \
|
|
-e 's/\.text\.unlikely/.literal.unlikely .text.unlikely/g' \
|
|
-e 's/\*(\(\.text\.[a-z]*\))/*(\1.literal \1)/g'
|
|
|
|
quiet_cmd__cpp_lds_S = LDS $@
|
|
cmd__cpp_lds_S = $(CPP) $(cpp_flags) -P -C -Uxtensa -D__ASSEMBLY__ $< \
|
|
| sed $(sed-y) >$@
|
|
|
|
$(obj)/vmlinux.lds: $(src)/vmlinux.lds.S FORCE
|
|
$(call if_changed_dep,_cpp_lds_S)
|