[PATCH 00/78] ARM aarch64 updates
Sascha Hauer
s.hauer at pengutronix.de
Fri Mar 16 05:52:36 PDT 2018
Hi All,
Here is a massive update for the ARM aarch64 port. With the following
series the aarch64 port should be on par with the 32bit support.
With this aarch64 supports relocatable binaries, proper MMU support, DMA
cache maintenance operations, and finally starting a aarch64 Linux
image :)
This all has been developed on a i.MX8MQ EVK board. The i.MX8MQ patches
are currently evolving, but are not yet quite ready. DDR setup is still
very crude and pinmux is not yet working. NXP did a nice job with the
i.MX8MQ: It behaves very much like a i.MX6 with a different core, so
we already have most of the drivers and I could concentrate on the
aarch64 update. I hope I can send i.MX8 patches soon.
Sascha
Sascha Hauer (78):
ARM: Use obj-pbl- where appropriate
ARM: Add 64bit compilation alternative
ARM: return positive offset in get_runtime_offset()
ARM: mmu: include pgtable header from where it's needed
ARM: For relocatable image force TEXT_BASE 0x0
ARM: scroll past image end without ld_var
ARM: move away from ld_var
ARM: remove ld_var support
ARM: android image: Fix compiler warning on aarch64
ARM: bootm: Fix wrong format specifier
ARM: shutdown: Fix compiler warning
ARM: aarch64: silence compiler warning
ARM: aarch64: Add dummy naked attribute
ARM: get_runtime_offset() returns unsigned long
ARM: aarch64: Add runtime-offset
ARM: aarch64: implement get_pc()
ARM: Use generic ffz()
ARM: bitops: remove unnecessary #ifdef
ARM: aarch64: Do not use 32bit optimized fls
ARM: Move mmu_disable to mmu.c
debug_ll: support 64bit longs
ARM: aarch64: fix early cache flushing
ARM: aarch64: cache: Add v8_inv_dcache_range
ARM: aarch64: cache: no need to ifdef prototypes
ARM: Add function to return offset to global variables
ARM: remove function prototypes from the past
ARM: move linker variable declarations to sections.h
ARM: relocate_to_current_adr: Use unsigned long for variables
clocksource: Add armv8 generic timer support
ARM: aarch64: Add relocation support
ARM: aarch64: fix pbl linker script for aarch64
ARM: aarch64: mmu: Allocate page tables dynamically
ARM: aarch64: mmu: create_sections() takes size in bytes
ARM: aarch64: mmu: fix creation of flat mapping
ARM: aarch64: mmu: remove unused map_io_sections()
ARM: aarch64: mmu: by default map as device memory
ARM: aarch64: mmu: Fix mair register setting
ARM: aarch64: qemu board: remove unnecessary mapping
ARM: aarch64: mmu: enable mmu in generic code
ARM: aarch64: mmu: use PTE_* definitions from U-Boot
ARM: aarch64: mmu: Fix adding additional page table levels
ARM: aarch64: mmu: Fix PTE_TYPE_* flags
ARM: aarch64: mmu: Fix TCR setting
ARM: aarch64: mmu: No need to disable icache
ARM: aarch64: mmu: drop ttb check when disabling the MMU
ARM: aarch64: mmu: Fix disabling the MMU
ARM: Make some variables 64bit aware
dma: Use dma_addr_t as type for DMA addresses
dma: Add prototypes for dma mapping functions
ARM: implement dma mapping functions
ARM: aarch64: implement dma operations
ARM: aarch64: compile with strict alignment
ARM: aarch64: move aarch64 exception support to separate file
ARM: aarch64: fix exception level mixup
ARM: aarch64: Setup exception vectors in initcall
ARM: aarch64: lowlevel: Use switch_el
ARM: aarch64: remove dead code in linker script
ARM: aarch64: hide some config options
ARM: aarch64: implement show_regs()
ARM: aarch64: implement stacktraces
ARM: aarch64: mmu: Make zero page faulting
ARM: aarch64: Allow to leave exceptions
ARM: aarch64: Add esr strings
ARM: aarch64: print more information on sync exception
ARM: aarch64: implement ignoring data aborts
dt-bindings: Drop unused files
ARM: aarch64: Add barebox head support
filetype: Detect ARM aarch64 Linux images
common: Add functions to find free RAM
bootm: provide handlers the start of the OS image
ARM: aarch64: disable 32bit boot commands
ARM: aarch64: Add support to start kernel and barebox
ARM: cache-armv4: Fix wrong section
ARM: build: Remove duplicate file compilation
ARM: Create own cache.c file for aarch64
ARM: create separate mmu_64.h file
ARM: change mmu_early_enable() prototype
ARM: aarch64: Make early MMU support work
arch/arm/Kconfig | 9 +-
arch/arm/Makefile | 4 +-
arch/arm/boards/afi-gf/lowlevel.c | 2 +-
arch/arm/boards/altera-socdk/lowlevel.c | 2 +-
arch/arm/boards/at91sam9263ek/lowlevel_init.c | 2 +-
arch/arm/boards/at91sam9x5ek/lowlevel.c | 2 +-
arch/arm/boards/beaglebone/lowlevel.c | 2 +-
.../boards/boundarydevices-nitrogen6/lowlevel.c | 10 +-
arch/arm/boards/ccxmx53/lowlevel.c | 4 +-
arch/arm/boards/datamodul-edm-qmx6/lowlevel.c | 2 +-
arch/arm/boards/dfi-fs700-m60/lowlevel.c | 6 +-
arch/arm/boards/duckbill/lowlevel.c | 2 +-
arch/arm/boards/ebv-socrates/lowlevel.c | 2 +-
arch/arm/boards/efika-mx-smartbook/lowlevel.c | 2 +-
arch/arm/boards/element14-warp7/lowlevel.c | 2 +-
arch/arm/boards/eltec-hipercam/lowlevel.c | 2 +-
arch/arm/boards/embedsky-e9/lowlevel.c | 2 +-
arch/arm/boards/embest-riotboard/lowlevel.c | 2 +-
arch/arm/boards/freescale-mx51-babbage/lowlevel.c | 2 +-
arch/arm/boards/freescale-mx53-qsb/lowlevel.c | 4 +-
arch/arm/boards/freescale-mx53-vmx53/lowlevel.c | 2 +-
arch/arm/boards/freescale-mx6-sabresd/lowlevel.c | 2 +-
.../arm/boards/freescale-mx6sx-sabresdb/lowlevel.c | 2 +-
arch/arm/boards/freescale-mx7-sabresd/lowlevel.c | 2 +-
arch/arm/boards/freescale-vf610-twr/lowlevel.c | 2 +-
arch/arm/boards/friendlyarm-tiny210/lowlevel.c | 4 +-
arch/arm/boards/gateworks-ventana/lowlevel.c | 2 +-
arch/arm/boards/gk802/lowlevel.c | 2 +-
arch/arm/boards/globalscale-guruplug/lowlevel.c | 2 +-
arch/arm/boards/globalscale-mirabox/lowlevel.c | 2 +-
arch/arm/boards/karo-tx25/lowlevel.c | 2 +-
arch/arm/boards/karo-tx6x/lowlevel.c | 8 +-
arch/arm/boards/kindle-mx50/lowlevel.c | 6 +-
arch/arm/boards/lenovo-ix4-300d/lowlevel.c | 2 +-
arch/arm/boards/marvell-armada-xp-gp/lowlevel.c | 2 +-
arch/arm/boards/netgear-rn104/lowlevel.c | 2 +-
arch/arm/boards/netgear-rn2120/lowlevel.c | 2 +-
arch/arm/boards/phytec-phycard-imx27/lowlevel.c | 2 +-
arch/arm/boards/phytec-phycore-imx27/lowlevel.c | 2 +-
arch/arm/boards/phytec-phycore-imx7/lowlevel.c | 4 +-
arch/arm/boards/phytec-som-am335x/lowlevel.c | 6 +-
arch/arm/boards/phytec-som-imx6/lowlevel.c | 2 +-
arch/arm/boards/phytec-som-rk3288/lowlevel.c | 2 +-
arch/arm/boards/plathome-openblocks-a6/lowlevel.c | 2 +-
arch/arm/boards/plathome-openblocks-ax3/lowlevel.c | 2 +-
arch/arm/boards/qemu-virt64/init.c | 14 +-
arch/arm/boards/radxa-rock/lowlevel.c | 2 +-
arch/arm/boards/raspberry-pi/lowlevel.c | 4 +-
arch/arm/boards/reflex-achilles/lowlevel.c | 2 +-
arch/arm/boards/solidrun-cubox/lowlevel.c | 2 +-
arch/arm/boards/solidrun-microsom/lowlevel.c | 18 +-
arch/arm/boards/technexion-pico-hobbit/lowlevel.c | 2 +-
arch/arm/boards/terasic-de0-nano-soc/lowlevel.c | 2 +-
arch/arm/boards/terasic-sockit/lowlevel.c | 2 +-
arch/arm/boards/tqma53/lowlevel.c | 4 +-
arch/arm/boards/tqma6x/lowlevel.c | 4 +-
arch/arm/boards/turris-omnia/lowlevel.c | 2 +-
arch/arm/boards/udoo/lowlevel.c | 2 +-
arch/arm/boards/usi-topkick/lowlevel.c | 2 +-
arch/arm/boards/variscite-mx6/lowlevel.c | 2 +-
arch/arm/boards/vexpress/lowlevel.c | 2 +-
arch/arm/boards/vscom-baltos/lowlevel.c | 2 +-
arch/arm/boards/zii-imx6q-rdu2/lowlevel.c | 4 +-
arch/arm/boards/zii-vf610-dev/lowlevel.c | 2 +-
arch/arm/cpu/Makefile | 42 +---
arch/arm/cpu/cache-armv4.S | 2 +-
arch/arm/cpu/cache-armv8.S | 19 ++
arch/arm/cpu/cache.c | 16 --
arch/arm/cpu/cache_64.c | 35 +++
arch/arm/cpu/common.c | 56 +++--
arch/arm/cpu/cpu.c | 37 ++-
arch/arm/cpu/entry.c | 2 +-
arch/arm/cpu/exceptions_64.S | 48 +++-
arch/arm/cpu/interrupts.c | 48 +---
arch/arm/cpu/interrupts_64.c | 198 +++++++++++++++
arch/arm/cpu/lowlevel_64.S | 17 +-
arch/arm/cpu/mmu-early.c | 4 +-
arch/arm/cpu/mmu-early.h | 6 -
arch/arm/cpu/mmu-early_64.c | 88 +++++++
arch/arm/cpu/mmu.c | 38 ++-
arch/arm/cpu/mmu.h | 54 -----
arch/arm/cpu/mmu_64.c | 264 ++++++++++----------
arch/arm/cpu/mmu_64.h | 121 ++++++++++
arch/arm/cpu/no-mmu.c | 2 +-
arch/arm/cpu/sections.c | 11 +
arch/arm/cpu/setupc.S | 16 +-
arch/arm/cpu/setupc_64.S | 58 +++++
arch/arm/cpu/start-pbl.c | 14 +-
arch/arm/cpu/start.c | 6 +-
arch/arm/cpu/uncompress.c | 23 +-
arch/arm/include/asm/assembler64.h | 21 ++
arch/arm/include/asm/barebox-arm-head.h | 13 +
arch/arm/include/asm/barebox-arm.h | 41 +++-
arch/arm/include/asm/barebox.h | 4 +-
arch/arm/include/asm/bitops.h | 22 +-
arch/arm/include/asm/cache.h | 9 +-
arch/arm/include/asm/common.h | 10 +-
arch/arm/include/asm/esr.h | 117 +++++++++
arch/arm/include/asm/mmu.h | 19 +-
arch/arm/include/asm/pgtable64.h | 77 +++---
arch/arm/include/asm/ptrace.h | 19 ++
arch/arm/include/asm/sections.h | 30 +--
arch/arm/include/asm/stacktrace.h | 2 +
arch/arm/lib/pbl.lds.S | 36 +--
arch/arm/lib32/Makefile | 2 +
arch/arm/lib32/barebox.lds.S | 23 +-
arch/arm/{lib => lib32}/bootm.c | 4 +-
arch/arm/{lib => lib32}/bootu.c | 0
arch/arm/lib32/runtime-offset.S | 36 +--
arch/arm/lib64/Makefile | 2 +
arch/arm/lib64/armlinux.c | 120 ++++++++--
arch/arm/lib64/barebox.lds.S | 38 +--
arch/arm/lib64/runtime-offset.S | 19 ++
arch/arm/lib64/stacktrace.c | 86 +++++++
arch/arm/mach-imx/xload-common.c | 4 +-
arch/arm/mach-mvebu/include/mach/common.h | 4 +-
arch/arm/mach-tegra/include/mach/lowlevel.h | 2 +-
arch/arm/mach-tegra/tegra_avp_init.c | 2 +-
arch/mips/lib/dma-default.c | 4 +-
arch/openrisc/cpu/cpu.c | 5 -
commands/Kconfig | 4 +-
common/Kconfig | 2 +-
common/bootm.c | 10 +-
common/filetype.c | 3 +
common/memory.c | 51 ++++
drivers/clocksource/Kconfig | 5 +
drivers/clocksource/Makefile | 1 +
drivers/clocksource/armv8-timer.c | 65 +++++
include/bootm.h | 7 +
include/debug_ll.h | 2 +-
include/dma.h | 16 +-
include/dt-bindings/clock/tegra30-car.h | 265 ---------------------
include/dt-bindings/pinctrl/pinctrl-tegra.h | 45 ----
include/dt-bindings/pinctrl/rockchip.h | 32 ---
include/filetype.h | 1 +
include/memory.h | 5 +
136 files changed, 1611 insertions(+), 1106 deletions(-)
create mode 100644 arch/arm/cpu/cache_64.c
create mode 100644 arch/arm/cpu/interrupts_64.c
delete mode 100644 arch/arm/cpu/mmu-early.h
create mode 100644 arch/arm/cpu/mmu-early_64.c
create mode 100644 arch/arm/cpu/mmu_64.h
create mode 100644 arch/arm/cpu/sections.c
create mode 100644 arch/arm/include/asm/assembler64.h
create mode 100644 arch/arm/include/asm/esr.h
rename arch/arm/{lib => lib32}/bootm.c (99%)
rename arch/arm/{lib => lib32}/bootu.c (100%)
create mode 100644 arch/arm/lib64/runtime-offset.S
create mode 100644 arch/arm/lib64/stacktrace.c
create mode 100644 drivers/clocksource/armv8-timer.c
delete mode 100644 include/dt-bindings/clock/tegra30-car.h
delete mode 100644 include/dt-bindings/pinctrl/pinctrl-tegra.h
delete mode 100644 include/dt-bindings/pinctrl/rockchip.h
--
2.16.1
More information about the barebox
mailing list