fpu_plus(mips32)

This commit is contained in:
2026-06-25 16:28:36 +08:00
parent 10a984d911
commit faa8458e2c
22 changed files with 268 additions and 111 deletions

Submodule lib/resources updated: 98eb8a3406...14b80cde0a

View File

@@ -8,10 +8,10 @@
".NETCoreApp,Version=v8.0": { ".NETCoreApp,Version=v8.0": {
"OptionsParser/1.0.0": { "OptionsParser/1.0.0": {
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0",
"Microsoft.NET.Test.Sdk": "16.9.1", "Microsoft.NET.Test.Sdk": "16.9.1",
"NUnit": "3.13.1", "NUnit": "3.13.1",
"NUnit3TestAdapter": "3.17.0", "NUnit3TestAdapter": "3.17.0"
"OptionsParser": "1.0.0"
}, },
"runtime": { "runtime": {
"OptionsParser.dll": {} "OptionsParser.dll": {}

View File

@@ -26,12 +26,12 @@
"Xwt": "1.0.0", "Xwt": "1.0.0",
"Xwt.Gtk3": "1.0.0", "Xwt.Gtk3": "1.0.0",
"libtftp": "1.0.0", "libtftp": "1.0.0",
"AntShell.Reference": "1.0.9669.26120", "AntShell.Reference": "1.0.9672.29300",
"BigGustave.Reference": "1.0.0.0", "BigGustave.Reference": "1.0.0.0",
"CookComputing.XmlRpcV2": "2.5.0.0", "CookComputing.XmlRpcV2": "2.5.0.0",
"CoSimulationPlugin.Reference": "1.0.0.0", "CoSimulationPlugin.Reference": "1.0.0.0",
"crypto.Reference": "1.9.0.0", "crypto.Reference": "1.9.0.0",
"CxxDemangler.Reference": "1.0.9669.26104", "CxxDemangler.Reference": "1.0.9672.29287",
"ELFSharp.Reference": "0.1.1.0", "ELFSharp.Reference": "0.1.1.0",
"FdtSharp.Reference": "0.1.0.0", "FdtSharp.Reference": "0.1.0.0",
"Infrastructure.Reference": "1.0.0.0", "Infrastructure.Reference": "1.0.0.0",
@@ -1954,10 +1954,10 @@
} }
} }
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"runtime": { "runtime": {
"AntShell.dll": { "AntShell.dll": {
"assemblyVersion": "1.0.9669.26120", "assemblyVersion": "1.0.9672.29300",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -1994,10 +1994,10 @@
} }
} }
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"runtime": { "runtime": {
"CxxDemangler.dll": { "CxxDemangler.dll": {
"assemblyVersion": "1.0.9669.26104", "assemblyVersion": "1.0.9672.29287",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -3134,7 +3134,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
@@ -3159,7 +3159,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""

View File

@@ -127,9 +127,23 @@ static void free_list(host_memory_block_lists_t **lists)
return; return;
} }
tlib_free((*lists)->elements); /*
tlib_free((*lists)->guest_to_host_nodes); * tlib_free is backed by Renode's C# SimpleMemoryManager, not by plain libc
tlib_free((*lists)->host_to_guest_nodes); * free. Unlike free(NULL), SimpleMemoryManager.Free(IntPtr.Zero) is an error,
* so guard every optional allocation before releasing it.
*/
if((*lists)->elements != NULL)
{
tlib_free((*lists)->elements);
}
if((*lists)->guest_to_host_nodes != NULL)
{
tlib_free((*lists)->guest_to_host_nodes);
}
if((*lists)->host_to_guest_nodes != NULL)
{
tlib_free((*lists)->host_to_guest_nodes);
}
tlib_free(*lists); tlib_free(*lists);
*lists = NULL; *lists = NULL;
@@ -143,6 +157,12 @@ void renode_set_host_blocks(host_memory_block_packed_t *blocks, int count)
old_mappings = lists; old_mappings = lists;
if(count <= 0) {
lists = NULL;
free_list(&old_mappings);
return;
}
new_mappings = tlib_malloc(sizeof(host_memory_block_lists_t)); new_mappings = tlib_malloc(sizeof(host_memory_block_lists_t));
new_mappings->size = count; new_mappings->size = count;
new_mappings->elements = tlib_malloc(sizeof(host_memory_block_t) * count); new_mappings->elements = tlib_malloc(sizeof(host_memory_block_t) * count);

View File

@@ -36,8 +36,8 @@ void cpu_reset(CPUState *env)
env->LO = 0; env->LO = 0;
// CP0寄存器 // CP0寄存器
env->CP0_Status = CP0_STATUS_ERL | CP0_STATUS_CU1; env->CP0_Status = CP0_STATUS_ERL | CP0_STATUS_CU1 | CP0_STATUS_BEV;
env->CP0_Cause = 0; env->CP0_Cause = (1 << 23); // Cause.IV = 1中断使用独立向量 0xBFC00400
env->CP0_EPC = 0; env->CP0_EPC = 0;
env->CP0_PRId = 0x00006302; env->CP0_PRId = 0x00006302;
env->CP0_Config0 = 0x80000000; env->CP0_Config0 = 0x80000000;
@@ -273,6 +273,24 @@ void helper_fpu_math(CPUState *env, uint32_t insn) {
case 0x05: res = (uint32_t)fst0 & 0x7FFFFFFF; break; // abs.s case 0x05: res = (uint32_t)fst0 & 0x7FFFFFFF; break; // abs.s
case 0x07: res = (uint32_t)fst0 ^ 0x80000000; break; // neg.s case 0x07: res = (uint32_t)fst0 ^ 0x80000000; break; // neg.s
case 0x08: res = float32_to_int64(wt0, &env->fp_status); break; // round.l.s case 0x08: res = float32_to_int64(wt0, &env->fp_status); break; // round.l.s
case 0x09: { // trunc.l.s - 单精度截断为长整数
res = (uint64_t)float32_to_int64(wt0, &env->fp_status);
break;
}
case 0x0A: { // ceil.l.s - 单精度向上取整为长整数
int old_mode = get_float_rounding_mode(&env->fp_status);
set_float_rounding_mode(float_round_up, &env->fp_status);
res = (uint64_t)float32_to_int64(wt0, &env->fp_status);
set_float_rounding_mode(old_mode, &env->fp_status);
break;
}
case 0x0B: { // floor.l.s - 单精度向下取整为长整数
int old_mode = get_float_rounding_mode(&env->fp_status);
set_float_rounding_mode(float_round_down, &env->fp_status);
res = (uint64_t)float32_to_int64(wt0, &env->fp_status);
set_float_rounding_mode(old_mode, &env->fp_status);
break;
}
case 0x10: { // movf.s - 如果FCC为假则传送 case 0x10: { // movf.s - 如果FCC为假则传送
uint32_t cc = (insn >> 18) & 0x7; uint32_t cc = (insn >> 18) & 0x7;
int fcc = (env->fcr31 >> (23 + cc)) & 1; int fcc = (env->fcr31 >> (23 + cc)) & 1;
@@ -300,7 +318,7 @@ void helper_fpu_math(CPUState *env, uint32_t insn) {
break; break;
} }
case 0x20: res = int32_to_float32((int32_t)fst0, &env->fp_status); break; // cvt.s.w case 0x20: res = int32_to_float32((int32_t)fst0, &env->fp_status); break; // cvt.s.w
case 0x21: res = int32_to_float64((int32_t)fst0, &env->fp_status); break; //cvt.d.w整数转双精度结果在单精度分支是因为源操作数是整数 case 0x21: res = float32_to_float64(wt0, &env->fp_status); break; // cvt.d.s单精度转双精度
case 0x24: res = (uint64_t)(uint32_t)float32_to_int32(wt0, &env->fp_status); break; // cvt.w.s case 0x24: res = (uint64_t)(uint32_t)float32_to_int32(wt0, &env->fp_status); break; // cvt.w.s
case 0x25: res = (uint64_t)(uint32_t)float32_to_int32(wt0, &env->fp_status); break; // cvt.l.s简化为32位 case 0x25: res = (uint64_t)(uint32_t)float32_to_int32(wt0, &env->fp_status); break; // cvt.l.s简化为32位
case 0x0C: { // round.w.s case 0x0C: { // round.w.s
@@ -377,6 +395,24 @@ void helper_fpu_math(CPUState *env, uint32_t insn) {
case 0x05: res = fst0 & 0x7FFFFFFFFFFFFFFFULL; break; // abs.d case 0x05: res = fst0 & 0x7FFFFFFFFFFFFFFFULL; break; // abs.d
case 0x07: res = fst0 ^ 0x8000000000000000ULL; break; // neg.d case 0x07: res = fst0 ^ 0x8000000000000000ULL; break; // neg.d
case 0x08: res = float64_to_int64(wt0, &env->fp_status); break; // round.l.d case 0x08: res = float64_to_int64(wt0, &env->fp_status); break; // round.l.d
case 0x09: { // trunc.l.d - 双精度截断为长整数
res = (uint64_t)float64_to_int64(wt0, &env->fp_status);
break;
}
case 0x0A: { // ceil.l.d - 双精度向上取整为长整数
int old_mode = get_float_rounding_mode(&env->fp_status);
set_float_rounding_mode(float_round_up, &env->fp_status);
res = (uint64_t)float64_to_int64(wt0, &env->fp_status);
set_float_rounding_mode(old_mode, &env->fp_status);
break;
}
case 0x0B: { // floor.l.d - 双精度向下取整为长整数
int old_mode = get_float_rounding_mode(&env->fp_status);
set_float_rounding_mode(float_round_down, &env->fp_status);
res = (uint64_t)float64_to_int64(wt0, &env->fp_status);
set_float_rounding_mode(old_mode, &env->fp_status);
break;
}
case 0x10: { // movf.d - 如果FCC为假则传送 case 0x10: { // movf.d - 如果FCC为假则传送
uint32_t cc = (insn >> 18) & 0x7; uint32_t cc = (insn >> 18) & 0x7;
int fcc = (env->fcr31 >> (23 + cc)) & 1; int fcc = (env->fcr31 >> (23 + cc)) & 1;

View File

@@ -361,6 +361,41 @@ static void disas_cop1(DisasContext *ctx, CPUState *env, uint32_t insn) {
} }
break; break;
case 0x03: // MFHC1 - 读浮点寄存器高 32 位到主 CPU
fprintf(stderr, "[MFHC1] PC=%08x insn=%08x rs=%d rt=%d rd=%d\n", ctx->pc, insn, rs, rt, rd);
if (!is_zero_reg(rt)) {
TCGv t0 = tcg_temp_new();
TCGv_i32 t32 = tcg_temp_new_i32();
tcg_gen_extrh_i64_i32(t32, fpu_gpr[rd]); // 直接取高 32 位
tcg_gen_ext_i32_tl(t0, t32);
tcg_gen_ext32s_tl(t0, t0);
store_gpr(rt, t0);
tcg_temp_free(t0);
tcg_temp_free_i32(t32);
}
break;
case 0x07: // MTHC1 - 写主 CPU 值到浮点寄存器高 32 位
fprintf(stderr, "[MTHC1] PC=%08x insn=%08x rs=%d rt=%d rd=%d\n", ctx->pc, insn, rs, rt, rd);
{
TCGv t0 = load_gpr(rt);
TCGv_i64 t64 = tcg_temp_new_i64();
TCGv_i64 t_mask = tcg_temp_new_i64();
TCGv_i64 t_val = tcg_temp_new_i64();
tcg_gen_extu_tl_i64(t_val, t0); // 零扩展到 64 位
tcg_gen_shli_i64(t_val, t_val, 32); // 左移 32 位到高半部分
tcg_gen_movi_i64(t_mask, 0xFFFFFFFF); // 低 32 位 mask
tcg_gen_and_i64(t64, fpu_gpr[rd], t_mask); // 保留低 32 位
tcg_gen_or_i64(fpu_gpr[rd], t64, t_val); // 合并
tcg_temp_free(t0);
tcg_temp_free_i64(t64);
tcg_temp_free_i64(t_mask);
tcg_temp_free_i64(t_val);
}
break;
case 0x02: // CFC1 (读控制寄存器) case 0x02: // CFC1 (读控制寄存器)
if (rd == 31 && !is_zero_reg(rt)) { if (rd == 31 && !is_zero_reg(rt)) {
TCGv t0 = tcg_temp_new(); TCGv t0 = tcg_temp_new();
@@ -420,6 +455,7 @@ static void disas_cop1(DisasContext *ctx, CPUState *env, uint32_t insn) {
break; break;
default: default:
fprintf(stderr, "[COP1 DEFAULT] PC=%08x insn=%08x rs=%d rt=%d rd=%d\n", ctx->pc, insn, rs, rt, rd);
generate_exception_end(ctx, EXCP_RI); generate_exception_end(ctx, EXCP_RI);
break; break;
} }
@@ -763,7 +799,7 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
break; break;
case 0x11: // COP1 case 0x11: // COP1
// 校验 CP0 Status.CU1 位 (假设你的 hflags 中 MIPS_HFLAG_FPU 代表 CU1 状态) fprintf(stderr, "[COP1] PC=%08x insn=%08x rs=%d rt=%d rd=%d\n", ctx->pc, insn, rs, rt, rd);
if (!(ctx->hflags & MIPS_HFLAG_FPU)) { if (!(ctx->hflags & MIPS_HFLAG_FPU)) {
// 门禁未开,操作系统拦截,触发浮点懒加载陷阱 // 门禁未开,操作系统拦截,触发浮点懒加载陷阱
generate_exception_end(ctx, EXCP_CpU); generate_exception_end(ctx, EXCP_CpU);
@@ -795,6 +831,7 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
break; break;
case 0x35: // LDC1 (Load Doubleword to Coprocessor 1) case 0x35: // LDC1 (Load Doubleword to Coprocessor 1)
{ {
fprintf(stderr, "[LDC1] PC=%08x insn=%08x rs=%d rt=%d imm=%d\n", ctx->pc, insn, rs, rt, imm);
TCGv t0 = load_gpr(rs); TCGv t0 = load_gpr(rs);
TCGv addr = tcg_temp_local_new(); TCGv addr = tcg_temp_local_new();
TCGv val_lo = tcg_temp_new(); TCGv val_lo = tcg_temp_new();
@@ -831,6 +868,7 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
case 0x3D: // SDC1 (Store Doubleword from Coprocessor 1) case 0x3D: // SDC1 (Store Doubleword from Coprocessor 1)
{ {
fprintf(stderr, "[SDC1] PC=%08x insn=%08x rs=%d rt=%d imm=%d\n", ctx->pc, insn, rs, rt, imm);
TCGv t0 = load_gpr(rs); TCGv t0 = load_gpr(rs);
TCGv addr = tcg_temp_local_new(); TCGv addr = tcg_temp_local_new();
TCGv val_lo = tcg_temp_new(); TCGv val_lo = tcg_temp_new();
@@ -968,7 +1006,26 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
case 0x01: // REGIMM case 0x01: // REGIMM
{ {
TCGv t0 = load_gpr(rs); TCGv t0 = load_gpr(rs);
if (rt == 0x00 || rt == 0x01 || rt == 0x10 || rt == 0x11) { /* Branch-Likely 变体rt=0x02(BLTZL), 0x03(BGEZL), 0x12(BLTZALL), 0x13(BGEZALL) */
if (rt == 0x02 || rt == 0x03 || rt == 0x12 || rt == 0x13) {
if (rt == 0x12 || rt == 0x13) { // Link
TCGv res = tcg_temp_new();
tcg_gen_movi_tl(res, ctx->pc + 8);
store_gpr(31, res);
tcg_temp_free(res);
}
TCGv res = tcg_temp_new();
if (rt == 0x02 || rt == 0x12) { // LT
tcg_gen_setcondi_tl(TCG_COND_LT, res, t0, 0);
} else { // GE
tcg_gen_setcondi_tl(TCG_COND_GE, res, t0, 0);
}
tcg_gen_st_tl(res, cpu_env, offsetof(CPUState, bcond));
ctx->btarget = ctx->pc + 4 + (imm << 2);
ctx->hflags |= MIPS_HFLAG_BC;
tcg_temp_free(res);
}
else if (rt == 0x00 || rt == 0x01 || rt == 0x10 || rt == 0x11) {
if (rt == 0x10 || rt == 0x11) { if (rt == 0x10 || rt == 0x11) {
TCGv res = tcg_temp_new(); TCGv res = tcg_temp_new();
tcg_gen_movi_tl(res, ctx->pc + 8); tcg_gen_movi_tl(res, ctx->pc + 8);
@@ -1031,6 +1088,29 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
} }
break; break;
case 0x14: // BEQL - Branch Equal Likely
case 0x15: // BNEL - Branch Not Equal Likely
{
/*
* Branch-Likely用 bcond/btarget 机制,和普通分支一样。
* 延迟槽正常执行,分支解析时根据 bcond 决定跳转还是 PC+8。
*/
TCGv t0 = load_gpr(rs);
TCGv t1 = load_gpr(rt);
TCGv res = tcg_temp_new();
tcg_gen_setcond_tl((op == 0x14) ? TCG_COND_EQ : TCG_COND_NE, res, t0, t1);
tcg_gen_st_tl(res, cpu_env, offsetof(CPUState, bcond));
ctx->btarget = ctx->pc + 4 + (imm << 2);
ctx->hflags |= MIPS_HFLAG_BC;
tcg_temp_free(t0);
tcg_temp_free(t1);
tcg_temp_free(res);
}
break;
case 0x06: // BLEZ case 0x06: // BLEZ
case 0x07: // BGTZ case 0x07: // BGTZ
{ {
@@ -1049,6 +1129,24 @@ static bool disas_insn(CPUState *env, DisasContext *ctx)
} }
break; break;
case 0x16: // BLEZL - Branch Less Equal Zero Likely
case 0x17: // BGTZL - Branch Greater Than Zero Likely
{
TCGv t0 = load_gpr(rs);
TCGv res = tcg_temp_new();
if (op == 0x16) tcg_gen_setcondi_tl(TCG_COND_LE, res, t0, 0);
else tcg_gen_setcondi_tl(TCG_COND_GT, res, t0, 0);
tcg_gen_st_tl(res, cpu_env, offsetof(CPUState, bcond));
ctx->btarget = ctx->pc + 4 + (imm << 2);
ctx->hflags |= MIPS_HFLAG_BC;
tcg_temp_free(t0);
tcg_temp_free(res);
}
break;
case 0x02: // J case 0x02: // J
case 0x03: // JAL case 0x03: // JAL
// 【修复】:保留 KSEG0 等内核空间地址的符号位,防止跳入 0 地址域 // 【修复】:保留 KSEG0 等内核空间地址的符号位,防止跳入 0 地址域

View File

@@ -60,6 +60,9 @@ void attach_free(void *free_callback)
void TCG_free(void *ptr) void TCG_free(void *ptr)
{ {
if(ptr == NULL) {
return;
}
_TCG_free(ptr); _TCG_free(ptr);
} }

View File

@@ -15,10 +15,10 @@
"System.ServiceModel.Duplex": "4.8.1", "System.ServiceModel.Duplex": "4.8.1",
"System.ServiceModel.Federation": "4.8.1", "System.ServiceModel.Federation": "4.8.1",
"System.ServiceModel.NetTcp": "4.8.1", "System.ServiceModel.NetTcp": "4.8.1",
"AntShell.Reference": "1.0.9669.26120", "AntShell.Reference": "1.0.9672.29300",
"BigGustave.Reference": "1.0.0.0", "BigGustave.Reference": "1.0.0.0",
"crypto.Reference": "1.9.0.0", "crypto.Reference": "1.9.0.0",
"CxxDemangler.Reference": "1.0.9669.26104", "CxxDemangler.Reference": "1.0.9672.29287",
"ELFSharp.Reference": "0.1.1.0", "ELFSharp.Reference": "0.1.1.0",
"FdtSharp.Reference": "0.1.0.0", "FdtSharp.Reference": "0.1.0.0",
"Infrastructure.Reference": "1.0.0.0", "Infrastructure.Reference": "1.0.0.0",
@@ -1782,10 +1782,10 @@
} }
} }
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"runtime": { "runtime": {
"AntShell.dll": { "AntShell.dll": {
"assemblyVersion": "1.0.9669.26120", "assemblyVersion": "1.0.9672.29300",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -1806,10 +1806,10 @@
} }
} }
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"runtime": { "runtime": {
"CxxDemangler.dll": { "CxxDemangler.dll": {
"assemblyVersion": "1.0.9669.26104", "assemblyVersion": "1.0.9672.29287",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -2841,7 +2841,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
@@ -2856,7 +2856,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""

View File

@@ -8,10 +8,10 @@
".NETCoreApp,Version=v8.0": { ".NETCoreApp,Version=v8.0": {
"OptionsParser/1.0.0": { "OptionsParser/1.0.0": {
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0",
"Microsoft.NET.Test.Sdk": "16.9.1", "Microsoft.NET.Test.Sdk": "16.9.1",
"NUnit": "3.13.1", "NUnit": "3.13.1",
"NUnit3TestAdapter": "3.17.0", "NUnit3TestAdapter": "3.17.0"
"OptionsParser": "1.0.0"
}, },
"runtime": { "runtime": {
"OptionsParser.dll": {} "OptionsParser.dll": {}

View File

@@ -8,10 +8,10 @@
".NETCoreApp,Version=v8.0": { ".NETCoreApp,Version=v8.0": {
"OptionsParser/1.0.0": { "OptionsParser/1.0.0": {
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0",
"Microsoft.NET.Test.Sdk": "16.9.1", "Microsoft.NET.Test.Sdk": "16.9.1",
"NUnit": "3.13.1", "NUnit": "3.13.1",
"NUnit3TestAdapter": "3.17.0", "NUnit3TestAdapter": "3.17.0"
"OptionsParser": "1.0.0"
}, },
"runtime": { "runtime": {
"OptionsParser.dll": {} "OptionsParser.dll": {}

View File

@@ -14,10 +14,10 @@
"System.ServiceModel.Duplex": "4.8.1", "System.ServiceModel.Duplex": "4.8.1",
"System.ServiceModel.Federation": "4.8.1", "System.ServiceModel.Federation": "4.8.1",
"System.ServiceModel.NetTcp": "4.8.1", "System.ServiceModel.NetTcp": "4.8.1",
"AntShell.Reference": "1.0.9669.26120", "AntShell.Reference": "1.0.9672.29300",
"BigGustave.Reference": "1.0.0.0", "BigGustave.Reference": "1.0.0.0",
"crypto.Reference": "1.9.0.0", "crypto.Reference": "1.9.0.0",
"CxxDemangler.Reference": "1.0.9669.26104", "CxxDemangler.Reference": "1.0.9672.29287",
"ELFSharp.Reference": "0.1.1.0", "ELFSharp.Reference": "0.1.1.0",
"FdtSharp.Reference": "0.1.0.0", "FdtSharp.Reference": "0.1.0.0",
"Infrastructure.Reference": "1.0.0.0", "Infrastructure.Reference": "1.0.0.0",
@@ -1781,10 +1781,10 @@
} }
} }
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"runtime": { "runtime": {
"AntShell.dll": { "AntShell.dll": {
"assemblyVersion": "1.0.9669.26120", "assemblyVersion": "1.0.9672.29300",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -1805,10 +1805,10 @@
} }
} }
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"runtime": { "runtime": {
"CxxDemangler.dll": { "CxxDemangler.dll": {
"assemblyVersion": "1.0.9669.26104", "assemblyVersion": "1.0.9672.29287",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -2840,7 +2840,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
@@ -2855,7 +2855,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""

View File

@@ -8,10 +8,10 @@
".NETCoreApp,Version=v8.0": { ".NETCoreApp,Version=v8.0": {
"OptionsParser/1.0.0": { "OptionsParser/1.0.0": {
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0",
"Microsoft.NET.Test.Sdk": "16.9.1", "Microsoft.NET.Test.Sdk": "16.9.1",
"NUnit": "3.13.1", "NUnit": "3.13.1",
"NUnit3TestAdapter": "3.17.0", "NUnit3TestAdapter": "3.17.0"
"OptionsParser": "1.0.0"
}, },
"runtime": { "runtime": {
"OptionsParser.dll": {} "OptionsParser.dll": {}

View File

@@ -11,10 +11,10 @@
"AntShell": "1.0.0", "AntShell": "1.0.0",
"Infrastructure": "1.0.0", "Infrastructure": "1.0.0",
"StyleCop.Analyzers": "1.1.118", "StyleCop.Analyzers": "1.1.118",
"AntShell.Reference": "1.0.9669.26120", "AntShell.Reference": "1.0.9672.29300",
"BigGustave.Reference": "1.0.0.0", "BigGustave.Reference": "1.0.0.0",
"crypto.Reference": "1.9.0.0", "crypto.Reference": "1.9.0.0",
"CxxDemangler.Reference": "1.0.9669.26104", "CxxDemangler.Reference": "1.0.9672.29287",
"ELFSharp.Reference": "0.1.1.0", "ELFSharp.Reference": "0.1.1.0",
"FdtSharp.Reference": "0.1.0.0", "FdtSharp.Reference": "0.1.0.0",
"Infrastructure.Reference": "1.0.0.0", "Infrastructure.Reference": "1.0.0.0",
@@ -1574,10 +1574,10 @@
} }
} }
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"runtime": { "runtime": {
"AntShell.dll": { "AntShell.dll": {
"assemblyVersion": "1.0.9669.26120", "assemblyVersion": "1.0.9672.29300",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -1598,10 +1598,10 @@
} }
} }
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"runtime": { "runtime": {
"CxxDemangler.dll": { "CxxDemangler.dll": {
"assemblyVersion": "1.0.9669.26104", "assemblyVersion": "1.0.9672.29287",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -2507,7 +2507,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
@@ -2522,7 +2522,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""

View File

@@ -8,10 +8,10 @@
".NETCoreApp,Version=v8.0": { ".NETCoreApp,Version=v8.0": {
"OptionsParser/1.0.0": { "OptionsParser/1.0.0": {
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0",
"Microsoft.NET.Test.Sdk": "16.9.1", "Microsoft.NET.Test.Sdk": "16.9.1",
"NUnit": "3.13.1", "NUnit": "3.13.1",
"NUnit3TestAdapter": "3.17.0", "NUnit3TestAdapter": "3.17.0"
"OptionsParser": "1.0.0"
}, },
"runtime": { "runtime": {
"OptionsParser.dll": {} "OptionsParser.dll": {}

View File

@@ -26,12 +26,12 @@
"Xwt": "1.0.0", "Xwt": "1.0.0",
"Xwt.Gtk3": "1.0.0", "Xwt.Gtk3": "1.0.0",
"libtftp": "1.0.0", "libtftp": "1.0.0",
"AntShell.Reference": "1.0.9669.26120", "AntShell.Reference": "1.0.9672.29300",
"BigGustave.Reference": "1.0.0.0", "BigGustave.Reference": "1.0.0.0",
"CookComputing.XmlRpcV2": "2.5.0.0", "CookComputing.XmlRpcV2": "2.5.0.0",
"CoSimulationPlugin.Reference": "1.0.0.0", "CoSimulationPlugin.Reference": "1.0.0.0",
"crypto.Reference": "1.9.0.0", "crypto.Reference": "1.9.0.0",
"CxxDemangler.Reference": "1.0.9669.26104", "CxxDemangler.Reference": "1.0.9672.29287",
"ELFSharp.Reference": "0.1.1.0", "ELFSharp.Reference": "0.1.1.0",
"FdtSharp.Reference": "0.1.0.0", "FdtSharp.Reference": "0.1.0.0",
"Infrastructure.Reference": "1.0.0.0", "Infrastructure.Reference": "1.0.0.0",
@@ -1954,10 +1954,10 @@
} }
} }
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"runtime": { "runtime": {
"AntShell.dll": { "AntShell.dll": {
"assemblyVersion": "1.0.9669.26120", "assemblyVersion": "1.0.9672.29300",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -1994,10 +1994,10 @@
} }
} }
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"runtime": { "runtime": {
"CxxDemangler.dll": { "CxxDemangler.dll": {
"assemblyVersion": "1.0.9669.26104", "assemblyVersion": "1.0.9672.29287",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -3134,7 +3134,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
@@ -3159,7 +3159,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""

View File

@@ -16,11 +16,11 @@
"NUnit3TestAdapter": "3.17.0", "NUnit3TestAdapter": "3.17.0",
"Renode": "1.0.0", "Renode": "1.0.0",
"UnitTests": "1.0.0", "UnitTests": "1.0.0",
"AntShell.Reference": "1.0.9669.26120", "AntShell.Reference": "1.0.9672.29300",
"BigGustave.Reference": "1.0.0.0", "BigGustave.Reference": "1.0.0.0",
"CoSimulationPlugin.Reference": "1.0.0.0", "CoSimulationPlugin.Reference": "1.0.0.0",
"crypto.Reference": "1.9.0.0", "crypto.Reference": "1.9.0.0",
"CxxDemangler.Reference": "1.0.9669.26104", "CxxDemangler.Reference": "1.0.9672.29287",
"ELFSharp.Reference": "0.1.1.0", "ELFSharp.Reference": "0.1.1.0",
"FdtSharp.Reference": "0.1.0.0", "FdtSharp.Reference": "0.1.0.0",
"Infrastructure.Reference": "1.0.0.0", "Infrastructure.Reference": "1.0.0.0",
@@ -28,7 +28,7 @@
"Migrant.Reference": "0.14.0.0", "Migrant.Reference": "0.14.0.0",
"OptionsParser.Reference": "0.1.0.0", "OptionsParser.Reference": "0.1.0.0",
"PacketDotNet.Reference": "0.13.0.0", "PacketDotNet.Reference": "0.13.0.0",
"Renode.Reference": "1.16.0.26170", "Renode.Reference": "1.16.0.29349",
"SampleCommandPlugin.Reference": "1.0.0.0", "SampleCommandPlugin.Reference": "1.0.0.0",
"Sprache": "2.1.0.0", "Sprache": "2.1.0.0",
"SystemCPlugin.Reference": "1.0.0.0", "SystemCPlugin.Reference": "1.0.0.0",
@@ -2035,10 +2035,10 @@
} }
} }
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"runtime": { "runtime": {
"AntShell.dll": { "AntShell.dll": {
"assemblyVersion": "1.0.9669.26120", "assemblyVersion": "1.0.9672.29300",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -2067,10 +2067,10 @@
} }
} }
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"runtime": { "runtime": {
"CxxDemangler.dll": { "CxxDemangler.dll": {
"assemblyVersion": "1.0.9669.26104", "assemblyVersion": "1.0.9672.29287",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -2131,10 +2131,10 @@
} }
} }
}, },
"Renode.Reference/1.16.0.26170": { "Renode.Reference/1.16.0.29349": {
"runtime": { "runtime": {
"Renode.dll": { "Renode.dll": {
"assemblyVersion": "1.16.0.26170", "assemblyVersion": "1.16.0.29349",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -3255,7 +3255,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
@@ -3275,7 +3275,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
@@ -3315,7 +3315,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"Renode.Reference/1.16.0.26170": { "Renode.Reference/1.16.0.29349": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""

View File

@@ -18,11 +18,11 @@
"NUnit3TestAdapter": "3.17.0", "NUnit3TestAdapter": "3.17.0",
"Renode": "1.0.0", "Renode": "1.0.0",
"StyleCop.Analyzers": "1.1.118", "StyleCop.Analyzers": "1.1.118",
"AntShell.Reference": "1.0.9669.26120", "AntShell.Reference": "1.0.9672.29300",
"BigGustave.Reference": "1.0.0.0", "BigGustave.Reference": "1.0.0.0",
"CoSimulationPlugin.Reference": "1.0.0.0", "CoSimulationPlugin.Reference": "1.0.0.0",
"crypto.Reference": "1.9.0.0", "crypto.Reference": "1.9.0.0",
"CxxDemangler.Reference": "1.0.9669.26104", "CxxDemangler.Reference": "1.0.9672.29287",
"ELFSharp.Reference": "0.1.1.0", "ELFSharp.Reference": "0.1.1.0",
"FdtSharp.Reference": "0.1.0.0", "FdtSharp.Reference": "0.1.0.0",
"Infrastructure.Reference": "1.0.0.0", "Infrastructure.Reference": "1.0.0.0",
@@ -31,7 +31,7 @@
"Migrant.Reference": "0.14.0.0", "Migrant.Reference": "0.14.0.0",
"OptionsParser.Reference": "0.1.0.0", "OptionsParser.Reference": "0.1.0.0",
"PacketDotNet.Reference": "0.13.0.0", "PacketDotNet.Reference": "0.13.0.0",
"Renode.Reference": "1.16.0.26170", "Renode.Reference": "1.16.0.29349",
"SampleCommandPlugin.Reference": "1.0.0.0", "SampleCommandPlugin.Reference": "1.0.0.0",
"SystemCPlugin.Reference": "1.0.0.0", "SystemCPlugin.Reference": "1.0.0.0",
"TermSharp.Reference": "0.0.0.0", "TermSharp.Reference": "0.0.0.0",
@@ -2018,10 +2018,10 @@
} }
} }
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"runtime": { "runtime": {
"AntShell.dll": { "AntShell.dll": {
"assemblyVersion": "1.0.9669.26120", "assemblyVersion": "1.0.9672.29300",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -2050,10 +2050,10 @@
} }
} }
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"runtime": { "runtime": {
"CxxDemangler.dll": { "CxxDemangler.dll": {
"assemblyVersion": "1.0.9669.26104", "assemblyVersion": "1.0.9672.29287",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -2122,10 +2122,10 @@
} }
} }
}, },
"Renode.Reference/1.16.0.26170": { "Renode.Reference/1.16.0.29349": {
"runtime": { "runtime": {
"Renode.dll": { "Renode.dll": {
"assemblyVersion": "1.16.0.26170", "assemblyVersion": "1.16.0.29349",
"fileVersion": "0.0.0.0" "fileVersion": "0.0.0.0"
} }
} }
@@ -3232,7 +3232,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"AntShell.Reference/1.0.9669.26120": { "AntShell.Reference/1.0.9672.29300": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
@@ -3252,7 +3252,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"CxxDemangler.Reference/1.0.9669.26104": { "CxxDemangler.Reference/1.0.9672.29287": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
@@ -3297,7 +3297,7 @@
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""
}, },
"Renode.Reference/1.16.0.26170": { "Renode.Reference/1.16.0.29349": {
"type": "reference", "type": "reference",
"serviceable": false, "serviceable": false,
"sha512": "" "sha512": ""