ovni/test/emu/nosv/same-subsystem.c
Rodrigo Arias c13d57f0f6 Fix for nOS-V with ovni.level=2
When running without all the subsystem events enabled in nOS-V, it is
possible to emit two consecutive VTx events, which would push twice the
same value ST_TASK_BODY into the subsystem channel. This change relaxes
the subsystem channel to accept duplicate stacked values. A regression
test is also added.

Reported-By: Raúl Peñacoba Veigas <raul.penacoba@bsc.es>
2023-11-14 17:26:43 +01:00

31 lines
692 B
C

/* Copyright (c) 2023 Barcelona Supercomputing Center (BSC)
* SPDX-License-Identifier: GPL-3.0-or-later */
#include <stdint.h>
#include "compat.h"
#include "instr.h"
#include "instr_nosv.h"
/* With the introduction of ovni.level in nOS-V, we can have the
* situation in which two VTx events are emitted without the subsystem
* events. This causes the subsystem channel to push twice the same
* value ST_TASK_BODY. */
int
main(void)
{
instr_start(0, 1);
instr_nosv_type_create(10);
instr_nosv_task_create(1, 10);
instr_nosv_task_create(2, 10);
instr_nosv_task_execute(1);
instr_nosv_task_execute(2);
instr_nosv_task_end(2);
instr_nosv_task_end(1);
instr_end();
return 0;
}