diff --git a/project/qemu-sifive-u-test.mk b/project/qemu-sifive-u-test.mk new file mode 100644 index 00000000..d41c002e --- /dev/null +++ b/project/qemu-sifive-u-test.mk @@ -0,0 +1,2 @@ +include project/target/qemu-sifive-u.mk +include project/virtual/test.mk diff --git a/project/target/qemu-sifive-u.mk b/project/target/qemu-sifive-u.mk new file mode 100644 index 00000000..04d750dc --- /dev/null +++ b/project/target/qemu-sifive-u.mk @@ -0,0 +1,3 @@ +TARGET := qemu-sifive-u +SUBARCH := 64 + diff --git a/target/qemu-sifive-u/include/platform/sifive.h b/target/qemu-sifive-u/include/platform/sifive.h new file mode 100644 index 00000000..718d1715 --- /dev/null +++ b/target/qemu-sifive-u/include/platform/sifive.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2019 Elliot Berman + * + * Use of this source code is governed by a MIT-style + * license that can be found in the LICENSE file or at + * https://opensource.org/licenses/MIT + */ + +#pragma once + +#define SIFIVE_IRQ_UART0 4 +#define SIFIVE_IRQ_UART1 5 + +#define SIFIVE_NUM_IRQS 127 + +#define CLINT_BASE 0x02000000 +#define PLIC_BASE 0x0c000000 +#define UART0_BASE 0x10010000 +#define UART1_BASE 0x10011000 + +#define PLIC_HART_IDX(hart) (2 * (hart)) \ No newline at end of file diff --git a/target/qemu-sifive-u/rules.mk b/target/qemu-sifive-u/rules.mk new file mode 100644 index 00000000..5384a39c --- /dev/null +++ b/target/qemu-sifive-u/rules.mk @@ -0,0 +1,23 @@ +LOCAL_DIR := $(GET_LOCAL_DIR) + +MODULE := $(LOCAL_DIR) + +PLATFORM := sifive +VARIANT := sifive_u + +GLOBAL_DEFINES += SIFIVE_FREQ=5000000 # 5 MHz + +MEMBASE ?= 0x080000000 +MEMSIZE ?= 0x200000000 # 8 GiB + +WITH_SMP := 0 +SMP_MAX_CPUS := 4 + +MODULE_SRCS := $(LOCAL_DIR)/target.c +# set some global defines based on capability +GLOBAL_DEFINES += PLATFORM_HAS_DYNAMIC_TIMER=1 +GLOBAL_DEFINES += ARCH_RISCV_CLINT_BASE=0x02000000 +GLOBAL_DEFINES += ARCH_RISCV_MTIME_RATE=10000000 # 10 MHz + +include make/module.mk + diff --git a/target/qemu-sifive-u/target.c b/target/qemu-sifive-u/target.c new file mode 100644 index 00000000..31e7c85c --- /dev/null +++ b/target/qemu-sifive-u/target.c @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2019 Elliot Berman + * + * Use of this source code is governed by a MIT-style + * license that can be found in the LICENSE file or at + * https://opensource.org/licenses/MIT + */ + +#include +#include +#include + +void target_early_init(void) { +} + +void target_init(void) { +} + + +