Age | Commit message (Collapse) | Author | Files | Lines |
|
The --extlib and --extension features require runtime dynamic linking
of externally compiled libraries. Spike main must make all symbols
of libriscv available for those libraries.
|
|
Plugins should now implement and register a device_factory_t to
configure how that device should be parsed from a FDT, and an optional
default DTS string.
This drops support for command-line flag-based device configuration
|
|
|
|
Commit 191634d285 changed the default kernel boot args from
"console=hvc0 earlycon=sbi" to "console=ttyS0 earlycon", but didn't
updated the spike usage help() function.
This commit introduces a new macro DEFAULT_KERNEL_BOOTARGS in order to
have a single definition. This macro is used everywhere in dts.cc and
spike.cc help() function.
Signed-off-by: Julien Olivain <ju.o@free.fr>
|
|
Disallow negative hartids, repeated hartids, and empty lists.
|
|
They aren't signed quantities.
|
|
The addition of Svadu support and removal of --mmu-dirty
command line flag results in the dirty_enabled configuration state
no longer being used. Remove the remnants of this state.
|
|
With the addition of Svadu support, the --mmu-dirty flag
no longer controls behavior of A/D updates to PTEs. Remove
the flag.
|
|
|
|
|
|
address space
|
|
|
|
this is to properly handle potential 64-bit overflow in (base + size)
expression
|
|
The method can simplify proper processing of sitiations when
(base + size) overflows 64-bit interger.
|
|
NFT. We also mark `base` and `size` fields as private.
|
|
NFC. The intention is for `base` and `size` fields of mem_cfg_t
to be private members. This is the fist part of this commit.
|
|
|
|
|
|
They don't do anything yet.
|
|
This reduces boilerplate as we add additional options.
|
|
It's just dead code. (Dependences on headers are auto-generated as
`.d` files.)
|
|
chaining
This step is to ensure that removing config.h out of headers will not cause regressions.
|
|
|
|
This reduces dependencies on config.h in sim.h
|
|
This commit simplifies the codebase by factoring out memory merging and
intersection checking routines into separate functions. This allows us
to check for corner cases more easily.
|
|
Do not allow memory regions larger than (1ull << MAX_PADDR_BITS)
|
|
Other regions are inaccessible to the hardware being modeled
|
|
|
|
Set target endianess in constructors
|
|
16 B suffices to subsume all aligned accesses (including the Q extension).
Spike does not actually rely on this property, but in some real systems,
it is impractical to guarantee atomicity across cache lines.
4096 B suffices to prevent cache lines from spanning pages (which would
require multiple TLB accesses). This one is a bug fix, since we were
not performing multiple TLB accesses in this case.
|
|
|
|
|
|
Previously FPRs could always be accessed using abstract commands. I need
this to get coverage of some OpenOCD code that I broke. (See
https://github.com/riscv/riscv-openocd/pull/745)
|
|
|
|
|
|
|
|
https://github.com/rivosinc/hammer
Signed-off-by: Jerin Joy <joy@rivosinc.com>
|
|
|
|
|
|
|
|
|
|
Now we have hartids, we can remove nprocs so that we have a single
source of truth.
|
|
The only slightly difficult thing here is that hartids will always
be considered "overridden" by the time we get to sim_t::sim_t (either
overridden by a command line argument, or overridden when we set
default hartids just before the constructor). To allow downstream code
to distinguish between "I picked IDs 0, 1, 2, 3 because the user asked
for 4 processors" and "The user explicitly asked for IDs 0, 1, 2, 3",
we have an extra explicit_hartids field.
|
|
This moves another part of the "configuration" out of the generic
sim.cc code.
|
|
We now parse to a std::vector<int> and then set the "hartids" variable
to the result.
There is a slight functional change here, in that if you pass
"--hartids 1,2,3 --hartids 4,5", you'll now get 2 cores with ids of
4,5 rather than 5 cores with ids of 1,2,3,4,5. This is what most tools
do with repeated command line arguments and I suspect the old
behaviour was actually by accident!
|
|
|
|
Before, it had another copy, which is a little unnecessary.
|
|
The motivation here is mostly to enable a refactoring where the memory
layout (sans allocated memory) gets passed to DTS/DTB code before we
ever allocate anything.
But it turns out to make merge_overlapping_memory_regions a bit
simpler, which is an added bonus.
|
|
|
|
|