@@ -77,23 +77,16 @@ static void emu_update_timer_interrupt(hart_t *hart)
77
77
emu_state_t * data = PRIV (hart );
78
78
79
79
/* Sync global timer with local timer */
80
- #if SEMU_HAS (ACLINT )
81
80
hart -> time = data -> mtimer .mtime ;
82
81
aclint_mtimer_update_interrupts (hart , & data -> mtimer );
83
- #else
84
- hart -> time = data -> clint .mtime ;
85
- clint_update_interrupts (hart , & data -> clint );
86
- #endif
87
82
}
88
83
89
- #if SEMU_HAS (ACLINT )
90
84
static void emu_update_swi_interrupt (hart_t * hart )
91
85
{
92
86
emu_state_t * data = PRIV (hart );
93
87
aclint_mswi_update_interrupts (hart , & data -> mswi );
94
88
aclint_sswi_update_interrupts (hart , & data -> sswi );
95
89
}
96
- #endif
97
90
98
91
static void mem_load (hart_t * hart ,
99
92
uint32_t addr ,
@@ -131,7 +124,6 @@ static void mem_load(hart_t *hart,
131
124
emu_update_vblk_interrupts (hart -> vm );
132
125
return ;
133
126
#endif
134
- #if SEMU_HAS (ACLINT )
135
127
case 0x43 : /* mtimer */
136
128
aclint_mtimer_read (hart , & data -> mtimer , addr & 0xFFFFF , width ,
137
129
value );
@@ -145,12 +137,6 @@ static void mem_load(hart_t *hart,
145
137
aclint_sswi_read (hart , & data -> sswi , addr & 0xFFFFF , width , value );
146
138
aclint_sswi_update_interrupts (hart , & data -> sswi );
147
139
return ;
148
- #else
149
- case 0x43 : /* clint */
150
- clint_read (hart , & data -> clint , addr & 0xFFFFF , width , value );
151
- clint_update_interrupts (hart , & data -> clint );
152
- return ;
153
- #endif
154
140
}
155
141
}
156
142
vm_set_exception (hart , RV_EXC_LOAD_FAULT , hart -> exc_val );
@@ -192,7 +178,6 @@ static void mem_store(hart_t *hart,
192
178
emu_update_vblk_interrupts (hart -> vm );
193
179
return ;
194
180
#endif
195
- #if SEMU_HAS (ACLINT )
196
181
case 0x43 : /* mtimer */
197
182
aclint_mtimer_write (hart , & data -> mtimer , addr & 0xFFFFF , width ,
198
183
value );
@@ -206,12 +191,6 @@ static void mem_store(hart_t *hart,
206
191
aclint_sswi_write (hart , & data -> sswi , addr & 0xFFFFF , width , value );
207
192
aclint_sswi_update_interrupts (hart , & data -> sswi );
208
193
return ;
209
- #else
210
- case 0x43 : /* clint */
211
- clint_write (hart , & data -> clint , addr & 0xFFFFF , width , value );
212
- clint_update_interrupts (hart , & data -> clint );
213
- return ;
214
- #endif
215
194
}
216
195
}
217
196
vm_set_exception (hart , RV_EXC_STORE_FAULT , hart -> exc_val );
@@ -231,15 +210,9 @@ static inline sbi_ret_t handle_sbi_ecall_TIMER(hart_t *hart, int32_t fid)
231
210
emu_state_t * data = PRIV (hart );
232
211
switch (fid ) {
233
212
case SBI_TIMER__SET_TIMER :
234
- #if SEMU_HAS (ACLINT )
235
213
data -> mtimer .mtimecmp [hart -> mhartid ] =
236
214
(((uint64_t ) hart -> x_regs [RV_R_A1 ]) << 32 ) |
237
215
(uint64_t ) (hart -> x_regs [RV_R_A0 ]);
238
- #else
239
- data -> clint .mtimecmp [hart -> mhartid ] =
240
- (((uint64_t ) hart -> x_regs [RV_R_A1 ]) << 32 ) |
241
- (uint64_t ) (hart -> x_regs [RV_R_A0 ]);
242
- #endif
243
216
hart -> sip &= ~RV_INT_STI_BIT ;
244
217
return (sbi_ret_t ){SBI_SUCCESS , 0 };
245
218
default :
@@ -313,21 +286,11 @@ static inline sbi_ret_t handle_sbi_ecall_IPI(hart_t *hart, int32_t fid)
313
286
hart_mask = (uint64_t ) hart -> x_regs [RV_R_A0 ];
314
287
hart_mask_base = (uint64_t ) hart -> x_regs [RV_R_A1 ];
315
288
if (hart_mask_base == 0xFFFFFFFFFFFFFFFF ) {
316
- for (uint32_t i = 0 ; i < hart -> vm -> n_hart ; i ++ ) {
317
- #if SEMU_HAS (ACLINT )
289
+ for (uint32_t i = 0 ; i < hart -> vm -> n_hart ; i ++ )
318
290
data -> sswi .ssip [i ] = 1 ;
319
- #else
320
- data -> clint .msip [i ] = 1 ;
321
- #endif
322
- }
323
291
} else {
324
- for (int i = hart_mask_base ; hart_mask ; hart_mask >>= 1 , i ++ ) {
325
- #if SEMU_HAS (ACLINT )
292
+ for (int i = hart_mask_base ; hart_mask ; hart_mask >>= 1 , i ++ )
326
293
data -> sswi .ssip [i ] = hart_mask & 1 ;
327
- #else
328
- data -> clint .msip [i ] = hart_mask & 1 ;
329
- #endif
330
- }
331
294
}
332
295
333
296
return (sbi_ret_t ){SBI_SUCCESS , 0 };
@@ -586,11 +549,7 @@ static int semu_start(int argc, char **argv)
586
549
/* Initialize the emulator */
587
550
emu_state_t emu ;
588
551
memset (& emu , 0 , sizeof (emu ));
589
- #if SEMU_HAS (ACLINT )
590
552
semu_timer_init (& emu .mtimer .mtime , CLOCK_FREQ );
591
- #else
592
- semu_timer_init (& emu .clint .mtime , CLOCK_FREQ );
593
- #endif
594
553
595
554
/* Set up RAM */
596
555
emu .ram = mmap (NULL , RAM_SIZE , PROT_READ | PROT_WRITE ,
@@ -680,9 +639,7 @@ static int semu_start(int argc, char **argv)
680
639
}
681
640
682
641
emu_update_timer_interrupt (vm .hart [i ]);
683
- #if SEMU_HAS (ACLINT )
684
642
emu_update_swi_interrupt (vm .hart [i ]);
685
- #endif
686
643
687
644
vm_step (vm .hart [i ]);
688
645
if (likely (!vm .hart [i ]-> error ))
0 commit comments