Skip to content

Commit 081acc6

Browse files
authored
Add more ISAs to MARS (#1265)
1 parent b09a401 commit 081acc6

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

simulator/kernel/mars/mars_kernel.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <fstream>
1414
#include <string>
1515
#include <unordered_map>
16+
#include <unordered_set>
1617
#include <vector>
1718

1819
class MARSKernel : public BaseKernel {
@@ -247,12 +248,19 @@ void MARSKernel::connect_mars_handler()
247248
elf_loader.load_to( mem.get(), 0x8'0000'0180 - elf_loader.get_text_section_addr());
248249
}
249250

251+
static bool is_mips_le( std::string_view isa)
252+
{
253+
static std::unordered_set<std::string_view> isas =
254+
{ "mars", "mars64", "mips32le", "mips32", "mips64", "mips64le" };
255+
return isas.count( isa) > 0;
256+
}
257+
250258
void MARSKernel::connect_exception_handler()
251259
{
252260
auto isa = sim->get_isa();
253261
if ( isa == "riscv32" || isa == "riscv64")
254262
connect_riscv_handler();
255-
else if ( isa == "mars" || isa == "mars64" || isa == "mips32le" || isa == "mips32")
263+
else if ( is_mips_le( isa))
256264
connect_mars_handler();
257265
else
258266
throw UnsupportedISA( isa);

simulator/kernel/mars/t/unit_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ TEST_CASE( "MARS: unsupported syscall")
433433

434434
TEST_CASE( "MARS: unsupported isa")
435435
{
436-
auto sim = Simulator::create_simulator( "mips64", true);
436+
auto sim = Simulator::create_simulator( "mips64be", true);
437437
auto mars_kernel = create_mars_kernel( std::cin, std::cout, std::cerr);
438438
mars_kernel->set_simulator( sim);
439439
CHECK_THROWS_AS( mars_kernel->connect_exception_handler(), UnsupportedISA);

0 commit comments

Comments
 (0)