forked from Mirrors/opensbi

We add generic FDT based platform support which provides platform specific functionality based on the FDT passed by previous booting stage. By default, the generic FDT platform makes following assumptions: 1. platform FW_TEXT_START is 0x80000000 2. platform features are default 3. platform stack size is default 4. platform has no quirks or work-arounds The above assumptions (except 1) can be overridden by adding special platform callbacks which will be called based on the FDT root node compatible string. By default, we compile OpenSBI generic platform as follows: $ make PLATFORM=generic For a non-standard FW_TEXT_START, we can compile OpenSBI generic platform as follows: $ make PLATFORM=generic FW_TEXT_START=<non_standard_text_start> Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Atish Patra <atish.patra@wdc.com>
41 lines
1.1 KiB
Makefile
41 lines
1.1 KiB
Makefile
#
|
|
# SPDX-License-Identifier: BSD-2-Clause
|
|
#
|
|
# Copyright (c) 2020 Western Digital Corporation or its affiliates.
|
|
#
|
|
# Authors:
|
|
# Anup Patel <anup.patel@wdc.com>
|
|
#
|
|
|
|
# Compiler flags
|
|
platform-cppflags-y =
|
|
platform-cflags-y =
|
|
platform-asflags-y =
|
|
platform-ldflags-y =
|
|
|
|
# Command for platform specific "make run"
|
|
platform-runcmd = qemu-system-riscv$(PLATFORM_RISCV_XLEN) -M virt -m 256M \
|
|
-nographic -kernel $(build_dir)/platform/generic/firmware/fw_payload.elf
|
|
|
|
# Blobs to build
|
|
FW_TEXT_START=0x80000000
|
|
FW_DYNAMIC=y
|
|
FW_JUMP=y
|
|
ifeq ($(PLATFORM_RISCV_XLEN), 32)
|
|
# This needs to be 4MB aligned for 32-bit system
|
|
FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x400000)))
|
|
else
|
|
# This needs to be 2MB aligned for 64-bit system
|
|
FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x200000)))
|
|
endif
|
|
FW_JUMP_FDT_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x2200000)))
|
|
FW_PAYLOAD=y
|
|
ifeq ($(PLATFORM_RISCV_XLEN), 32)
|
|
# This needs to be 4MB aligned for 32-bit system
|
|
FW_PAYLOAD_OFFSET=0x400000
|
|
else
|
|
# This needs to be 2MB aligned for 64-bit system
|
|
FW_PAYLOAD_OFFSET=0x200000
|
|
endif
|
|
FW_PAYLOAD_FDT_ADDR=$(FW_JUMP_FDT_ADDR)
|