Skip to content

Commit 00ac159

Browse files
committed
Implement reading FS_BASE and GS_BASE in RSP-server
1 parent 8dffe13 commit 00ac159

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

lib/tinykvm/rsp_client.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,8 @@ void RSPClient::handle_readreg()
560560
{
561561
uint32_t idx = 0;
562562
sscanf(buffer.c_str(), "p%x", &idx);
563-
if (idx > 58) {
563+
if (idx > 59) {
564+
printf("Invalid register index: %u\n", idx);
564565
send("E01");
565566
return;
566567
}
@@ -589,9 +590,15 @@ void RSPClient::handle_readreg()
589590
vallen = 4;
590591
uint32_t value = 0;
591592
std::memcpy(valdata, &value, vallen);
592-
} else if (idx == 58) {
593-
vallen = 8;
594-
uint64_t value = 0;
593+
} else if (idx == 58) { // FS_BASE
594+
vallen = sizeof(uint64_t);
595+
auto fsgs = machine().get_fsgs();
596+
uint64_t value = fsgs.first;
597+
std::memcpy(valdata, &value, vallen);
598+
} else if (idx == 59) { // GS_BASE
599+
vallen = sizeof(uint64_t);
600+
auto fsgs = machine().get_fsgs();
601+
uint64_t value = fsgs.second;
595602
std::memcpy(valdata, &value, vallen);
596603
} else {
597604
const auto* fpreg = &fpu.fcw;

0 commit comments

Comments
 (0)