mirror of
https://github.com/enjoy-digital/litex.git
synced 2025-01-04 09:52:26 -05:00
Common interrupt numbers
This commit is contained in:
parent
94245517f2
commit
c01594f9fd
5 changed files with 19 additions and 30 deletions
8
common/interrupt.h
Normal file
8
common/interrupt.h
Normal file
|
@ -0,0 +1,8 @@
|
|||
#ifndef __INTERRUPT_H
|
||||
#define __INTERRUPT_H
|
||||
|
||||
#define UART_INTERRUPT 0
|
||||
#define TIMER0_INTERRUPT 1
|
||||
#define MINIMAC_INTERRUPT 2
|
||||
|
||||
#endif /* __INTERRUPT_H */
|
|
@ -15,8 +15,8 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <hw/interrupts.h>
|
||||
#include <hw/uart.h>
|
||||
#include <interrupt.h>
|
||||
#include <irq.h>
|
||||
#include <uart.h>
|
||||
|
||||
|
@ -27,6 +27,6 @@ void isr(void)
|
|||
|
||||
irqs = irq_pending() & irq_getmask();
|
||||
|
||||
if(irqs & IRQ_UART)
|
||||
if(irqs & (1 << UART_INTERRUPT))
|
||||
uart_isr();
|
||||
}
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
/*
|
||||
* Milkymist SoC (Software)
|
||||
* Copyright (C) 2007, 2008, 2009, 2010 Sebastien Bourdeauducq
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __HW_INTERRUPTS_H
|
||||
#define __HW_INTERRUPTS_H
|
||||
|
||||
#define IRQ_UART (0x00000001) /* 0 */
|
||||
|
||||
#endif /* __HW_INTERRUPTS_H */
|
|
@ -18,7 +18,7 @@
|
|||
#include <uart.h>
|
||||
#include <irq.h>
|
||||
#include <hw/uart.h>
|
||||
#include <hw/interrupts.h>
|
||||
#include <interrupt.h>
|
||||
|
||||
/*
|
||||
* Buffer sizes must be a power of 2 so that modulos can be computed
|
||||
|
@ -121,7 +121,7 @@ void uart_init(void)
|
|||
CSR_UART_EV_ENABLE = UART_EV_TX | UART_EV_RX;
|
||||
|
||||
mask = irq_getmask();
|
||||
mask |= IRQ_UART;
|
||||
mask |= UART_INTERRUPT;
|
||||
irq_setmask(mask);
|
||||
}
|
||||
|
||||
|
|
10
top.py
10
top.py
|
@ -63,6 +63,10 @@ def csr_offset(name):
|
|||
assert((base >= 0xe0000000) and (base <= 0xe0010000))
|
||||
return (base - 0xe0000000)//0x800
|
||||
|
||||
interrupt_macros = get_macros("common/interrupt.h")
|
||||
def interrupt_n(name):
|
||||
return int(interrupt_macros[name + "_INTERRUPT"], 0)
|
||||
|
||||
version = get_macros("common/version.h")["VERSION"][1:-1]
|
||||
|
||||
def get():
|
||||
|
@ -130,9 +134,9 @@ def get():
|
|||
# Interrupts
|
||||
#
|
||||
interrupts = Fragment([
|
||||
cpu0.interrupt[0].eq(uart0.events.irq),
|
||||
cpu0.interrupt[1].eq(timer0.events.irq),
|
||||
cpu0.interrupt[2].eq(minimac0.events.irq)
|
||||
cpu0.interrupt[interrupt_n("UART")].eq(uart0.events.irq),
|
||||
cpu0.interrupt[interrupt_n("TIMER0")].eq(timer0.events.irq),
|
||||
cpu0.interrupt[interrupt_n("MINIMAC")].eq(minimac0.events.irq)
|
||||
])
|
||||
|
||||
#
|
||||
|
|
Loading…
Reference in a new issue