@@ -775,7 +775,12 @@ static inline bool semu_is_interrupt(emu_state_t *emu)
775
775
return __atomic_load_n (& emu -> is_interrupted , __ATOMIC_RELAXED );
776
776
}
777
777
778
- static int semu_read_reg (void * args , int regno , size_t * data )
778
+ static size_t semu_get_reg_bytes (UNUSED int regno )
779
+ {
780
+ return 4 ;
781
+ }
782
+
783
+ static int semu_read_reg (void * args , int regno , void * data )
779
784
{
780
785
emu_state_t * emu = (emu_state_t * ) args ;
781
786
@@ -785,9 +790,9 @@ static int semu_read_reg(void *args, int regno, size_t *data)
785
790
assert ((uint32_t ) emu -> curr_cpuid < emu -> vm .n_hart );
786
791
787
792
if (regno == 32 )
788
- * data = emu -> vm .hart [emu -> curr_cpuid ]-> pc ;
793
+ * ( uint32_t * ) data = emu -> vm .hart [emu -> curr_cpuid ]-> pc ;
789
794
else
790
- * data = emu -> vm .hart [emu -> curr_cpuid ]-> x_regs [regno ];
795
+ * ( uint32_t * ) data = emu -> vm .hart [emu -> curr_cpuid ]-> x_regs [regno ];
791
796
792
797
return 0 ;
793
798
}
@@ -845,6 +850,7 @@ static int semu_run_debug(emu_state_t *emu)
845
850
846
851
gdbstub_t gdbstub ;
847
852
struct target_ops gdbstub_ops = {
853
+ .get_reg_bytes = semu_get_reg_bytes ,
848
854
.read_reg = semu_read_reg ,
849
855
.write_reg = NULL ,
850
856
.read_mem = semu_read_mem ,
@@ -864,7 +870,6 @@ static int semu_run_debug(emu_state_t *emu)
864
870
(arch_info_t ){
865
871
.smp = vm -> n_hart ,
866
872
.reg_num = 33 ,
867
- .reg_byte = 4 ,
868
873
.target_desc = TARGET_RV32 ,
869
874
},
870
875
"127.0.0.1:1234" )) {
0 commit comments