[PATCH 0/3] Add basic support for arm64
Raphael Poggi
poggi.raph at gmail.com
Thu May 19 18:11:06 PDT 2016
Hello,
This patch series introduces a basic support for arm64.
[PATCH 1/3] arch: add minimal aarch64 support :
Introduce new architecture by creating a new root directory,
I choose this approach for now, because it is simpler for now, maybe later we will merge this in arch/arm.
The current machine supported is only the virt machine from qemu
(I don't have any arm64 hardware, so, tests on real hardware are welcome).
[PATCH 2/3] arm64: add basic mmu support :
This patch adds a basic support for the mmu, by basic I mean,
no DMA cache handling and no remapping of memory region is supported.
The current mmu configuration is : 4KB granularity, 3 lookup level and 33 bits per VA.
I choose this setting up because I think it is quiet similar as the one in Linux Kernel,
and my code is based on coreboot and u-boot (they also use this setting).
There is some issue in the code, for example, calling "tlb_invalidate" seems to crash my qemu vm.
Moreover, I don't have experience of cache managing, so any help on that are welcome.
[PATCH 3/3] arm64: board: virt: set up mmu :
This patch sets up the mmu for the machine virt from qemu.
I split up the mmu init calling by mmu_initcall and the mmu enabling.
The reason is, if I enable the mmu too early, barebox will crash because of
the CFI Flash (and AMBA) driver will try to access to memory not mapped.
Thanks,
Raphaël
arch/arm64/Kconfig | 140 +++++++
arch/arm64/Makefile | 109 +++++
arch/arm64/boards/Makefile | 2 +
arch/arm64/boards/virt/Kconfig | 8 +
arch/arm64/boards/virt/Makefile | 1 +
arch/arm64/boards/virt/env/bin/_update | 36 ++
arch/arm64/boards/virt/env/bin/boot | 38 ++
arch/arm64/boards/virt/env/bin/init | 20 +
arch/arm64/boards/virt/env/bin/update_kernel | 8 +
arch/arm64/boards/virt/env/bin/update_root | 8 +
arch/arm64/boards/virt/env/config | 38 ++
arch/arm64/boards/virt/env/init/mtdparts-nor | 11 +
arch/arm64/boards/virt/init.c | 67 ++++
arch/arm64/configs/virt_defconfig | 53 +++
arch/arm64/cpu/Kconfig | 54 +++
arch/arm64/cpu/Makefile | 25 ++
arch/arm64/cpu/cache-armv8.S | 168 ++++++++
arch/arm64/cpu/cache.c | 110 ++++++
arch/arm64/cpu/cpu.c | 87 ++++
arch/arm64/cpu/cpuinfo.c | 211 ++++++++++
arch/arm64/cpu/entry.c | 38 ++
arch/arm64/cpu/entry.h | 18 +
arch/arm64/cpu/exceptions.S | 127 ++++++
arch/arm64/cpu/interrupts.c | 156 ++++++++
arch/arm64/cpu/lowlevel.S | 43 ++
arch/arm64/cpu/mmu.c | 334 ++++++++++++++++
arch/arm64/cpu/mmu.h | 169 ++++++++
arch/arm64/cpu/mmuinfo.c | 104 +++++
arch/arm64/cpu/start-pbl.c | 102 +++++
arch/arm64/cpu/start.c | 247 ++++++++++++
arch/arm64/cpu/uncompress.c | 111 ++++++
arch/arm64/include/asm/armlinux.h | 43 ++
arch/arm64/include/asm/assembler.h | 116 ++++++
arch/arm64/include/asm/barebox-arm-head.h | 65 +++
arch/arm64/include/asm/barebox-arm.h | 165 ++++++++
arch/arm64/include/asm/barebox.h | 12 +
arch/arm64/include/asm/bitops.h | 48 +++
arch/arm64/include/asm/bitsperlong.h | 1 +
arch/arm64/include/asm/byteorder.h | 32 ++
arch/arm64/include/asm/cache-l2x0.h | 101 +++++
arch/arm64/include/asm/cache.h | 16 +
arch/arm64/include/asm/common.h | 48 +++
arch/arm64/include/asm/cputype.h | 100 +++++
arch/arm64/include/asm/debug_ll_pl011.h | 25 ++
arch/arm64/include/asm/dma.h | 46 +++
arch/arm64/include/asm/elf.h | 119 ++++++
arch/arm64/include/asm/errata.h | 79 ++++
arch/arm64/include/asm/gic.h | 128 ++++++
arch/arm64/include/asm/hardware/arm_timer.h | 38 ++
arch/arm64/include/asm/hardware/sp810.h | 68 ++++
arch/arm64/include/asm/io.h | 87 ++++
arch/arm64/include/asm/linkage.h | 11 +
arch/arm64/include/asm/memory.h | 19 +
arch/arm64/include/asm/mmu.h | 63 +++
arch/arm64/include/asm/module.h | 13 +
arch/arm64/include/asm/pgtable.h | 91 +++++
arch/arm64/include/asm/posix_types.h | 1 +
arch/arm64/include/asm/processor.h | 131 ++++++
arch/arm64/include/asm/ptrace.h | 34 ++
arch/arm64/include/asm/sections.h | 34 ++
arch/arm64/include/asm/semihosting.h | 19 +
arch/arm64/include/asm/setup.h | 216 ++++++++++
arch/arm64/include/asm/stacktrace.h | 16 +
arch/arm64/include/asm/string.h | 13 +
arch/arm64/include/asm/swab.h | 69 ++++
arch/arm64/include/asm/system.h | 125 ++++++
arch/arm64/include/asm/system_info.h | 194 +++++++++
arch/arm64/include/asm/types.h | 54 +++
arch/arm64/include/asm/unaligned.h | 19 +
arch/arm64/include/asm/unified.h | 127 ++++++
arch/arm64/include/asm/unwind.h | 51 +++
arch/arm64/lib/Makefile | 16 +
arch/arm64/lib/armlinux.c | 275 +++++++++++++
arch/arm64/lib/asm-offsets.c | 16 +
arch/arm64/lib/barebox.lds | 125 ++++++
arch/arm64/lib/barebox.lds.S | 125 ++++++
arch/arm64/lib/bootm.c | 572 +++++++++++++++++++++++++++
arch/arm64/lib/bootu.c | 44 +++
arch/arm64/lib/bootz.c | 136 +++++++
arch/arm64/lib/copy_template.S | 192 +++++++++
arch/arm64/lib/div0.c | 27 ++
arch/arm64/lib/memcpy.S | 74 ++++
arch/arm64/lib/memset.S | 215 ++++++++++
arch/arm64/lib/module.c | 98 +++++
arch/arm64/lib/pbl.lds.S | 96 +++++
arch/arm64/lib/runtime-offset.S | 52 +++
arch/arm64/lib/unwind.c | 349 ++++++++++++++++
arch/arm64/mach-virt/Kconfig | 15 +
arch/arm64/mach-virt/Makefile | 3 +
arch/arm64/mach-virt/devices.c | 30 ++
arch/arm64/mach-virt/include/mach/debug_ll.h | 24 ++
arch/arm64/mach-virt/include/mach/devices.h | 13 +
arch/arm64/mach-virt/lowlevel.c | 19 +
arch/arm64/mach-virt/reset.c | 24 ++
arch/arm64/pbl/Makefile | 58 +++
arch/arm64/pbl/piggy.gzip.S | 6 +
arch/arm64/pbl/piggy.lz4.S | 6 +
arch/arm64/pbl/piggy.lzo.S | 6 +
arch/arm64/pbl/piggy.shipped.S | 6 +
arch/arm64/pbl/piggy.xzkern.S | 6 +
include/asm-generic/sections.h | 6 +-
101 files changed, 7911 insertions(+), 3 deletions(-)
More information about the barebox
mailing list