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(-) _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox