platform: Remove spike directory

The OpenSBI generic platform works perfectly fine on the QEMU spike
machine and Spike emulator so let's remove dedicated Spike platform
from OpenSBI.

All Spike platform related documentation in OpenSBI will now suggest
using OpenSBI generic platform.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Bin Meng <bin.meng@windriver.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
Anup Patel 2020-05-01 12:15:50 +05:30 committed by Anup Patel
parent 13717a8e53
commit 65c06b026d
6 changed files with 12 additions and 140 deletions

View file

@ -40,5 +40,7 @@ RISC-V Platforms Using Generic Platform
---------------------------------------
* **QEMU RISC-V Virt Machine** (*[qemu_virt.md]*)
* **Spike** (*[spike.md]*)
[qemu_virt.md]: qemu_virt.md
[spike.md]: spike.md

View file

@ -9,7 +9,7 @@ on **Spike** simulator and QEMU Spike machine.
For more details, refer [Spike on GitHub](https://github.com/riscv/riscv-isa-sim)
To build the platform-specific library and firmware images, provide the
*PLATFORM=spike* parameter to the top level `make` command.
*PLATFORM=generic* parameter to the top level `make` command.
Platform Options
----------------
@ -23,12 +23,12 @@ Execution on Spike Simulator
Build:
```
make PLATFORM=spike
make PLATFORM=generic
```
Run:
```
spike build/platform/spike/firmware/fw_payload.elf
spike build/platform/generic/firmware/fw_payload.elf
```
**Linux Kernel Payload**
@ -38,12 +38,12 @@ Note: We assume that the Linux kernel is compiled using
Build:
```
make PLATFORM=spike FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
make PLATFORM=generic FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
```
Run:
```
spike --initrd <path_to_cpio_ramdisk> build/platform/spike/firmware/fw_payload.elf
spike --initrd <path_to_cpio_ramdisk> build/platform/generic/firmware/fw_payload.elf
```
Execution on QEMU RISC-V 64-bit
@ -53,13 +53,13 @@ Execution on QEMU RISC-V 64-bit
Build:
```
make PLATFORM=spike
make PLATFORM=generic
```
Run:
```
qemu-system-riscv64 -M spike -m 256M -nographic \
-kernel build/platform/spike/firmware/fw_payload.elf
-kernel build/platform/generic/firmware/fw_payload.elf
```
**Linux Kernel Payload**
@ -69,20 +69,20 @@ Note: We assume that the Linux kernel is compiled using
Build:
```
make PLATFORM=spike FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
make PLATFORM=generic FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
```
Run:
```
qemu-system-riscv64 -M spike -m 256M -nographic \
-kernel build/platform/spike/firmware/fw_payload.elf \
-kernel build/platform/generic/firmware/fw_payload.elf \
-initrd <path_to_cpio_ramdisk> \
-append "root=/dev/ram rw console=hvc0 earlycon=sbi"
```
or
```
qemu-system-riscv64 -M spike -m 256M -nographic \
-bios build/platform/spike/firmware/fw_jump.elf \
-bios build/platform/generic/firmware/fw_jump.elf \
-kernel <linux_build_directory>/arch/riscv/boot/Image \
-initrd <path_to_cpio_ramdisk> \
-append "root=/dev/ram rw console=hvc0 earlycon=sbi"

View file

@ -1,36 +0,0 @@
#
# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Western Digital Corporation or its affiliates.
#
# Compiler flags
platform-cppflags-y =
platform-cflags-y =
platform-asflags-y =
platform-ldflags-y =
# Command for platform specific "make run"
platform-runcmd = spike \
$(build_dir)/platform/spike/firmware/fw_payload.elf
# Blobs to build
FW_TEXT_START=0x80000000
FW_JUMP=y
ifeq ($(PLATFORM_RISCV_XLEN), 32)
# This needs to be 4MB aligned for 32-bit system
FW_JUMP_ADDR=0x80400000
else
# This needs to be 2MB aligned for 64-bit system
FW_JUMP_ADDR=0x80200000
endif
FW_JUMP_FDT_ADDR=0x82200000
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=0x82200000

View file

@ -1,7 +0,0 @@
#
# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Western Digital Corporation or its affiliates.
#
platform-objs-y += platform.o

View file

@ -1,86 +0,0 @@
/*
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2020 Western Digital Corporation or its affiliates.
*/
#include <sbi/sbi_platform.h>
#include <sbi_utils/sys/clint.h>
#include <sbi_utils/sys/htif.h>
/* clang-format off */
#define SPIKE_HART_COUNT 8
#define SPIKE_CLINT_ADDR 0x2000000
/* clang-format on */
static int spike_final_init(bool cold_boot)
{
return 0;
}
static int spike_console_init(void)
{
return 0;
}
static int spike_irqchip_init(bool cold_boot)
{
return 0;
}
static int spike_ipi_init(bool cold_boot)
{
int ret;
if (cold_boot) {
ret = clint_cold_ipi_init(SPIKE_CLINT_ADDR,
SPIKE_HART_COUNT);
if (ret)
return ret;
}
return clint_warm_ipi_init();
}
static int spike_timer_init(bool cold_boot)
{
int rc;
if (cold_boot) {
rc = clint_cold_timer_init(SPIKE_CLINT_ADDR,
SPIKE_HART_COUNT, TRUE);
if (rc)
return rc;
}
return clint_warm_timer_init();
}
const struct sbi_platform_operations platform_ops = {
.final_init = spike_final_init,
.console_putc = htif_putc,
.console_getc = htif_getc,
.console_init = spike_console_init,
.irqchip_init = spike_irqchip_init,
.ipi_send = clint_ipi_send,
.ipi_clear = clint_ipi_clear,
.ipi_init = spike_ipi_init,
.timer_value = clint_timer_value,
.timer_event_stop = clint_timer_event_stop,
.timer_event_start = clint_timer_event_start,
.timer_init = spike_timer_init,
.system_reset = htif_system_reset
};
const struct sbi_platform platform = {
.opensbi_version = OPENSBI_VERSION,
.platform_version = SBI_PLATFORM_VERSION(0x0, 0x01),
.name = "Spike",
.features = SBI_PLATFORM_DEFAULT_FEATURES,
.hart_count = SPIKE_HART_COUNT,
.hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE,
.platform_ops_addr = (unsigned long)&platform_ops
};

View file

@ -107,7 +107,6 @@ build_opensbi() {
BUILD_PLATFORM_SUBDIR+=("fpga/openpiton")
BUILD_PLATFORM_SUBDIR+=("andes/ae350")
BUILD_PLATFORM_SUBDIR+=("thead/c910")
BUILD_PLATFORM_SUBDIR+=("spike")
BUILD_PLATFORM_SUBDIR+=("generic")
;;
*)