[U-Boot] [PATCH v15 00/10] arm64 patch
fenghua at phytium.com.cn
fenghua at phytium.com.cn
Fri Nov 15 04:45:49 CET 2013
From: David Feng <fenghua at phytium.com.cn>
Changes for v15:
- modify boot process, u-boot will run at the highest
exception level until it prepare jump to OS.
- Fix a few bugs in cache.S.These bug is reported by
York Sun <yorksun at freescale.com> and Scott Wood
<scottwood at freescale.com>.
- when booting, slaves will wait on WFI, master wakeup
slaves by SGI interrupt.
- add generic_timer.c to utilize the newest timer architecture.
- add gic.S to support gic initialization and interrupt
operations, currently only support GICv2.
Changes for v14:
- Merge rela relocation patches from Scott Wood
<scottwood at freescale.com>.
- Remove all CONFIG_NEED_MANUAL_RELOC and other fixups
due to manual relocation. With rela relocation patches
them are not needed.
- Fix the bug of MEMORY_ATTRIBUTES definition due to
assembler. That need put brackets around (MT_NORMAL*8).
Otherwise the result is wrong.This bug is reported by
York Sun <yorksun at freescale.com>.
- -msoft-float is not supported by aarch64-gcc,
make a test though $(call cc-option,-msoft-float).
- Adjust the virtual address space to 42 bits.
- Filter armv8 boards from LIST_arm in MAKEALL.
- remove gpio.h in asm/arch-armv8/ and move mmu.h to
asm/armv8/ directory.
- remove vexpress64.dts from this patch, it could be
accessed from linux kernel.
Changes for v13:
- fix the bug of board_r.c and arm/lib/board.c due to
CONFIG_NEED_MANUAL_RELOC. adjust initr_serial() in board_r.c
to the first entry of init_sequence_r[] and relocate
serial_initialize() in arm/lib/board.c, routines of serial_device
should be relocated firstly by serial_initialize(), so that printf
access the correct puts function, otherwise uninitialized
serial_current will be selected as the output device.
- fix the bug of dcache_enable(). after mmu_setup the sctrl
register value should be fetched again because it has been
modifed by mmu_seup() function. This bug is reported by York Sun
<yorksun at freescale.com>.
- add macro branch_if_slave to macro.h, it choose processor
with all zero affinity value as the master and is used in start.S.
Changes for v12:
- custom the patches to new format boards.cfg.
Changes for v11:
- Replace CONFIG_ARMV8 with CONFIG_ARM64. Currently,
it's hard to distinguish what is armv8 specific and
what is aarch64 specific, so we use CONFIG_ARM64
only, no CONFIG_ARMV8 used.
- rename README.armv8 with README.arm64 and make some modification.
Changes for v10:
- add weak definition to include/linux/linkage.h and make
setup_el2/setup_el3/lowlevel_init weak routines,
so them can be easily overridden by processor specific code.
- modify s-o-f of 0002-board-support-of-vexpress_aemv8a which
use wrong mail address of Bhupesh Sharma.
Changes for v9:
- add Signed-off-by information to patch "board support of
vexpress_aemv8a" which SMC91111 support is integrated
from Sharma Bhupesh's patch.
- adjust pt_regs struct and add exception state
preservation in exception.S.
Changes for v8:
- Integrate SMC91111 patch of sharma bhupesh.
- remove v8_outer_cache* which is not need currently.
- Change license tag.
- Mov crt0.S/relocate.S/interrupts.c to arm/lib and
rename them with _64 suffix.
- Make el3/el2 initializing process of start.S as
two separate routines. It could be easier to be
replaced with processor specific codes.
- Remove exception stack save and restore routine,
it is unnecessary now.
- simplify __weak function declaration.
Changes for v7:
- Check the patches with checkpatch.pl and get rid of
almost all warnings. There are a few warnings still,
but I think it should be that.
- change printf format in cmd_pxe.c, use %zd indtead
of %ld to format size_t type variable.
- add macro PGTABLE_SIZE to identify tlb table size.
Changes for v6:
- Make modification to inappropriate licensed file
and bugs according to ScottWood's advice.
Thanks Scott for his checking to these patches.
- Enable u-boot's running at EL1.
- Get rid of compiling warnings originated from cmd_pxe.c.
Changes for v5:
- fix the generic board_f.c, remove zero_global_data
from init_sequence_f array and move it to board_init_f()
function with CONFIG_X86 switch. The previous fixup is
inaccurate.
- Replace __ARMEB__ with __AARCH64EB__ in byteorder.h
and unaligned.h, gcc for aarch64 use __AARCH64EB__ and
__AARCH64EL__ to identify endian.
- Some modification to README.armv8
Changes for v4:
- merge arm64 to arm architecture.
David Feng (10):
fdt_support: 64bit initrd start address support
cmd_pxe: remove compiling warnings
add weak entry definition
arm64: Add tool to statically apply RELA relocations
arm64: Turn u-boot.bin back into an ELF file after relocate-rela
arm64: Make checkarmreloc accept arm64 relocations
arm64: core support
arm64: generic board support
arm64: board support of vexpress_aemv8a
arm64: MAKEALL, filter armv8 boards from LIST_arm
MAKEALL | 12 +-
Makefile | 39 +++++-
arch/arm/config.mk | 3 +-
arch/arm/cpu/armv8/Makefile | 17 +++
arch/arm/cpu/armv8/cache.S | 136 +++++++++++++++++++
arch/arm/cpu/armv8/cache_v8.c | 219 +++++++++++++++++++++++++++++++
arch/arm/cpu/armv8/config.mk | 15 +++
arch/arm/cpu/armv8/cpu.c | 43 ++++++
arch/arm/cpu/armv8/exceptions.S | 113 ++++++++++++++++
arch/arm/cpu/armv8/generic_timer.c | 31 +++++
arch/arm/cpu/armv8/gic.S | 106 +++++++++++++++
arch/arm/cpu/armv8/start.S | 164 +++++++++++++++++++++++
arch/arm/cpu/armv8/tlb.S | 34 +++++
arch/arm/cpu/armv8/transition.S | 83 ++++++++++++
arch/arm/cpu/armv8/u-boot.lds | 89 +++++++++++++
arch/arm/include/asm/armv8/mmu.h | 111 ++++++++++++++++
arch/arm/include/asm/byteorder.h | 12 ++
arch/arm/include/asm/cache.h | 5 +
arch/arm/include/asm/config.h | 6 +
arch/arm/include/asm/gic.h | 49 ++++++-
arch/arm/include/asm/global_data.h | 6 +-
arch/arm/include/asm/io.h | 15 ++-
arch/arm/include/asm/macro.h | 53 ++++++++
arch/arm/include/asm/posix_types.h | 10 ++
arch/arm/include/asm/proc-armv/ptrace.h | 21 +++
arch/arm/include/asm/proc-armv/system.h | 59 ++++++++-
arch/arm/include/asm/system.h | 84 ++++++++++++
arch/arm/include/asm/types.h | 4 +
arch/arm/include/asm/u-boot.h | 4 +
arch/arm/include/asm/unaligned.h | 2 +-
arch/arm/lib/Makefile | 20 ++-
arch/arm/lib/board.c | 7 +-
arch/arm/lib/bootm.c | 24 ++++
arch/arm/lib/crt0_64.S | 113 ++++++++++++++++
arch/arm/lib/interrupts_64.c | 120 +++++++++++++++++
arch/arm/lib/relocate_64.S | 58 ++++++++
board/armltd/vexpress64/Makefile | 8 ++
board/armltd/vexpress64/vexpress64.c | 56 ++++++++
boards.cfg | 1 +
common/board_f.c | 20 ++-
common/cmd_pxe.c | 4 +-
common/fdt_support.c | 66 +++++-----
common/image.c | 1 +
doc/README.arm64 | 46 +++++++
examples/standalone/stubs.c | 15 +++
include/configs/vexpress_aemv8a.h | 189 ++++++++++++++++++++++++++
include/image.h | 1 +
include/linux/linkage.h | 4 +
tools/Makefile | 6 +
tools/relocate-rela.c | 189 ++++++++++++++++++++++++++
50 files changed, 2425 insertions(+), 68 deletions(-)
create mode 100644 arch/arm/cpu/armv8/Makefile
create mode 100644 arch/arm/cpu/armv8/cache.S
create mode 100644 arch/arm/cpu/armv8/cache_v8.c
create mode 100644 arch/arm/cpu/armv8/config.mk
create mode 100644 arch/arm/cpu/armv8/cpu.c
create mode 100644 arch/arm/cpu/armv8/exceptions.S
create mode 100644 arch/arm/cpu/armv8/generic_timer.c
create mode 100644 arch/arm/cpu/armv8/gic.S
create mode 100644 arch/arm/cpu/armv8/start.S
create mode 100644 arch/arm/cpu/armv8/tlb.S
create mode 100644 arch/arm/cpu/armv8/transition.S
create mode 100644 arch/arm/cpu/armv8/u-boot.lds
create mode 100644 arch/arm/include/asm/armv8/mmu.h
create mode 100644 arch/arm/lib/crt0_64.S
create mode 100644 arch/arm/lib/interrupts_64.c
create mode 100644 arch/arm/lib/relocate_64.S
create mode 100644 board/armltd/vexpress64/Makefile
create mode 100644 board/armltd/vexpress64/vexpress64.c
create mode 100644 doc/README.arm64
create mode 100644 include/configs/vexpress_aemv8a.h
create mode 100644 tools/relocate-rela.c
--
1.7.9.5
More information about the U-Boot
mailing list