@@ -104,13 +104,18 @@ int cpu_load(uint32_t addr) {
104
104
}
105
105
106
106
void cpu_store (uint32_t addr,uint8_t data) {
107
+ if (addr < (MEMSIZE)) {
108
+
107
109
memw[addr]=data;
108
110
switch (addr%4 ) {
109
111
case 0 : mem0[addr32 (addr)]= data; break ;
110
112
case 1 : mem1[addr32 (addr)]= data; break ;
111
113
case 2 : mem2[addr32 (addr)]= data; break ;
112
114
case 3 : mem3[addr32 (addr)]= data; break ;
113
115
}
116
+ } else {
117
+ PRINTF (" Out of bound [%08X]\n " ,addr);
118
+ }
114
119
// PRINTF("[%08X]=%02X ; {%02X,%02X,%02X,%02X}\n",addr,data,
115
120
// mem0[addr32(addr)],
116
121
// mem1[addr32(addr)],
@@ -184,21 +189,6 @@ int remove_hw_bkpt(uint32_t addr) {
184
189
return 0 ;
185
190
}
186
191
187
- // int read_csr(uint16_t addr) {
188
- // switch (addr) {
189
- // case RISCV_CSR_MTVEC:
190
- // return mtvec;
191
- // break;
192
- // default:
193
- // break;
194
- // }
195
- // }
196
- //
197
- // csr[RISCV_CSR_MEPC] = pc;
198
- // next_pc = csr[RISCV_CSR_MTVEC];
199
- // int write_csr(uint16_t addr,uint32_t data) {
200
- // }
201
-
202
192
uint32_t cpu_step (bool irq) {
203
193
204
194
char shcpt = -1 ;
@@ -698,20 +688,6 @@ int cpu_info(uint8_t id) {
698
688
return 0xDEADBEEF ;
699
689
}
700
690
701
- // int cpu_run() {
702
- // uint32_t pc;
703
- // u_int32_t cpt = 0;
704
- // bool irq = false;
705
- // do {
706
- // pc = cpu_step(irq);
707
- // if (match_hbkpt(pc)) {
708
- // return pc;
709
- // }
710
- // if (halted) {
711
- // return pc;
712
- // }
713
- // } while (1);
714
- // }
715
691
716
692
#pragma toplevel
717
693
int riscv (volatile unsigned int *leds, volatile unsigned int *dbg_pc,
@@ -739,41 +715,4 @@ int riscv(volatile unsigned int *leds, volatile unsigned int *dbg_pc,
739
715
740
716
}
741
717
742
- #ifndef __SYNTHESIS__
743
- int loadbinary (char *filename) {
744
- int i;
745
- FILE *f;
746
- char buffer[16 ];
747
- f = fopen (filename, " r" );
748
- i = 0 ;
749
- if (f != NULL ) {
750
- while (!feof (f) && i < (MEMSIZE)) {
751
- fread (buffer, 4 , 1 , f);
752
- mem0[i / 4 ] = buffer[0 ];
753
- mem1[i / 4 ] = buffer[1 ];
754
- mem2[i / 4 ] = buffer[2 ];
755
- mem3[i / 4 ] = buffer[3 ];
756
- i += 4 ;
757
- }
758
- fclose (f);
759
- return i;
760
- } else {
761
- fprintf (stderr, " Could not open %s\n " , filename);
762
- return -1 ;
763
- }
764
- }
765
- #endif
766
718
767
- #ifdef MAIN
768
- int main (int argc, char **argv) {
769
- unsigned int leds;
770
- unsigned int pc;
771
- unsigned int ir;
772
-
773
- #ifndef __SYNTHESIS__
774
- loadbinary (argv[1 ]);
775
- #endif
776
- riscv (&leds, &pc,&ir,iomap);
777
- return 0 ;
778
- }
779
- #endif
0 commit comments