OpenCores
URL https://opencores.org/ocsvn/neorv32/neorv32/trunk

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [sw/] [lib/] [source/] [neorv32_xirq.c] - Diff between revs 66 and 69

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 66 Rev 69
Line 235... Line 235...
 
 
  register uint32_t src = NEORV32_XIRQ.SCR; // get IRQ source (with highest priority)
  register uint32_t src = NEORV32_XIRQ.SCR; // get IRQ source (with highest priority)
 
 
  uint32_t mask = 1 << src;
  uint32_t mask = 1 << src;
  NEORV32_XIRQ.IPR = ~mask; // clear current pending interrupt
  NEORV32_XIRQ.IPR = ~mask; // clear current pending interrupt
  NEORV32_XIRQ.SCR = 0; // acknowledge current interrupt (CPU FIRQ)
 
 
  neorv32_cpu_csr_write(CSR_MIP, 1 << XIRQ_FIRQ_PENDING); // acknowledge XIRQ FIRQ
 
 
 
  NEORV32_XIRQ.SCR = 0; // acknowledge current XIRQ interrupt source
 
 
  // execute handler
  // execute handler
  register uint32_t xirq_handler = __neorv32_xirq_vector_lut[src];
  register uint32_t xirq_handler = __neorv32_xirq_vector_lut[src];
  void (*handler_pnt)(void);
  void (*handler_pnt)(void);
  handler_pnt = (void*)xirq_handler;
  handler_pnt = (void*)xirq_handler;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.