File tree Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Original file line number Diff line number Diff line change @@ -560,7 +560,8 @@ void RSPClient::handle_readreg()
560
560
{
561
561
uint32_t idx = 0 ;
562
562
sscanf (buffer.c_str (), " p%x" , &idx);
563
- if (idx > 58 ) {
563
+ if (idx > 59 ) {
564
+ printf (" Invalid register index: %u\n " , idx);
564
565
send (" E01" );
565
566
return ;
566
567
}
@@ -589,9 +590,15 @@ void RSPClient::handle_readreg()
589
590
vallen = 4 ;
590
591
uint32_t value = 0 ;
591
592
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 ;
595
602
std::memcpy (valdata, &value, vallen);
596
603
} else {
597
604
const auto * fpreg = &fpu.fcw ;
You can’t perform that action at this time.
0 commit comments