diff options
| -rw-r--r-- | bsp/env/coreip-e2-arty/init.c | 13 | ||||
| -rw-r--r-- | software/clic_vectored/clic_vectored.c | 4 | 
2 files changed, 10 insertions, 7 deletions
| diff --git a/bsp/env/coreip-e2-arty/init.c b/bsp/env/coreip-e2-arty/init.c index aaf213c..3a4c77c 100644 --- a/bsp/env/coreip-e2-arty/init.c +++ b/bsp/env/coreip-e2-arty/init.c @@ -46,7 +46,8 @@ static void uart_init(size_t baud_rate)  typedef void (*interrupt_function_ptr_t) (void);  interrupt_function_ptr_t localISR[CLIC_NUM_INTERRUPTS] __attribute__((aligned(64))); -void trap_entry(void) __attribute__((interrupt("SiFive-CLIC-preemptible"), aligned(64))); + +void trap_entry(void) __attribute__((interrupt, aligned(64)));  void trap_entry(void)  {    unsigned long mcause = read_csr(mcause); @@ -54,13 +55,13 @@ void trap_entry(void)    if (mcause & MCAUSE_INT)  {      localISR[mcause & MCAUSE_CAUSE] ();    } else { -    while(1); +    while(1);     }  }  #ifdef CLIC_DIRECT  #else -void default_handler(void)__attribute__((interrupt("SiFive-CLIC-preemptible")));; +void default_handler(void)__attribute__((interrupt));;  #endif  void default_handler(void)  { @@ -76,9 +77,11 @@ void _init()    puts("core freq at " STR(CPU_FREQ) " Hz\n");  //initialize vector table -  for(int i=0;i++;i<CLIC_NUM_INTERRUPTS)  { -    localISR[i] = &default_handler; +  int i=0; +  while(i<CLIC_NUM_INTERRUPTS)	{ +    localISR[i++] = default_handler;    } +      write_csr(mtvt, localISR);  #ifdef CLIC_DIRECT diff --git a/software/clic_vectored/clic_vectored.c b/software/clic_vectored/clic_vectored.c index 9ae99e3..db2435d 100644 --- a/software/clic_vectored/clic_vectored.c +++ b/software/clic_vectored/clic_vectored.c @@ -44,14 +44,14 @@ void print_instructions() {  } -void button_0_isr(void)__attribute__((interrupt("SiFive-CLIC-preemptible"))); +void button_0_isr(void) __attribute__((interrupt));  void button_0_isr(void) {    // Toggle Red LED +  	      const char button_0_msg[] = "Button 0 was pressed. Toggle Red.\n";    write (STDOUT_FILENO, button_0_msg, strlen(button_0_msg));      GPIO_REG(GPIO_OUTPUT_VAL) = GPIO_REG(GPIO_OUTPUT_VAL) ^ (0x1 << RED_LED_OFFSET);    clic_clear_pending(&clic, (LOCALINTIDBASE + LOCAL_INT_BTN_0)); -  clic_enable_interrupt(&clic, (LOCALINTIDBASE + LOCAL_INT_BTN_0));  }  void button_0_setup(void) { | 
