[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