// priorities for interrupt pins 1..4
for (i = 1; i <= 4; i++)
- csr_writel(1, PLIC_BASE + 4*i);
+ *((unsigned int *)PLIC_BASE + i) = 1;
// enable interrupt pins 1..4
- csr_writel(0xf << 1, PLIC_ENABLED);
+ *((unsigned int *)PLIC_ENABLED) = 0xf << 1;
// set priority threshold to 0 (any priority > 0 triggers interrupt)
- csr_writel(0, PLIC_THRSHLD);
+ *((unsigned int *)PLIC_THRSHLD) = 0;
}
void isr(void);
{
unsigned int claim;
- while ((claim = csr_readl(PLIC_CLAIM))) {
+ while ((claim = *((unsigned int *)PLIC_CLAIM))) {
switch (claim - 1) {
case UART_INTERRUPT:
uart_isr();
printf("###########################\n\n");
break;
}
- csr_writel(claim, PLIC_CLAIM);
+ *((unsigned int *)PLIC_CLAIM) = claim;
}
}
#else
asm volatile ("csrr %0, %1" : "=r"(mask) : "i"(CSR_IRQ_MASK));
return mask;
#elif defined (__rocket__)
- return csr_readl(PLIC_ENABLED) >> 1;
+ return *((unsigned int *)PLIC_ENABLED) >> 1;
#elif defined (__microwatt__)
return 0; // FIXME
#else
#elif defined (__minerva__)
asm volatile ("csrw %0, %1" :: "i"(CSR_IRQ_MASK), "r"(mask));
#elif defined (__rocket__)
- csr_writel(mask << 1, PLIC_ENABLED);
+ *((unsigned int *)PLIC_ENABLED) = mask << 1;
#elif defined (__microwatt__)
// FIXME
#else
asm volatile ("csrr %0, %1" : "=r"(pending) : "i"(CSR_IRQ_PENDING));
return pending;
#elif defined (__rocket__)
- return csr_readl(PLIC_PENDING) >> 1;
+ return *((unsigned int *)PLIC_PENDING) >> 1;
#elif defined (__microwatt__)
return 0; // FIXME
#else