summaryrefslogtreecommitdiffstats
path: root/hw/riscv/sifive_u.c
diff options
context:
space:
mode:
authorBin Meng2019-09-06 18:20:07 +0200
committerPalmer Dabbelt2019-09-17 17:42:47 +0200
commitef965ce23956a9e5cde5c9e91081484ec68a4139 (patch)
tree5014a028c3fdd96656e7be1a109e8f82b43dad7b /hw/riscv/sifive_u.c
parentriscv: sifive_u: Update hart configuration to reflect the real FU540 SoC (diff)
downloadqemu-ef965ce23956a9e5cde5c9e91081484ec68a4139.tar.gz
qemu-ef965ce23956a9e5cde5c9e91081484ec68a4139.tar.xz
qemu-ef965ce23956a9e5cde5c9e91081484ec68a4139.zip
riscv: sifive_u: Update PLIC hart topology configuration string
With heterogeneous harts config, the PLIC hart topology configuration string are "M,MS,.." because of the monitor hart #0. Suggested-by: Fabien Chouteau <chouteau@adacore.com> Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
Diffstat (limited to 'hw/riscv/sifive_u.c')
-rw-r--r--hw/riscv/sifive_u.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c
index 7fc126bc06..d80b203cc1 100644
--- a/hw/riscv/sifive_u.c
+++ b/hw/riscv/sifive_u.c
@@ -424,10 +424,11 @@ static void riscv_sifive_u_soc_realize(DeviceState *dev, Error **errp)
plic_hart_config = g_malloc0(plic_hart_config_len);
for (i = 0; i < ms->smp.cpus; i++) {
if (i != 0) {
- strncat(plic_hart_config, ",", plic_hart_config_len);
+ strncat(plic_hart_config, "," SIFIVE_U_PLIC_HART_CONFIG,
+ plic_hart_config_len);
+ } else {
+ strncat(plic_hart_config, "M", plic_hart_config_len);
}
- strncat(plic_hart_config, SIFIVE_U_PLIC_HART_CONFIG,
- plic_hart_config_len);
plic_hart_config_len -= (strlen(SIFIVE_U_PLIC_HART_CONFIG) + 1);
}